Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2014, 09:20   #1
Тишуня
Пользователь
 
Аватар для Тишуня
 
Регистрация: 16.02.2014
Сообщений: 12
Сообщение правильно ли решена задача: Найти сумму всех элементов массива целых чисел, удовлетворяющих условию: остаток от деления ....

Найти сумму всех элементов массива целых чисел, удовлетворяющих условию: остаток от деления на 2 равен 3. Размерность массива – 20. Заполнение массива осуществить случайными числами от 200 до 300.

Код:
program delenie;
 var i, k: integer;
      b: real;
     a: array [1..20] of integer;
begin
  randomize;
 for i:=1 to 20 do
 a[i]:=random(200)+100; 
 k:=0;
 for i:=1 to 20 do;
 b:=a[i]/2;
 if b=3 then
 k:=k+1;
 writeln ('ihodnii massiv',a[i]);
 writeln ('delenie', b);
 writeln (' otvet', k);
 end.

Последний раз редактировалось Stilet; 13.03.2014 в 09:33.
Тишуня вне форума Ответить с цитированием
Старый 13.03.2014, 09:31   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
остаток от деления на 2 равен 3
Можно сразу смело написать writeln (' otvet',0). Не слышал еше о целых числах, остаток от деления которых на 2 равен 3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.03.2014, 09:38   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Тишуня, нет не правильно.

Даже с учётом того, что условие явно некорректно!
Возможно, что Вы перепутали, нужно:
Цитата:
.... остаток от деления на 3 равен 2. ...
в любом случае, остаток от деления одного целого числа на другое определяется с помощью оператора mod
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2014, 09:38   #4
Тишуня
Пользователь
 
Аватар для Тишуня
 
Регистрация: 16.02.2014
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно сразу смело написать writeln (' otvet',0). Не слышал еше о целых числах, остаток от деления которых на 2 равен 3
но как доказать это преподавателю? он будет требовать код программы...
Тишуня вне форума Ответить с цитированием
Старый 13.03.2014, 09:41   #5
Тишуня
Пользователь
 
Аватар для Тишуня
 
Регистрация: 16.02.2014
Сообщений: 12
По умолчанию

[QUOTE=Serge_Bliznykov;1351464]Тишуня, нет не правильно.

Даже с учётом того, что условие явно некорректно!
условие написано верно (так как поставил такое условие преподаватель)
Тишуня вне форума Ответить с цитированием
Старый 13.03.2014, 09:43   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
writeln (' otvet',0)
Чем не код программы? Пусть опровергнет, написав правильно программу, которая выдаст верный результат. А у тебя в проге бред - остаток от деления так считается b:=a[i] mod 2, где b integer. И найти по условию нужно сумму элементов массива, а не их количество. А цикл for i:=1 to 20 do; вообще красавец. Впорочем не важно - все равно 0

PS и случайные числя у тебя будут от 100 до 299
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.03.2014 в 09:49.
Аватар вне форума Ответить с цитированием
Старый 13.03.2014, 09:51   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
условие написано верно (так как поставил такое условие преподаватель)
ОК.

Не вопрос.
Вот решение вашей задачи:
Код:
program delenie;
 var i, sum, k: integer;
     a: array [1..20] of integer;
begin
 randomize;
 for i:=1 to 20 do begin
   a[i]:= 200 + random(101); 
   Write(a[i]:3,' ');
 end;
 WriteLn;

 k:=0;     {количество подходящих под условие чисел}
 sum := 0; {сумма подходящих под условие чисел}

 for i:=1 to 20 do
  if (a[i] mod 2) = 3 then begin
    k := k + 1;  {увеличили счётчик на 1}
    sum := sum + a[i]; {добавили значение к сумме}
  end;

 writeln ('summa = ', sum);
 writeln ('kolichestvo = ', k);
 Readln
end.
ну почему в результате сумма и количество ВСЕГДА будут равны нулю, Вы, наверное, уже знаете...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2014, 10:02   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Offtop
Если отвлечься от того, что задание учебное, то что является задачей программиста? Правильно - написать прогу согласно ТЗ и, желательно, оптимально. Серж, вот исходя из последнего настаиваю на том, что мой вариант решения правильный, и самый оптимальный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.03.2014, 10:23   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Offtop
Если отвлечься от того, что задание учебное, то что является задачей программиста? Правильно - написать прогу согласно ТЗ и, желательно, оптимально. Серж, вот исходя из последнего настаиваю на том, что мой вариант решения правильный, и самый оптимальный
Позволю себе не согласиться.
Вы сейчас преобразовали исходное ТЗ, исходя из своих знаний и опыта (в данной случае из знания арифметики).
В постановке задачи чётко сказано, найти сумму чисел, где при делении на 2 в остатке остаётся три.
Вот так и записываем!
А не выбрасываем весь цикл, все проверки, ПОТОМУ ЧТО МЫ ЗНАЕМ ОТВЕТ!

Поясню.
Стоит задача найти и вывести сумму всех целых (натуральных) чисел от 1 до 5.
Вы как программу напишете ?
s := 0; for i:=1 to 5 do s := s +i; WriteLn(s);
или WriteLn(15);

Вот в этом и разница в нашем подходе! Я сделал ровным счётом то, что попросил преподаватель. не больше и не меньше.
Этот же преподаватель через секунду попросит изменить задачу поменяв условие на обратное (остаток от деления на 3 равен 2). В моём коде надо будет переставить два числа местами.
или можно написать универальный код, при делении на число D остаток равен O (где D и O задаются оператором)

впрочем, всё это оффтоп...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2014, 10:27   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Серж, ключевая фраза Если отвлечься от того, что задание учебное
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заданный одномерный массив. Найти сумму элементов массива, которые удовлетворяют условию ( Delphi ) Святослав2703 Помощь студентам 5 03.07.2013 16:21
Дана последовательность из n целых чисел. Найти сумму нечетных элементов этой последовательности.С++ punkvalera Помощь студентам 1 13.05.2012 20:35
Обработка элементов массива, удовлетворяющих некоторому условию sokol987 Паскаль, Turbo Pascal, PascalABC.NET 2 25.12.2011 15:24
Частное и остаток от деления двух целых чисел. Andrey35 Паскаль, Turbo Pascal, PascalABC.NET 14 14.11.2011 18:00
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52