|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2012, 10:54 | #1 |
Пользователь
Регистрация: 13.12.2012
Сообщений: 17
|
(Delphi) циклы. задание и мой код внутри. Проверте
Вводя в цикле по четыре оценки, полученные каждым студентом в сессию, подсчитать число студентов, не имеющих оценок 2 и 3. В группе учится N студентов
var k,s,a1,a2,a3,a4,j,n,a:integer; begin s:=0; {s - количество хорошистов} k:=1; memo1.clear; begin a1:=Strtoint(edit1.Text); a2:=Strtoint(edit2.Text); a3:=Strtoint(edit3.Text); a4:=Strtoint(edit4.Text); n:=Strtoint(edit5.Text); if (a1<2) or (a1>5) or (a2<2) or (a2>5) or (a3<2) or (a3>5) or (a4<2) or (a4>5) then memo1.Lines.Add('несоответствующая оценка') end; repeat begin if (a1>3) and (a2>3) and (a3>3) and (a4>3) then k:=k+1; s:=s+1; end until s=s+1; a:=k mod 100; If (a=11) or (a=12) or (a=13) or (a=14) then memo1.Lines.Add('Количество хорошистов'); memo1.Lines.add(floattostr(k)); begin a:=k mod 10; if a=1 then writeln('Не имеют оценок "2" и "3": ',k,' студент') else if (a=2) or (a=3) or (a=4) then writeln('Не имеют оценок "2" и "3": ',k,' студента') else writeln('Не имеют оценок "2" и "3": ',k,' студентов'); end; end; end. |
17.12.2012, 11:37 | #2 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
1. Очень много лишних begin-end
2. Внутри цикла repeat не нужны begin-end 3. Сам цикл вызывает серьезные сомнения, что он когда-нибудь завершится при условии повторять ... до s=s+1; 4. WriteLn используется для консольного вывода, у Вас в коде путаница - вывод происходит то в мемо, то в консоль. 5. В конце кода - проверка окончания (студент, студента, студентов) - алгоритм правильный, но не учтено k=11..19, где остаток от деления не соответствует окончанию (студентОВ). В принципе, такие задачи на форуме уже решались: Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 17.12.2012 в 11:56. |
17.12.2012, 13:51 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
WiZzarD94, кросспостить не надо! Посмотрите, Вам ответили в вашей теме, которую я закрыл..
|
17.12.2012, 13:59 | #4 |
Пользователь
Регистрация: 13.12.2012
Сообщений: 17
|
6. Ну и, наконец, самое главное: у Вас в коде смесь консольного и обычного приложения Delphi, поэтому работать оно, вероятнее всего, не будет.[/QUOTE]
var N,R,I,A,B,C,D:integer; begin if N>0 then begin R:=0; for I:= 1 to N do begin A:=Strtoint(edit1.Text); B:=Strtoint(edit2.Text); C:=Strtoint(edit3.Text); D:=Strtoint(edit4.Text); if (A > 3) and (B > 3) and (C > 3) and (D > 3) then R := R + 1; end; memo1.Lines.Add('==========='); memo1.Lines.Add('Всего чисел:'); memo1.Lines.add(floattostr(R)); end; end; end. А так? Последний раз редактировалось WiZzarD94; 17.12.2012 в 14:09. |
17.12.2012, 14:02 | #5 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Чего "А так?" N Вы откуда берете?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
CryptoAPI, Delphi: Что нужно изменить в проге, чтоб стал мой вариант (задание по программированию)? | Fissa | Помощь студентам | 6 | 07.12.2012 20:43 |
Обработка одномерных массивов, СИ. задание внутри, и написанный мною текст программы тоже внутри. кое-что нужно исправить.. | Амелия | Общие вопросы C/C++ | 6 | 02.04.2012 20:03 |
Проверте код (СИ структуры) | Hacker))) | Общие вопросы C/C++ | 0 | 08.03.2012 22:03 |
Проверте программный код. | St.Jimmy | Помощь студентам | 1 | 19.01.2011 20:57 |
Нахождение слов-анаграмм, Ошибка выдается. Задание внутри. Код внутри. | TYMON | Общие вопросы .NET | 2 | 22.11.2010 21:07 |