Дан массив из восьми строк. В строке "фамилия студента_оценка1_оценка2". Приписать к каждой строке средний балл. отсортировать по убыванию балла и распечатать.
Помогите разобраться и решить эту задачу плиз?
Массив из восьми строк
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Пройти все элементы строки, все, что до первого "_" - фамилия, довторого "_" - первая оценка, до конца - вторая.
Строка в число преобразуется процедурой Val.
Сложив значения оценок и разделив на 2 получим средний бал.
Сортировка есть в разделе "Алгоритмы".
Строка в число преобразуется процедурой Val.
Сложив значения оценок и разделив на 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.
Поглядите, средний бал выводит, а как отсортировать незнаю, помогите решить плиз? Только плиз без функций и процедур.
Код: Выделить всё
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.
Вот пример процедуры сортировки(выдрано из программы, нужно адаптировать)
[syntax='Delphi']
procedure Sort;
begin
for i:=N downto 1 do
for j:=2 to i do
begin
k:=CPUS[j-1];
if k>CPUS[j]then
begin
CPUS[j-1]:=CPUS[j];
CPUS[j]:=k;
end;
end;
end;
[/syntax]
[syntax='Delphi']
procedure Sort;
begin
for i:=N downto 1 do
for j:=2 to i do
begin
k:=CPUS[j-1];
if k>CPUS[j]then
begin
CPUS[j-1]:=CPUS[j];
CPUS[j]:=k;
end;
end;
end;
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
В разделе "Алгоритмы" есть алгоритм разбиения строки на слова. Там в качестве разделителя надо поставить '_'.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.