43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
1

1001. Обратный корень

31.12.2011, 17:59. Показов 7204. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно задача.
Не могу сообразить, как правильно читать поток, подскажите пожалуйста


Не по теме:

P.S.: Всех с Наступающим! =)

0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.12.2011, 17:59
Ответы с готовыми решениями:

Обратный корень
Добрый вечер, господа! Давно интересует данная задача, можете помочь решить? Я не понимаю как...

Напишите программу «КОРЕНЬ», которая запрашивает число и выдает корень квадратный из заданного числа
Напишите программу «КОРЕНЬ», которая запрашивает число и выдает корень квадратный из заданного...

1001. Обратный корень
Задача отсюда http://acm.timus.ru/problem.aspx?space=1&num=1001 Кстати, на самом сайте есть 2...

Обратный корень
Объясните пожалуйста , что такое потоки на примере этой задачи: ...

26
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.12.2011, 18:12 2
Цитата Сообщение от TopLoader Посмотреть сообщение
как правильно читать поток,
Обычно это текстовый файл.
Читать из него числа просто
Pascal
1
read(f,a);
0
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
31.12.2011, 19:03  [ТС] 3
А как быть с произвольным количеством пробелов и тем, что неизвестно кол-во чисел?
К тому же это не файл, а поток с клавиатуры, т.е. while not(eof) не прокатит
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.12.2011, 19:07 4
Цитата Сообщение от TopLoader Посмотреть сообщение
К тому же это не файл, а поток с клавиатуры
Это кто сказал?
0
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
31.12.2011, 19:10  [ТС] 5
На Тимусе всегда ввод/вывод через стандартный поток:
Как осуществляется ввод и вывод данных?
Ввод и вывод данных осуществляется через стандартный ввод/вывод, то есть программа должна читать с клавиатуры и выводить на экран.
Программа не должна работать с файлами, это может стать причиной вердикта Restricted function.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.12.2011, 19:13 6
Ну так и читайте там все до конца.
http://acm.timus.ru/help.aspx?topic=pascal
А я привык с Турбо Паскалем работать.
0
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
31.12.2011, 19:17  [ТС] 7
Хех, спасибо, не заметил)
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
31.12.2011, 19:24 8
А я ее сразу решил с файлами и со стеком, все что там не используется.
0
43 / 43 / 6
Регистрация: 10.12.2011
Сообщений: 128
31.12.2011, 19:37  [ТС] 9
Хм, а у меня почему-то не получается пока
Pascal
1
2
3
4
5
6
7
8
9
10
11
var a:array[1..255] of real;
    i,j:integer;
begin
while not(seekeof) do
  begin
    inc(i);
    read(a[i]);
  end;
for j:=i downto 1 do
  writeln(sqrt(a[j]):0:4);
end.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
01.01.2012, 01:20 10
Уже забыл как все реализуется в Паскале. Есть входной потом, с которым связаны read и write.
Вам необходимо читать (read пропускает пробелы). Вам необходимо читать до конца файла (комбинация Ctrl-Z)
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.01.2012, 10:29 11
Разобрался.
Вводите числа через любое число пробелов, надоело Ctrl+Z.
жмете Enter, окно закрывается, если нужно посмотреть выходной поток, жмете Alt+F5.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
01.01.2012, 12:00 12

Не по теме:

Цитата Сообщение от Puporev Посмотреть сообщение
Вводите числа через любое число пробелов, надоело Ctrl+Z.
Не зачем меня цитировать было ;)


Цитата Сообщение от Puporev Посмотреть сообщение
Вводите числа через любое число пробелов, надоело Ctrl+Z.
И как же это сделать, чтобы enter-ы читать?
Подскажу
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var CON : TEXT;
c : char;
 
begin
 
Assign (CON, 'CON');
reset (CON);
 
while not eof (con)  do
    read (Con, c) ;
 
 
  readln;
end.
Добавлено через 49 секунд
6-ая и 7-ая строчку, по сути, не нужны, но без них не хочет компилить.

Добавлено через 2 минуты
TopLoader, вот рабочий вариант
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var CON : TEXT;
c : char;
i : integer;
s : string;
 
begin
 
i := 1;
 
Assign (CON, 'CON');
reset (CON);
 
while not eof (con)  do
begin
    read (Con, c) ;
    s[i] := c;
    i := i+1 ;
end;
 
s[0]:=chr(i); { Возможно, здесь i - 1, мне лень тестировать }
write (s);
 
  readln;
end.
1
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.01.2012, 12:03 13
go, Речь идет не о вводе из файла, а о вводе из клавиатуры. Я просто забыл что нужно жать Cntr+Z, а остальное написал чтобы именно при вводе с клавиатуры компилировалось.
Вот такой код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
var a:array[1..100] of integer;
    n,i:integer;
begin
n:=0;
while not seekeof do
 begin
  n:=n+1;
  read(a[n]);
 end;
writeln;
for i:=1 to n do
write(a[i],' ');
end.
При выполнении тех действий выдает в выходной поток нужную информацию, и в ТП и во Фрее.

Добавлено через 1 минуту
Кстати при вводе из файла ничего жать не нужно, символ окончания файла #26 там прописан по умолчанию, поэтому достаточно eof(f).
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
01.01.2012, 12:08 14
Цитата Сообщение от Puporev Посмотреть сообщение
go, Речь идет не о вводе из файла,
Не говорите глупости, консоль(CON) или терминал(TRM) - это все входные файлы
И Все read и write связаны с ними. Не разбирался в вашем коде, но он в корне не верный
Посмотрите мой,
Цитата Сообщение от go Посмотреть сообщение
Добавлено через 2 минуты
TopLoader, вот рабочий вариант
Вот этот

Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
Кстати при вводе из файла ничего жать не нужно, символ окончания файла #26 там прописан по умолчанию, поэтому достаточно eof(f).
Что за бред, это substirute. При чем здесь он?
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.01.2012, 12:13 15
Цитата Сообщение от go Посмотреть сообщение
Не разбирался в вашем коде, но он в корне не верный
Возможно, но он работает.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
01.01.2012, 12:17 16
Цитата Сообщение от Puporev Посмотреть сообщение
Возможно, но он работает.
Может он и работает, но зачем из текстового файла читать цифры. В этом есть свои нюансы.

Цитата Сообщение от TopLoader Посмотреть сообщение
Не могу сообразить, как правильно читать поток, подскажите пожалуйста
Я ориентировался только на эту задачу.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.01.2012, 12:24 17
Насчет #26
При считывании данных из файла неопределенной длины можно использовать функцию EoF(f); возвращающую признак конца файла, а именно: EoF(f) равен True если указатель стоит на признаке конца файла (код #26), иначе EoF(f) равен False
Цитата Сообщение от go Посмотреть сообщение
но зачем из текстового файла читать цифры
Не цифры, а числа, разделенные любым количеством пробелов и переходов на новую строку. Кстати о вводе из файла мы давно забыли, ибо это запрещено условиями сайта.
Можете почитать по ссылке
http://acm.timus.ru/help.aspx?topic=pascal

Добавлено через 1 минуту

Не по теме:

А вообще если захочется потрепаться ни о чем, найди на форуме Тараса Атавина...

0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
01.01.2012, 12:35 18
Цитата Сообщение от Puporev Посмотреть сообщение
Не цифры, а числа,
Да, оговорился, числа
А если в входной поток попадет символ? В паскале это сложно отлавить
Вывод
Pascal
1
var a:array[1..100] of char;
Да и размеры массива смущают, размер буфера по больше будет то.
Цитата Сообщение от Puporev Посмотреть сообщение
Кстати о вводе из файла мы давно забыли,
Сейчас вообще не понял

Добавлено через 2 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
Можете почитать по ссылке
Про то, что можно переоткрыть входной поток я и так знаю, но речь не об этом.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
01.01.2012, 12:35 19
Цитата Сообщение от go Посмотреть сообщение
Да и размеры массива смущают,
Это же просто пример, я же не решаю задачу ТС, да он и не просил.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
01.01.2012, 12:41 20
Цитата Сообщение от Puporev Посмотреть сообщение
указатель стоит на признаке конца файла (код #26),
Не помню, казалось что маркер конца файла равен -1 (или любое отрицательное число)

Не по теме:

Наверное, С/С++ и Паскаль далеко в этом отношении разошлись.

0
01.01.2012, 12:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2012, 12:41
Помогаю со студенческими работами здесь

Обратный корень
Исходные данные Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018),...

Обратный корень
Пожалуйста, помогите решить задачу, не получается уже месяц (если решать с массивами, то нужно...

Обратный корень
Исходные данные Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018),...

Вычислить обратный корень числа
Исходные данные: Входной поток содержит набор целых чисел Ai (0 ≤ Ai ≤ 1018),...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru