Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 14:57   #1
Геля007
 
Регистрация: 20.05.2010
Сообщений: 6
По умолчанию Паскаль - В городе N был проведен мониторинг цены бензина на различных АЗС

13) На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95 и 98. В городе N был проведен мониторинг цены бензина на различных АЗС. Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего.
На вход программе в первой строке подается число данных N о стоимости бензина. В каждой из последующих N строк находится информация в следующем формате:
<Компания> <Улица> <Марка> <Цена>
где <Компания> – строка, состоящая не более, чем из 20 символов без пробелов, <Улица> – строка, состоящая не более, чем из 20 символов без пробелов, <Марка> – одно из чисел – 92, 95 или 98, <Цена> – целое число в диапазоне от 1000 до 3000, обозначающее стоимость одного литра бензина в копейках.
<Компания> и <Улица>, <Улица> и <Марка>, а также <Марка> и <Цена> разделены ровно одним пробелом. Пример входной строки:
Синойл Цветочная 95 2250
Программа должна выводить через пробел 3 числа – количество АЗС, продающих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой-то марки нигде не продавался, то следует вывести 0.
Пример выходных данных:
12 1 0

Примерное решение:

Код:
var
min, ans: array[92..98] of integer;
c: char;
i, k, N, b: integer;
begin
for i:=92 to 98 do
begin
min[i]:=3001;{допустимо и другое число, >3000}
ans[i]:=0;
end;
readln(N);
for i:=1 to N do
begin
repeat
read(c);
until c=' '; {считана компания}
repeat
read(c);
until c=' '; {считана улица}
readln(k,b);
if min[k] > b then
begin
min[k]:=b;
ans[k]:=1
end else
if min[k] = b then ans[k]:=ans[k]+1;
end;
{если бензина какой-то марки не было,
ans[i] осталось равным 0}
writeln(ans[92],' ', ans[95],' ', ans[98])
end.


Оно ничего не выводит.

Последний раз редактировалось Stilet; 20.05.2010 в 15:45.
Геля007 вне форума Ответить с цитированием
Старый 20.05.2010, 15:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Та это вообще не должно работать по-моему...
Разве что:
Код:
var 
 Company,Street:String; 
 coast,mark:integer;
...
for i:=1 to N do
begin
 readln(Company,Street,coast,mark);
if min[mark] > b then begin
 min[mark]:=b;
 ans[mark]:=ans[mark]+1;
end else
 if min[k] = b then ans[k]:=ans[k]+1;
end;
...
Сдесь mark число - 95 96 97 98
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2010, 16:17   #3
Roman967
 
Регистрация: 12.12.2009
Сообщений: 3
По умолчанию

Дорогие товарищи!У меня возникла проблема,нужно расписать все действия в паскале. Вот прога:
program RungeKutt;
uses GraphABC,crt;
const e=2.71;
x0=0;
xk=1;
h=0.05;
kv=1;
var x,v,p,a,m:real;
i,k,t,l,r,rx,ry1,ry2:integer;
y,f,z,y0,fk1,fk2,fk3,fk4:array[1..100] of real;
xx,yy,zz:array[1..30] of real;
procedure PPCH;
begin
f[1]:=y[2];
f[2]:=(exp(x*ln(e))+1)-y[1];
end;
procedure RGK;
begin
PPCH;
for i:=1 to 100 do
begin
fk1[i]:=h*f[i];
y[i]:=z[i]+fk1[i]/2;
end;
x:=x+h/2;
PPCH;
for i:=1 to 100 do
begin
fk2[i]:=h*f[i];
y[i]:=z[i]+fk2[i]/2;
end;
PPCH;
for i:=1 to 100 do
begin
fk3[i]:=h*f[i];
y[i]:=z[i]+fk3[i];
end;
x:=x+h/2;
PPCH;
for i:=1 to 100 do
begin
fk4[i]:=h*f[i];
y[i]:=z[i]+1/6*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i]);
z[i]:=y[i];
end;
end;
begin
t:=0;
x:=x0;
y0[1]:=2.5;
y0[2]:=1.5;
for i:=1 to 100 do
begin
y[i]:=y0[i];
z[i]:=y[i];
end;
k:=0;
repeat
RGK;
v:=cos(x)+sin(x)+1+(1/2)*exp(x*ln(e));
p:=y[1]-v;
k:=k+1;
if k=kv then
begin
t:=t+1;
writeln('x=',x:3:3,' y[1]=', y[1]:3:5, ' y[2]=', y[2]:3:5, ' v=',v:3:5,' p=',p:3:7);
xx[t]:=x;
yy[t]:=y[1];
zz[t]:=y[2];
k:=0;
end;
until x>xk;
writeln('Для просмотра графика нажмите "Enter"');
readln;
clrscr;
SetWindowCaption('График функции y=cos(a)+sin(a)+1+(1/2)*exp(a*ln(e))');
SetWindowSize(600,600);
{Ось “Y”}
line(30,30,30,600);
{Ось “X”}
line(0,570,570,570);
{Стрелка на оси “Y”}
line(30,30,27,40);
line(30,30,33,40);
{Стрелка на оси “X”}
line(570,570,560,567);
line(570,570,560,573);
textout(15,40,'Y');
textout(560,575,'X');
a:=0;
for i:=1 to 1500 do
begin
M:=cos(a)+sin(a)+1+(1/2)*exp(a*ln(e));
L:=round(100*m);
putpixel(30+r,570-L,clred);
A:=A+0.001;
r:=round(100*a);
end;
for i:=1 to 6 do
begin
rx:=round(100*xx[i]);
ry1:=round(100*yy[i]);
setpencolor(clblue);
CIRCLE(30+rx,570-ry1,3);
setpencolor(clgreen);
ry2:=round(100*zz[i]);
CIRCLE(30+rx,570-ry2,3);
end;
end.
спссибо огромное!помогите прошу!!пожалуйста!!!
Roman967 вне форума Ответить с цитированием
Старый 20.05.2010, 18:09   #4
Геля007
 
Регистрация: 20.05.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Roman967 Посмотреть сообщение
Дорогие товарищи!У меня возникла проблема,нужно расписать все действия в паскале. Вот прога:
program RungeKutt;
uses GraphABC,crt;
const e=2.71;
x0=0;
xk=1;
h=0.05;
kv=1;
var x,v,p,a,m:real;
i,k,t,l,r,rx,ry1,ry2:integer;
y,f,z,y0,fk1,fk2,fk3,fk4:array[1..100] of real;
xx,yy,zz:array[1..30] of real;
procedure PPCH;
begin
f[1]:=y[2];
f[2]:=(exp(x*ln(e))+1)-y[1];
end;
procedure RGK;
begin
PPCH;
for i:=1 to 100 do
begin
fk1[i]:=h*f[i];
y[i]:=z[i]+fk1[i]/2;
end;
x:=x+h/2;
PPCH;
for i:=1 to 100 do
begin
fk2[i]:=h*f[i];
y[i]:=z[i]+fk2[i]/2;
end;
PPCH;
for i:=1 to 100 do
begin
fk3[i]:=h*f[i];
y[i]:=z[i]+fk3[i];
end;
x:=x+h/2;
PPCH;
for i:=1 to 100 do
begin
fk4[i]:=h*f[i];
y[i]:=z[i]+1/6*(fk1[i]+2*fk2[i]+2*fk3[i]+fk4[i]);
z[i]:=y[i];
end;
end;
begin
t:=0;
x:=x0;
y0[1]:=2.5;
y0[2]:=1.5;
for i:=1 to 100 do
begin
y[i]:=y0[i];
z[i]:=y[i];
end;
k:=0;
repeat
RGK;
v:=cos(x)+sin(x)+1+(1/2)*exp(x*ln(e));
p:=y[1]-v;
k:=k+1;
if k=kv then
begin
t:=t+1;
writeln('x=',x:3:3,' y[1]=', y[1]:3:5, ' y[2]=', y[2]:3:5, ' v=',v:3:5,' p=',p:3:7);
xx[t]:=x;
yy[t]:=y[1];
zz[t]:=y[2];
k:=0;
end;
until x>xk;
writeln('Для просмотра графика нажмите "Enter"');
readln;
clrscr;
SetWindowCaption('График функции y=cos(a)+sin(a)+1+(1/2)*exp(a*ln(e))');
SetWindowSize(600,600);
{Ось “Y”}
line(30,30,30,600);
{Ось “X”}
line(0,570,570,570);
{Стрелка на оси “Y”}
line(30,30,27,40);
line(30,30,33,40);
{Стрелка на оси “X”}
line(570,570,560,567);
line(570,570,560,573);
textout(15,40,'Y');
textout(560,575,'X');
a:=0;
for i:=1 to 1500 do
begin
M:=cos(a)+sin(a)+1+(1/2)*exp(a*ln(e));
L:=round(100*m);
putpixel(30+r,570-L,clred);
A:=A+0.001;
r:=round(100*a);
end;
for i:=1 to 6 do
begin
rx:=round(100*xx[i]);
ry1:=round(100*yy[i]);
setpencolor(clblue);
CIRCLE(30+rx,570-ry1,3);
setpencolor(clgreen);
ry2:=round(100*zz[i]);
CIRCLE(30+rx,570-ry2,3);
end;
end.
спссибо огромное!помогите прошу!!пожалуйста!!!






куда ты пишешь? свою тему создай
Геля007 вне форума Ответить с цитированием
Старый 20.05.2010, 18:10   #5
Геля007
 
Регистрация: 20.05.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Та это вообще не должно работать по-моему...
Разве что:
Код:
var 
 Company,Street:String; 
 coast,mark:integer;
...
for i:=1 to N do
begin
 readln(Company,Street,coast,mark);
if min[mark] > b then begin
 min[mark]:=b;
 ans[mark]:=ans[mark]+1;
end else
 if min[k] = b then ans[k]:=ans[k]+1;
end;
...
Сдесь mark число - 95 96 97 98
все равно не получается=(
Геля007 вне форума Ответить с цитированием
Старый 20.05.2010, 18:13   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Геля007 Посмотреть сообщение
все равно не получается=(
Тогда во фриланс, за рублики...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 20.05.2010, 18:22   #7
Геля007
 
Регистрация: 20.05.2010
Сообщений: 6
По умолчанию

[QUOTE=Grag;531423]Тогда во фриланс, за рублики...[/QUO

да уж...отличный форум
Геля007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитационное моделирование (АЗС с 2мя колонками) Optigood Помощь студентам 1 17.07.2011 16:11
найти количество машин марки X в городе Y через функцию ЕСЛИ 6865 Microsoft Office Excel 16 22.02.2010 01:46
Цены проектов leffet Свободное общение 7 17.02.2010 14:13
Литр бензина в США можно купить за 15 рублей mihali4 Свободное общение 46 17.11.2008 02:06