Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массив из восьми строк

Автор: kvadrat 21.05.2008 3:12

Дан массив из восьми строк. В строке "фамилия студента_оценка1_оценка2". Приписать к каждой строке средний балл. отсортировать по убыванию балла и распечатать.

Вот мой код, тут вводяться элементы матрицы, и выводятся без всяких изменений. Нужно чтобы он складывал число после первой "_" с числом после второй "_" и сумму делил на 2 и после отсортировал по убыванию. Какие нужно использовать команды и как это всё осуществить подскажите плиз?

Код
program sdfer;
var q:array[1..30,1..8] of string;j,i:integer;
begin
writeln('vvod strok:');
for j:=1 to 8 do
begin
readln(q[i,j])
end;
writeln('matrix:');
for j := 1 to 8 do writeln(q[i, j]);
writeln;
end.


Автор: klem4 21.05.2008 16:32

function StrToInt(const s: string): integer;
var
value, err: integer;
begin
Val(s, value, err);
StrToInt := value;
end;

function GetSum(const s: string): single;
var
first_, second_: byte;
begin
first_ := pos('_', s);
second_ := first_ + pos('_', copy(s, first_ + 1, 255));

GetSum := (
StrToInt(copy(s, first_ + 1, second_ - first_ - 1)) +
StrToInt(copy(s, second_ + 1, 255))
) / 2;
end;

// ...
writeln(GetSum('vasa_4_5'):3:3);

Автор: kvadrat 21.05.2008 22:49

Поглядите, средний бал выводит, а как отсортировать незнаю, помогите решить плиз? Только плиз без функций и процедур.

program lab6zad3;
uses crt;
const n=2;
var s:array[1..n]of string;
s1:array[1..20]of string;
i,t,q,c:integer;
sr:real;
st:string;
begin
clrscr;
for i:=1 to n do
begin
write('stydent nomer',i,':');{primer vvoda Popov_5_3}
readln(s[i]);
end;
for i:=1 to n do
begin
val(copy(s[i],pos('_',s[i])+1,1),t,c);
val(s[i][length(s[i])],q,c);
sr:=(t+q)/2;
str(sr:4:1,st);
s1[i]:=s1[i]+s[i]+' srednee='+st;
writeln(s1[i]);
end;
readln
end.