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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 18:20   #1
kostan3
- Дорогой, а ты ку
Форумчанин
 
Регистрация: 06.10.2012
Сообщений: 181
По умолчанию Школьная алгебра (Время: 1 сек. Память: 16 Мб Сложность: 27%)

РЕШАЮ ЗАДАЧУ ШКОЛЬНАЯ АЛГЕБРА
НА ACMP.RU
ВОТ ССЫЛКА НА ЗАДАЧУ
http://www.acmp.ru/index.asp?main=task&id_task=277
КОМУ ЛЕНЬ ПЕРЕХОБИТЬ
ВОТ УСЛОВИЕ ЗАДАЧИ
Школьная алгебра
(Время: 1 сек. Память: 16 Мб Сложность: 27%)

Трёхчлен a + bx + сy от двух переменных x и y однозначно определяется коэффициентами a, b и c. Написать программу, которая по заданным a, b и c выводит соответствующий трёхчлен, записанный с использованием алгебраических соглашений:

коэффициент при члене, содержащем переменную, опускается, если его модуль равен единице;
член, коэффициент при котором равен нулю, опускается (кроме случая, когда все коэффициенты равны нулю, тогда трехчлен состоит из одной цифры 0);
знак "+" опускается, если он предшествует отрицательному коэффициенту;
знак "+" опускается, если он стоит в начале выражения (так называемый унарный плюс);
знак умножения между коэффициентом и переменной опускается.

При этом запрещено менять местами члены.
Входные данные

Во входном файле INPUT.TXT через пробел записаны целые коэффициенты a, b и с, каждое из которых не превосходит 30000 по абсолютной величине.
Выходные данные

Выходной файл OUTPUT.TXT должен содержать трехчлен, записанный с использованием алгебраических соглашений.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 0 2 -1 2x-y
2 3 0 -2 3-2y
НУ ВОТ МОЁ РЕШЕНИЕ
Код:
var a,b,c,i,x:integer;
s,buf:string;
begin
assign(input, 'input.txt'); reset(input);
  assign(output, 'output.txt'); rewrite(output);
readln(a,b,c);
if a<>0 then begin
str(a,buf);
s:=s+buf+'+';    end else begin
buf:= '  ';
s:=s+buf;  end;
if b<>0 then begin
str(b,buf);
s:=s+buf+'x+';
end;
if c<>0 then begin
str(c,buf);
s:=s+buf+'y';
end;
buf:=s;

For I:=1 to length(s) do begin
  if (s[i]='+') and (s[i+1]='-') then
    begin delete(buf,i-x,1); inc(x);end;
end;
x:=0;
s:=buf;
For i:= 3 to length(s) do begin
if s[i]='1' then  begin  delete(buf,i-x,1); inc(x); end;
end;
 writeln(buf);
end;
end.
НЕ ПРОШЛО 6 ТЕСТ ПРОЧИТАВ ВНИМАТЕЛЬНО УСЛОВИЕ Я ПОНЯЛ ЧТО НАДО ВСТУВИТЬ УСЛИВИЕ ЕСЛИ ВСЕ ЭТИ ЧИСЛА РАВНЫ 0
Код:
var a,b,c,i,x:integer;
s,buf:string;
begin
assign(input, 'input.txt'); reset(input);
  assign(output, 'output.txt'); rewrite(output);
readln(a,b,c);
If (a=0) and (b=0) and (c=0) then begin writeln('0');  end;
if a<>0 then begin
str(a,buf);
s:=s+buf+'+';    end else begin
buf:= '  ';
s:=s+buf;  end;
if b<>0 then begin
str(b,buf);
s:=s+buf+'x+';
end;
if c<>0 then begin
str(c,buf);
s:=s+buf+'y';
end;
buf:=s;

For I:=1 to length(s) do begin
  if (s[i]='+') and (s[i+1]='-') then
    begin delete(buf,i-x,1); inc(x);end;
end;
x:=0;
s:=buf;
For i:= 3 to length(s) do begin
if s[i]='1' then  begin  delete(buf,i-x,1); inc(x); end;
end;
 writeln(buf);
end;
end.
И ОПЯТЬ РЕШЕНИЕ ЗАСТРЯЛО
НУ ТОЛЬКО НА 9 ТЕСТЕ
И ПИШИТ ЧТО ОШИБКА В КОДЕ
ТАК КАК В ПАСКАЛЕ НОВИЧЁК ПОМОГИТЕ МНЕ

Последний раз редактировалось Stilet; 06.10.2012 в 19:24.
kostan3 вне форума Ответить с цитированием
Старый 06.10.2012, 18:32   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
0 1 2
1x+2y
Единицу выводить не надо. Да и пробел в начале ответа - достаточная причина, чтобы считать ответ неправильным.
Цитата:
-1 0 0
-1+
???
И лучше не полагайся на то, что неинициализированные переменные равны нулю. На acmp.ru Delphi - там нормально, но во многих олимпиадных системах Free Pascal.
Somebody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
школьная задача(пример) vanushka Паскаль, Turbo Pascal, PascalABC.NET 9 14.11.2011 18:07
Сложность и время работы сортировки Шелла lega4 Помощь студентам 0 11.04.2011 11:02
Школьная задача по информатике(алгоритм) Soko123 Помощь студентам 6 22.12.2010 19:13
Школьная сеть. Freemaks Свободное общение 3 19.12.2010 10:24
Как округлить милисекунды в кол-во сек и мили сек? XerSon Общие вопросы Delphi 2 09.06.2010 10:26