исправте мои ошибки

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
person
Сообщения: 6
Зарегистрирован: 27 фев 2008, 16:54

вот опять запуталась с задачей помогите: имеется список вузов, в котором для каждого вуза указывается:наименование, план приема, кол-во поданных заявлений. среди всех вузов,у которых план приема больше
1000 чел., найти вуз с наибольшим конкурсом. вот что получилось:
Program Zplata;
uses wincrt;
var name:array [1..10] of string[8];
b:array [1..10] of word;
c:array [1..10] of word;
kon:array [1..10] of real;
r,n,i,j,k:integer;
max:real;
begin
write('ввод n');
readln(n);
for i:=1 to n do begin
write('name[',i,']=');
readln(name);
write('план приема=');
readln (b);
write('заявления=');
readln (c);
end;
r:=0;
for i:=1 to n do begin
if b>1000 then r:=r+1;
end;

for i:=1 to r do begin
j:=1 ;
kon[j]:=c/b;
j:=j+1;
end;
max:=kon[1];
for j:=1 to r do begin
if kon[j]>max then
begin max:=kon[j]; k:=j; end else if kon[1]=max then k:=1;
end;
writeln('max=',max);
writeln('name=',name[k]) ;
end.
исправте мои ошибки пожалуйста!!!
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Даже не знаю где тут ошибка, предлагаю такое решение:

[syntax='Delphi']
program vuz_pas;
{uses wincrt;}

const
N=10;

type
TVuz=record
Name:string[20];
Plan:integer;
Applications:integer;
end;

var
Vuz:array[1..N]of TVuz;
A:array[1..N]of byte;
i:integer;
count:integer;
cnt:integer;
max:integer;
idx:integer;

begin
writeln('Введите количество вузов');
readln(count);

for i:=1 to count do
begin
writeln('Введите имя ВУЗа № ',i);
readln(Vuz.Name);
writeln('Введите план приема ВУЗа № ',i);
readln(Vuz.Plan);
writeln('Введите количество заявлений ВУЗа № ',i);
readln(Vuz.Applications);
writeln('--------------');
end;

cnt:=0;
for i:=1 to count do
begin
if Vuz.Plan>1000 then
begin
inc(cnt);
A[cnt]:=i
end;
end;

max:=low(integer);
idx:=0;
for i:=1 to cnt do
begin
if Vuz[A].Applications > max then
begin
idx:=A;
max:=Vuz[A].Applications;
end;
end;

writeln('Удовлетворяет условиям ',Vuz[idx].Name);
readln;

end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

вот твой код, только немного переделанный

Код: Выделить всё

uses wincrt;
var name:array [1..10] of string[8];
b:array [1..10] of word;
c:array [1..10] of word;
kon:array [1..10] of real;
r,n,i,j,k:integer;
max:real;
begin
write('ввод n');
readln(n);
for i:=1 to n do begin
write('name[',i,']=');
readln(name[i]);
write('план приема=');
readln (b[i]);
write('заявления=');
readln (c[i]);
[b]
kon[i]:=c[i]/b[i];
[/b]
end;
[b]
k:=0;
max:=-1;
for i := 1 to n do
 if (b[i]>1000) and (max<kon[i]) then
        begin
                max:=kon[i];
                k:=i;
        end;
[/b]
writeln('max=',max);
writeln('name=',name[k]) ;
end.
person
Сообщения: 6
Зарегистрирован: 27 фев 2008, 16:54

спасибо большое теперь поняла свои ошибки
Ответить