ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

20.06.2007, 16:54
|
|
Познающий
Регистрация: 14.04.2007
Сообщений: 46
Провел на форуме: 842554
Репутация:
13
|
|
Вот мой способ
uses crt;
var
a,b,s,c:integer;
begin
write('>'); readln(a,c,b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
Почему он не работает ?
|
|
|

20.06.2007, 17:10
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Сообщение от NetMan
Ну тогда вот так:
Код:
uses crt;
var s:string;
a,b,c,posit:integer;
function Str2Int(Str:String):Integer;
var Res,code:integer;
begin
val(Str,Res,code);
Str2Int:=Res;
end;
begin
read(s);
posit:=pos('+',s);
a:=Str2Int(copy(s,1,posit-1));
b:=Str2Int(copy(s,posit+1,length(s)-posit+1));
c:=a+b;
write('=',c);
readln;
end.
 ) ну задача стояла насколько я помню чтоб сложить введенное одной строкой: 4+4 и выдать ответ, я эт и сделал, а про другое разгавора небыло
да это и не так и сложно сделать.
|
|
|

20.06.2007, 17:24
|
|
Познающий
Регистрация: 14.04.2007
Сообщений: 46
Провел на форуме: 842554
Репутация:
13
|
|
Просто тем способом каторый netman написал.... Я не проходил ))) Т.е. не учили )))
|
|
|

20.06.2007, 17:35
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
Сообщение от Fire3d
Вот мой способ
Почему он не работает ?
Код:
program pas;
uses crt;
var
a,b,s:integer;
c:char;
begin
write('>'); readln(a,c,b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
переменная, в которой может быть '+' должна быть типа char. еще было бы неплохо указать, что сложение вводить надо с пробелами (например, написать пример  ). но ваще можно и так написать:
writeln('>');
writeln('4+4=8'); или writeln('FATAL ERROR!');
Последний раз редактировалось Piflit; 20.06.2007 в 17:39..
|
|
|

20.06.2007, 17:42
|
|
Познающий
Регистрация: 14.04.2007
Сообщений: 46
Провел на форуме: 842554
Репутация:
13
|
|
Сообщение от Piflit
Код:
program pas;
uses crt;
var
a,b,s:integer;
c:char;
begin
write('>'); readln(a,c,b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
переменная, в которой может быть '+' должна быть типа char. еще было бы неплохо указать, что сложение вводить надо с пробелами (например, написать пример  ). но ваще можно и так написать:
writeln('>');
writeln('4+4=8'); или writeln('FATAL ERROR!');
Твой код тоже не работает изначально твой код был похож на мой кроме названия ячек хз почему я решил в integer запихнуть ячейку c.... щас не об этом при тесте программы ..... пишет типа invalid
Последний раз редактировалось Fire3d; 20.06.2007 в 17:50..
|
|
|

20.06.2007, 17:57
|
|
Участник форума
Регистрация: 10.08.2006
Сообщений: 147
Провел на форуме: 404152
Репутация:
94
|
|
Сообщение от Fire3d
Просто тем способом каторый netman написал.... Я не проходил ))) Т.е. не учили )))
в чистом паскале я не особо но насколько я заню проще было бы сделать так:
Код:
var s:string;
a,b,c,posit:integer;
begin
read(s);
posit:=pos('+',s);
a:=val(copy(s,1,posit-1));
b:=val(copy(s,posit+1,Length(s)));
c:=a+b;
write('=',c);
readln;
end.
val - преобразует строку вчисло
copy - копирует заданную часть строки, формат записи такой copy(строка из которой копируем, символ с которого начинаем копировать, символ по который копируем)
но у NetMen ошибка в коде, в этой строке:
b:=Str2Int(copy(s,posit+1,length(s)-posit+1));
а именно тут length(s)-posit+1 он от общей длинны строки отнимает высчитанную позицию знака +, это не верно а вдруг будет такая запись 15+4
тогда получится 4-3 т.е. такая запись b:=Str2Int(copy(s,posit+1,1);
где 4 - длинна строки, а 3 - позиция знака +.
провильно буит так: b:=Str2Int(copy(s,posit+1,Length(s)));
Последний раз редактировалось Exile1985; 20.06.2007 в 18:00..
|
|
|

20.06.2007, 18:01
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
Сообщение от Fire3d
Твой код тоже не работает изначально твой код был похож на мой кроме названия ячек хз почему я решил в integer запихнуть ячейку c.... щас не об этом при тесте программы ..... пишет типа invalid
у меня работает о0
|
|
|

20.06.2007, 18:16
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме: 1089794
Репутация:
134
|
|
Exile1985 LOL! RTFM about Copy function.
Код:
Delphi syntax:
function Copy(S; Index, Count: Integer): string;
|
|
|

20.06.2007, 18:22
|
|
Познающий
Регистрация: 14.04.2007
Сообщений: 46
Провел на форуме: 842554
Репутация:
13
|
|
Спасибо всем ребят разобрался я сам.
Воть как должно быть !
только обезательно надо ставить пробелы после каждего символа к примеру 4 + 4 воть
program pas;
uses crt;
var
a,b,s:integer;
c, ch:char;
begin
write('>');
read(a);
read(ch, c);
readln(ch, b);
write(a);
case c of
'+':write('+');
end;
write(b);
s:=a+b;
writeln('=',s);
end.
|
|
|

20.06.2007, 18:27
|
|
Banned
Регистрация: 11.08.2006
Сообщений: 1,522
Провел на форуме: 5128756
Репутация:
2032
|
|
ты в последнем коде чето намудрил. много лишнего=\
|
|
|
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Типа Проги ЛОмать будем
|
Morph |
Болталка |
14 |
21.05.2008 16:38 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|