while not eof(t1) do begin
read(t1,s);
if c < 2 then
inc(c);
end;
прошу помощь
1.Входные данные: в текстовом файле price.in через пропуск записаны натуральные числа, которые не превышают 50 000.
Выходные данные: в текстовый файл price.out записать єдинствиное число – найменьшее уникальное . Если такого числа нету, то вывести «No»
2.Входные данные: в текстовом файле square.in в первой строчке записанок число N – количество вершин многоугольника, а в следующих N строчках пары чисел – координаты вершин.
Выходные данные: в текстовый файл square.out записать единственое число – площадь многоугольника. Результат вывести с одним знаком после запятой.
Ограничения: 3<=N<=50000. Координаты по модулю не превышают 20000. Время 1с. Стороны многоугольника без само пересечений и не имеют общих точек (кроме соседних – в вершинах )
3.Каждой осенью проводится выставка.На такую выставку поехали двое фермеров с своими кроликами. Их транспорт имеет ограниченую грузоподьемность. Вот они задумались над тем какую мин и макс сумы они получат продав свой товар. Им известна Е -маса автомобиля не нагруженого, F – полная маса автомобиля, маса одного кролика Мi и его стоимость Рi. Найдите максимальную та минимальную сумы, которые они могуть получить.
Входные данные: в текстовом файле market.in в первой строчке записаны числа E i F: 1<=E<=F<=10000. В второй строчке – число N: 1<=N<=500 - количество видов кроликов, а в следующих N строчках пары чисел Pi та Mi : 1<=Pi<=50000, 1<=Mi<=10000, которые разделены пропуском. Все числа натуральные.
Выходные данные: в текстовый файл market.out записать через пропуск два числа: максимальную та минимальную сумы. Если авто не может еметь точно заданый вес при условии что он нагружен задаными кроликами , то вывести «This is impossible.».
Если вы мне поможете с етими задачами буду очень вам признателен
если разбираетесь неделю, то можно сюда наработки, хотя бы неправильные? Разберемся что именно не получается.
Program z1;
uses crt;
const N=5000;
var c:array[1..N] of integer;
i,s:integer;
t1,t2:text; f:boolean;
begin
clrscr;
assign(t1, 'price.in');
reset(t1);
assign(t2, 'price.out');
rewrite(t2);
fillchar(c,sizeof(c),0);
f:=true;
i:=1;
while not eof(t1) do
begin
read(t1,s);
c
inc(i)
end;
for i:=1 to n do
if c=1 then begin write(t2,i); f:=false end;
if f then writeln('No');
close(t1);
close(t2);
readln;
end.
Пожалуйста помогите. Задачи нужно сегодня здать.
Навскидку в программе заметно три недостатка:
1. Если одинаковых чисел будет 65537, то такое число будет неверно распознано как уникальное.
2. По условию диапазон должен быть до 50000, а не до 5000.
3. Программа распечатывает все уникальные числа, а не только наименьшее. И, кстати, "No" пишет на экран, а не в файл.
Цитата: andriano
А что именно неправильно?
Навскидку в программе заметно три недостатка:
1. Если одинаковых чисел будет 65537, то такое число будет неверно распознано как уникальное.
2. По условию диапазон должен быть до 50000, а не до 5000.
3. Программа распечатывает все уникальные числа, а не только наименьшее. И, кстати, "No" пишет на экран, а не в файл.
Навскидку в программе заметно три недостатка:
1. Если одинаковых чисел будет 65537, то такое число будет неверно распознано как уникальное.
2. По условию диапазон должен быть до 50000, а не до 5000.
3. Программа распечатывает все уникальные числа, а не только наименьшее. И, кстати, "No" пишет на экран, а не в файл.
1.как ето исправить?
2.а ну ето протупил
3.вот как сделать чтоб найменшее уникальное распознавалось? а про Ноу понятно.
спасибо
вот как исправить 1 и 3 ?
Код:
3.
Код:
for i:=1 to n do
if c=1 then begin
if f then write(t2,i);
f:=false;
end;
if c=1 then begin
if f then write(t2,i);
f:=false;
end;
по поводу 2: если ты используешь TP 7.0, то организовать массив из 50000 integer у тебя не получится. Могу порекомендовать заменить на byte.
Работает.
Update:1 и 2 задачи решены. Кто знает 3- пишите код. Идей вообще нету=(
А третью невозможно решить, не зная сколько весят сами фермеры.
Цитата: andriano
А третью невозможно решить, не зная сколько весят сами фермеры.
ну вес фермеров можно не учитывать))
ну а помочь может кто?
А собственные наработки?
Program z3;
uses crt;
const Maxn=500;
var Weight,Price:array[1..maxN] of integer;
Best,Now:array[1..maxN] of integer;
N,W ,W1,W2 ,i,j,k,s:integer; Maxprice,Minprice:longint;
t1,t2:text;
procedure Solvemax( k,w:integer; st:longint);
var i:integer;
begin
if (k>N) and (st>Maxprice) then
begin Best:=Now; Maxprice:=st; end
else if k<=N then
For i:=0 to W div Weight[k] do begin
Now[k]:=i;
Solvemax(k+1,W - i*Weight[k], st+i*price[k]);
end; end;
procedure Solvemin( k,w:integer; st:longint);
var i:integer;
begin
if k>N then
begin Best:=Now; Minprice:=st; end
else if k<=N then
For i:=0 to W div Weight[k] do begin
Now[k]:=i;
Solvemin(k+1,W - i*Weight[k], st+i*price[k]);
end; end;
begin
clrscr;
assign(t1, 'marcet.in');
reset(t1);
assign(t2, 'marcet.out');
rewrite(t2);
fillchar(Weight,sizeof(Weight),0);
fillchar(Price,sizeof(Price),0);
Readln(t1,W1,W2);
W:=W2-W1;
Readln(t1,N);
for i:=1 to N do
readln(t1,Price,Weight);
Solvemax(1,W,0);
Solvemin(1,W,0);
if (Maxprice<>0) and (Minprice<>0) then
Writeln(t2,Maxprice,' ',Minprice)
else writeln(t2,'This is impossible');
close(t1);
close(t2);
readln;
end.
почему то непровильно отображаеться This is impossible
Нужна помощ! Плс