![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Geroi |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 29 Репутация: ![]() ![]() ![]() |
1) "Файл f содержит записи следующей структуры:
- имя студента; - пол; - рост; - оценки по трем экзаменам. Написать функцию TASK_3_1 (f), проверяющую, есть ли среди юношей отличники." Вот решение этой задачи: Код uses wincrt; type student=record name:string[11]; male:char; {ж - жен, м - муж} height:byte; marks:array[1..3] of 2..5; end; myfile=file of student; var f:myfile; vova:student; var i,j:byte; procedure input(var f:myfile); begin assign(f,'C:stud.txt'); rewrite(f); for i:=1 to 3 do begin with vova do begin write('Введите фамилию студента: '); readln(name); write('Введите пол студента (м или ж): '); readln(male); write('Введите рост студента: '); readln(height); for j:=1 to 3 do begin write('Введите оценку по ',j,'ому предмету: '); readln(marks[j]) end end; write(f,vova) end; close(f) end; procedure task_3_4(var f:myfile); var ocenka,k:byte; begin reset(f); ocenka:=0; for i:=1 to 2 do begin with vova do begin k:=0; read(f,vova); for j:=1 to 3 do begin if (marks[j]=4) or (marks[j]=5) then begin inc(k) end; end; if k=3 then writeln('---> ',name,' имеет положительные оценки ') else inc(ocenka) end end; if ocenka=2 then writeln('---> Студентов с положительными оценкам нет'); close(f) end; begin input(f); task_3_4(f) end. В этой задаче когда вводишь данные : отличник, троешник, отличник, Он выводит первого отличника, а третьего не выводит. !!!!! и ещё есть некторые случаи.! Тут где-то явно маленький касяк. Посмотрите пожалуйста, подскажите. Сообщение отредактировано: volvo - 17.12.2004 12:45 |
![]() ![]() |
Geroi |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 29 Репутация: ![]() ![]() ![]() |
Вот вторая:
Код {Задача 3. Задан текстовый файл 'a.txt'. Написать программу, которая утраивает значения слов, являющиеся четными числами.} uses wincrt; type myfile=text; var f,f1:myfile; i,k:byte; w,c:integer; ch:string; erccode:integer; begin assign(f,'C:kontrolX1.txt'); reset(f); {открываем для решения} Assign(f1,'C:kontrolX2.txt'); Rewrite(f1); while not seekeof(f) do {не конец файла} {seek} while not seekeoln(f) do {не конец строки} {----} begin read(f,ch); {readln} k:=0; for i:=1 to length{длина строки}(ch) do if (ch[i] in ['0'..'9']) then inc(k); if k=length(ch) then begin val(ch,c,erccode); if c mod 2=0 then c:=3*c; str(c,ch); writeLn(f1,ch) end else writeLn(f1,ch) end; close(f); close(f1); erase(f); rename(f1,'c:kontrolX.txt') end. Она работает только тогда, когда вводишь одно число в строке, и потом enter, а если введешь два числа или более, она не пашет, как сделать??!?!?!?!? Помогите пацаны, завтра сдавать.! Сообщение отредактировано: volvo - 17.12.2004 12:46 |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 20:09 |