21.02.2009, 17:26
общий
это ответ
Здравствуйте, Rutra!
Поскольку Вы не уверены в правильности условия, привожу 2 варианта решения: с использованием одного линейного массива записей, и с использованием двух отдельных линейных массивов - фирм и фондов.
Приложение:
1) Один линейный массив записей.
uses crt;
const nmax=100;{максимальное количество фирм}
type TFirma=record {тип запись с полями по условию}
nam:string[20];{название}
usf:word;{уставной фонд}
end;
var sp:array[1..nmax] of TFirma;{массив записей, список фирм с фондами}
n,b1,b2,i:word;{количество, нижний и верхний размеры фондов, счетчик цикла}
sum:longint;{сумма}
k:byte;{фиксатор}
begin
clrscr;
repeat
write('Kolichestvo firm n=');
readln(n);
until (n>0)and(n<=nmax);{проверяем правильность ввода}
repeat
write('b1=');readln(b1);
write('b2=');readln(b2);
until (b1>0)and(b2>b1);{правильность ввода}
writeln('Vvedite dannye o ',n,' firmah:');
for i:=1 to n do {наполняем список данными}
begin
writeln('Firma ',i);
write('Nazvanie: ');readln(sp[i].nam);
write('Ustavnoj fond: ');readln(sp[i].usf);
end;
clrscr; {очищаем экран}
writeln('Spisok firm s ustavnym fondom >',b1,' i <',b2);
sum:=0;k:=0;
for i:=1 to n do
if (sp[i].usf>b1)and(sp[i].usf<b2)then{если фонд попадает в диапазон}
begin
writeln(sp[i].nam,' ',sp[i].usf);{выводим}
sum:=sum+sp[i].usf;{считаем сумму}
k:=1;{фиксируем, что есть такие}
end;
write('Summa=',sum);
if k=0 then write('Takih firm net!');{если нет}
readln
end.
2) два линейных массива: фирм и их фондов.
uses crt;
const nmax=100;
var frm:array[1..nmax] of string[20];{массив названий фирм}
fnd:array[1..nmax] of longint;{массив их уставных фондов}
n,b1,b2,i:word;
sum:longint;
k:byte;
begin
{дальше все тоже, только 2 отдельных массива}
clrscr;
repeat
write('Kolichestvo firm n=');
readln(n);
until (n>0)and(n<=nmax);
repeat
write('b1=');readln(b1);
write('b2=');readln(b2);
until (b1>0)and(b2>b1);
writeln('Vvedite dannye o ',n,' firmah:');
for i:=1 to n do
begin
write('Firma ',i,': '); readln(frm[i]);
write('Fond ',i,': ');readln(fnd[i]);
end;
clrscr;
writeln('Spisok firm s ustavnym fondom >',b1,' i <',b2);
sum:=0;k:=0;
for i:=1 to n do
if (fnd[i]>b1)and(fnd[i]<b2)then
begin
writeln(frm[i],' ',fnd[i]);
sum:=sum+fnd[i];
k:=1;
end;
write('Summa=',sum);
if k=0 then write('Takih firm net!');
readln
end.