Автор: Студент 27.05.2004 17:23
1. Написать модуль, содержащий две процедуры:
1) напечатайте заданную последовательность символов, заменяя символ, задаваемый вводом, на символ предшествующий ему;
2) пусть дан массив из N элементов. Увеличьте его, вставив после минимального элемента максимальный.
2. Пусть дан файл, содержащий анкетные данные студентов (имя, фамилия, возраст, факультет, курс, средний бал успеваемости). Выведите на экран имена и фамилии студентов, средний бал которых выше 3,5.(Не хочет выводить фамилию и имя!!!)
Заранее благодарю!!!
Автор: BlackShadow 27.05.2004 17:55
1)А если строка начинается с #13? Я оставил так - не меняя.
Код
Unit U;
Interface
Type
TIntArray=Array[1..100] Of Integer;
Function ModStr(s:String):String;
Procedure GrowArray(Var a:TIntArray;Count:Integer);
Implementation
Function ModStr(s:String):String;
Var
Result:String;
i:Integer;
Begin
Result:=s;
For i:=2 To Length(Result) Do
If Result[i]=#13 Then
s[i]:=s[i-1];
ModStr:=Result
End;
Procedure GrowArray(Var a:TIntArray;Count:Integer);
Var
i,j,min,max:Integer;
Begin
min:=a[1];
max:=a[1];
j:=1;
For i:=1 To Count Do
If min>a[i] Then
Begin
j:=i;
min:=a[i]
End
Else
If max<a[i] Then
max:=a[i];
For i:=Count DownTo j+1 Do
a[i+1]:=a[i];
a[j+1]:=max
End;
End.
Использование:
Код
Uses U;
Const
s='test'#13'of'#13'unit'; {Преобразуется в 'testtoffunit'}
Var
a:TIntArray;
i:Integer;
Begin
For i:=1 To 10 Do
a[i]:=i;
WriteLn(ModStr(s));
GrowArray(a,10);
For i:=1 To 11 Do
WriteLn(a[i]); {1 10 2 3 4 5 6 7 8 9 10}
End.
2).
Код
Var
f:Text;
Name,SurName,Age,Facultet,Kurs:String;
Avg:Real;
Begin
Assing(f,'In.Txt');
Reser(f);
While Not Eof(f) Do
Begin
ReadLn(f,Name);
ReadLn(f,SurName);
ReadLn(f,Age);
ReadLn(f,Facultet);
ReadLn(f,Kurs);
ReadLn(f,Avg);
If Avg>3.5 Then
WriteLn(SurName,' ',Name)
End;
Close(f)
End.
Пример входного файла:
Код
Иван
Иванов
20
ИБ
3
4.2
Пётр
Петров
21
ПМ
4
2.1
Должно работать. Если что - пиши.