Автор: Geroi 5.05.2003 21:35
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.
В этой задаче когда вводишь данные : отличник, троешник, отличник, Он выводит первого отличника, а третьего не выводит. !!!!! и ещё есть некторые случаи.!
Тут где-то явно маленький касяк. Посмотрите пожалуйста, подскажите.
Автор: Geroi 5.05.2003 21:44
Вот вторая:
Код
{Задача 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, а если введешь два числа или более, она не пашет, как сделать??!?!?!?!? Помогите пацаны, завтра сдавать.!
Автор: ___ALex___ 5.05.2003 23:38
А тебе её по-моему уже Ivs писал!?
Там всё правильно было!И нет никакого условия типа что надо использовать только один файл. Так что оно "покатит"!(решение)
а на счёт первой проги ты там сильно мудришь всё проще
Автор: Geroi 6.05.2003 9:42
да с первой вродене ничё токого, сначало вводишь данные, потом проверяешь. Только там касяк есть...... блинзапустили бы посмотрели хоть, первую
Автор: Geroi 6.05.2003 10:33
да Я уже через час понесу сдавать
чему быть, тому не миновать.
А задача Ivs вроде правильная...
Автор: Geroi 6.05.2003 10:50
По первой задаче вопрос исчерпан, нашёл касяк
Ща буду с Ивса задачей разбираться, но касяк когда Я её токо запускаю, он мне выдаёт ошибку, как бы в отдельном окне и там пишет :
"Error, потом на след. строчке, Runtime error 002 at 0001:0045."
Чё делать?
Автор: ___ALex___ 6.05.2003 15:40
файл "a.txt" сначала создай и напиши туда что-нибудь
Автор: Ivs 6.05.2003 21:15
Цитата
файл "a.txt" сначала создай и напиши туда что-нибудь
Это точно... или ты что, хочеш чтобы прога сама создавала файл, писАла туда чего-нибудь, и выдавала правильные результаты, это конечно было бы неплохо, но увы и ах......
Автор: Geroi 6.05.2003 23:19
Ивс всё ок, просто сначала не разобрался и начал пороть гарячку. Всё оки, рабоает, уже посдавал.
Всем спасибо.!