Страница 1 из 1

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

Добавлено: 27 фев 2008, 17:43
person
вот опять запуталась с задачей помогите: имеется список вузов, в котором для каждого вуза указывается:наименование, план приема, кол-во поданных заявлений. среди всех вузов,у которых план приема больше
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.
исправте мои ошибки пожалуйста!!!

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

Добавлено: 27 фев 2008, 20:30
MOTOCoder
Даже не знаю где тут ошибка, предлагаю такое решение:

[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]

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

Добавлено: 27 фев 2008, 20:50
drummer
вот твой код, только немного переделанный

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

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.

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

Добавлено: 27 фев 2008, 21:23
person
спасибо большое теперь поняла свои ошибки