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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2014, 20:25   #1
IT-school
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 39
По умолчанию хитрость с последовательностью

Задача такая:
В исходном файле даны два числа n и k, а также дана последовательность x1,x2,x3,x4...xn и даны k пар чисел a и b.
[spoiler]Пример:
4 3
1 3 8 5
1 3
4 4
2 3[/spoiler]
И надо вывести в output k чисел, которые будут для каждой пары a и b ответом следующего выражения: xa-x(a+1)+x(a+2)-x(a+3)+x(a+4)...+-xb.
(т.е. по очереди прибавлять-вычитать числа из последовательности начиная от a и кончая b).
И теперь вопрос: где может быть хитрость?
вот мой код:
Код:
var f,g:text;
    x:array[1..100000] of longint;
    a,n,w,s,k,i,j:longint;
    o:int64;
begin;
assign(f,'input.txt');
assign(g,'output.txt');
reset(f);
rewrite(g);
read(f,n);
readln(f,k);
for w:=1 to n do read(f,x[w]);
for w:=1 to k do begin;
                 read(f,i);
                 readln(f,j);
                 s:=1;
                 o:=0;
                 for a:=i to j do begin;
                        o:=o+x[a]*s;
                        s:=s*(-1);
                 end;
                 writeln(g,o);
end;
close(f);
close(g);
end.
И тестировщик говорит, что где-то возникают ошибки, если k>100, хотя что я пробовал вручную, все простые варианты работали. Где же может быть загвоздка?
IT-school вне форума Ответить с цитированием
Старый 10.01.2014, 21:21   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
read(f,i);
                 readln(f,j);
                 s:=1;
                 o:=0;
                 for a:=i to j do begin;
ужас..

Цитата:
f,g:text;
Чтоо? Бред..
Poma][a вне форума Ответить с цитированием
Старый 10.01.2014, 21:59   #3
IT-school
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 39
По умолчанию

что? что не так? в чём конкретно заключается ужас? и почему бред?
IT-school вне форума Ответить с цитированием
Старый 10.01.2014, 22:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

По-моему основная проблема тут именно в том что в строке могут быть несколько значений через пробел. Кажется не каждый read() сумеет прочесть такие данные.
Вот если бы файл был не текстовый тогда другое дело.
Цитата:
где-то возникают ошибки, если k>100
Где? Поставь отлов таких ошибок. IF, и всякие выводы текущего оператора и его операндов в LOG файл дабы понять на каком именно значении пндетц:
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.01.2014, 22:29   #5
IT-school
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Где? Поставь отлов таких ошибок. IF, и всякие выводы текущего оператора и его операндов в LOG файл дабы понять на каком именно значении пндетц:
вот если бы я знал, где ошибки...
лог файла нет, у меня любительское программирование.

исходник можно и не текстовый, а .dat, например. есть различия?
IT-school вне форума Ответить с цитированием
Старый 10.01.2014, 22:49   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
есть различия?
Ну если честно то да. Readln убирется везде, зато read() будет отрабатывать четко по каждому элементу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.01.2014, 13:56   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Вот пример из Вашего кода:
Код:
for w:=1 to n do read(f,x[w]);
Это заполнение массива последовательностью чисел.
Правильнее так:
Код:
for w:=1 to n-1 do read(f,x[w]);
readln(f,x[n]);
Последнее число читаем через Readln().

Read() считывает конец строки, но неправильно его интерпретирует.
Readln() - настроен на его считывание.
Ну и далее по тексту программы ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с последовательностью. dimka123 Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2013 09:23
Нужна помощь с последовательностью tasik_ua Помощь студентам 2 27.11.2013 21:50
Задача с последовательностью чисел Лиза_ Паскаль, Turbo Pascal, PascalABC.NET 1 22.11.2012 20:13
Работа с последовательностью, циклы Fantomka92 Общие вопросы C/C++ 1 28.11.2011 12:30
Помогите с последовательностью ==Terman== Microsoft Office Excel 5 06.06.2009 12:37