Консультация № 160965
20.02.2009, 10:46
0.00 руб.
0 6 1
Помогите пожалуйста.
Одномерные массивы.
Дан список фирм и их уставной фонд. Найти сумму фондов, попадающих в интервал от В1 до В2

Обсуждение

Неизвестный
20.02.2009, 11:58
общий
А в каком виде представлен упомянутый список фирм и их уставных фондов?
Неизвестный
21.02.2009, 07:22
общий
Да вот задал нам препод задачку заочникам примерно в таком стиле. А мы то сами ничего по Паскалю больно не знаем. А какие есть варианты в одномерном массиве?
давно
Профессор
401888
1232
21.02.2009, 13:13
общий
Очень куцее условие. Дан список фирм, но он никак не участвует в решении задачи, в принципе совсем и не нужен. Зная эти задачи, я бы ее сформулировал так:
1.Используя массив записей создать список фирм с указанием их фондов.
2.Вывести на экран(или в файл) список фирм, чьи фонды попадают в указанный интервал, определить сумму фондов этих фирм.
Это была бы нормальная задача. А так и не поймешь, зачем вообще фирмы.
Неизвестный
21.02.2009, 15:54
общий
Может задача дана так, чтобы был как бы элемент некой занимательности, а не сухая математика.
А в приципе уважаемый Юрий Борисович Вы по-моему сформулировали верно эту задачу. А помочь не сможете? Преподаватель лютует. Помогите пожалуйста. Спасибо.
давно
Профессор
401888
1232
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.
Неизвестный
21.02.2009, 18:03
общий
Супер! Большое спасибо Юрий Борисович.
Форма ответа