Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

Найти сумму всех элементов массива целых чисел, удовлетворяющих условию: остаток от деления на 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
Адрес: Северодонецк.ua
Сообщений: 18,098
Репутация: 6385
По умолчанию

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

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

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

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

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

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

Цитата:
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
Сообщений: 24,614
Репутация: 5352
По умолчанию

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

Не вопрос.
Вот решение вашей задачи:
Код:

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
Адрес: Северодонецк.ua
Сообщений: 18,098
Репутация: 6385
По умолчанию

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

Цитата:
Сообщение от Аватар Посмотреть сообщение
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
Адрес: Северодонецк.ua
Сообщений: 18,098
Репутация: 6385
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


22:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru