Страница 1 из 1
Паскаль.Задачи про записи и цыклы
Добавлено: 17 мар 2009, 14:02
blizz90
Здраствуйте уважаемые программисты помогите, пожалуйста, решить:
1.задача по теме ЗАПИСИ
Распечатать фамилии тех учеников класса, которые являются хорошистами и отличниками по итогам года. Также указать, насколько их средний балл отличается от среднего балла класса.
2.МАССИВЫ
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
[...Вынесено в отдельную тему...]
Заранее спасибо
Re: Паскаль.Задачи про записи и цыклы
Добавлено: 17 мар 2009, 19:40
dr.Jekill
2. Вот почти то, что тебе нужно, но только со столбцами. Я думаю, переделать не составит труда
Код: Выделить всё
uses crt;
var GJ:array[1..50,1..50] of integer;
m,n,max,buf,nom,kol:integer;
begin
clrscr;
writeln('Vvedite n-> ');
readln(kol);
for n:=1 to kol do
begin
clrscr;
writeln('Stolbec # ',n);
m:=0;
repeat
m:=m+1;
write('Stroka ',m,' -> ');
readln(GJ[m,n]);
until m=kol;
end;
clrscr;
write('Ishodnaia matrica:');
for m:=1 to kol do
begin
writeln;
n:=0;
repeat
n:=n+1;
write(GJ[m,n]:5);
until n=kol;
end;
readln;
for n:=1 to kol do
begin
m:=0;
max:=GJ[1,n];
repeat
m:=m+1;
if GJ[m,n]>=max then
begin
nom:=m;
max:=GJ[m,n];
end;
until m=kol;
buf:=GJ[n,n];
GJ[n,n]:=max;
GJ[nom,n]:=buf;
end;
writeln;
write('Izmenennaia matrica:');
for m:=1 to kol do
begin
writeln;
n:=0;
repeat
n:=n+1;
write(GJ[m,n]:5);
until n=kol;
end;
readln;
end.
Re: Паскаль.Задачи про записи и цыклы
Добавлено: 17 мар 2009, 21:09
dr.Jekill
Записи:
Код: Выделить всё
uses crt;
type
ych=record
fio:string;
a:array[1..10] of 2..5;
pred:array[1..10] of string;
sr:real;
end;
mas=array [1..10] of ych;
var
s:mas;
i,i_pred,kol,kol_pred:integer;
bal_cl:real;
c:byte;
flag:boolean;
vyb:char;
begin
clrscr;
write('Введите количество студентов: ');
readln(kol);
write('Введите количество предметов: ');
readln(kol_pred);
flag:=false;
for i:=1 to kol do
begin
clrscr;
write(' # ',i,'. Введите ФИО ученика: ');
readln(s[i].fio);
if flag=false then
begin
for i_pred:=1 to kol_pred do
begin
write('Введите название дисциплины ',i_pred,': ');
readln(s[i].pred[i_pred]);
write('Bведите оценку по этому предмету: ');
readln(s[i].a[i_pred]);
end;
writeln('Запомнить список дисциплин? [y/n] ');
readln(vyb);
if (vyb='y') or (vyb='Y') then flag:=true;
end
else
begin
writeln('Вводите оценки по дисциплинам: ');
for i_pred:=1 to kol_pred do
begin
s[i].pred[i_pred]:=s[i-1].pred[i_pred];
write(s[i].pred[i_pred],': ');
readln(s[i].a[i_pred]);
end;
end;
end;
bal_cl:=0;
for i:=1 to kol do
begin
s[i].sr:=0;
for i_pred:=1 to kol_pred do s[i].sr:=s[i].sr+s[i].a[i_pred];
s[i].sr:=s[i].sr/kol_pred;
bal_cl:=bal_cl+s[i].sr;
end;
bal_cl:=bal_cl/kol;
clrscr;
writeln ('СПИСОК СТУДЕНТОВ: ');
for i:=1 to kol do
begin
clrscr;
writeln;
writeln(' # ',i,'. ',s[i].fio);
writeln;
writeln('**********ОЦЕНКИ************');
for i_pred:=1 to kol_pred do
writeln(s[i].pred[i_pred],' : ',s[i].a[i_pred]);
writeln('****************************');
writeln('Средний бал: ',s[i].sr:4:2);
readln;
end;
clrscr;
writeln('Средний балл по классу: ',bal_cl:5:2);
writeln('1 - Вывести список отличников.');
writeln('2 - Вывести список хорошистов.');
writeln('3 - ВЫХОД.');
writeln(' -> ');
readln(c);
if (c<>1) and (c<>2) and (c<>3) then
begin
writeln('Nekorektnyi vybor!');
readln;
halt;
end;
case c of
1:begin
writeln('ОТЛИЧНИКИ: ');
for i:=1 to kol+1 do if s[i].sr=5 then writeln(s[i].fio);
end;
2:begin
writeln('ХОРОШИСТЫ: ');
for i:=1 to kol+1 do if (s[i].sr>=4) and (s[i].sr<5) then writeln(s[i].fio);
end;
3:halt;
end;
readln;
end.
Re: Паскаль.Задачи про записи и цыклы
Добавлено: 20 мар 2009, 15:40
blizz90
Спасиба с солбцами я разберусь а то надо ведь чёта самому сделать
