IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Ребят! Помогите пожалуйста!
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Написан код


const
    MAXSIZE = 100;
var
    a: Array[0..MAXSIZE - 1, 0..MAXSIZE - 1] Of ShortInt;
    i, j: 0..MAXSIZE - 1;
    sum, n, m: Integer;
begin
    Randomize;
    repeat
        Write('Введите количество строк (1..', MAXSIZE, '): ');
        ReadLn(n);
    until ((n > 0) And (n <= MAXSIZE));
    repeat
        Write('Введите количество столбцов (1..', MAXSIZE, '): ');
        ReadLn(m);
    until ((m > 0) And (m <= MAXSIZE));
    WriteLn('Оригинальная матрица:');
    sum := 0;
    for i := 0 to n - 1 do
    begin
        for j := 0 to m - 1 do
        begin
            a[i, j] := Random(199) - 99;
            Write(a[i, j]:4);
            if (i in [0, n - 1])
            then
                Inc(sum, a[i, j]);
        end;
        WriteLn;
    end;
    WriteLn('Сложение первой и последней строки:', sum);
end.

Выдает ошибку *Арифметическое переполнение 215*
Что делать? Как быть? Сам паскаль указываеть что ошибка в рандоме
( a[i, j] := Random(199) - 99;
            Write(a[i, j]:4);)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


Это особенности приведения типов. Random(199) это беззнаковый Word, после вычитания 99 становится отрицательным - и это приводит к ошибке.
Поменяйте местами операторы
a[i, j] := -99 + Random(199);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Цитата(Федосеев Павел @ 10.01.2017 12:19) *

Это особенности приведения типов. Random(199) это беззнаковый Word, после вычитания 99 становится отрицательным - и это приводит к ошибке.
Поменяйте местами операторы
a[i, j] := -99 + Random(199);


Огромное спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 6.04.2025 5:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name