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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2013, 12:23   #1
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию Обрезанная информация

Всем привет.
Вот такая вот проблема, задача стоит - вывести на экран значение функции в виде таблицы, там 20 значений. Например есть функция, несколько переменных вводит пользователь, а икс изменяется от 1 до 3 с шагом 0.1. Вот мне надо вывести. Получается 20 значений, но при выводе Паскаль обрезает их и получается не от 1.0 до 3.0, а от 1.9 до 3.0
Хотя иногда выводится и вся таблица. В чем проблема?
Спасибо.
guroDragon вне форума Ответить с цитированием
Старый 29.10.2013, 12:54   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Приведите Ваш код, пожалуйста. И воспользуйтесь тегом code (вот такая картинка: )
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 30.10.2013, 22:52   #3
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию

Код:
program Lab5;
uses crt;
var
vuxod:integer;
x,a,b,c,res:real;
read:char;
function func1(x:real;a:real;b:real;c:real;res:real):real;
begin
        res:=0;
        res:=a*cos(x)-b+c;
        func1:=res;
end;
procedure timer;
begin
        writeln('Предупреждение:');
        writeln('Откройте окошко как можно больше, что бы не потерять значения в таблице');
        writeln;
        writeln('    4');
        delay(1000);
        clrscr;
        writeln('Предупреждение:');
        writeln('Откройте окошко как можно больше, что бы не потерять значения в таблице');
        writeln;
        writeln('    3 ');
        delay(1000);
        clrscr;
        writeln('Предупреждение:');
        writeln('Откройте окошко как можно больше, что бы не потерять значения в таблице');
        writeln;
        writeln('    2 ');
        delay(1000);
        clrscr;
        writeln('Предупреждение:');
        writeln('Откройте окошко как можно больше, что бы не потерять значения в таблице');
        writeln;
        writeln('    1 ');
        delay(1000);
        clrscr;
        end;
procedure info;
begin
        clrscr;
        writeln('Инфа о проге и студенте ');
        end;
begin
        repeat
        vuxod:=0;
        info;
        read:=readkey;
        clrscr;
        case read of
        #27:    break;
        #13:    begin
                while vuxod<>1 do begin
                {$I-}
                writeln('Введите значение переменных A, B, C');
                readln(a,b,c);
                clrscr;
                {$+}
                if IOResult=0 then vuxod:=1
                else begin
                        writeln('Неверная переменная');
                        vuxod:=0;
                        end;
                end;
                clrscr;
                timer;
                Writeln('------------------------------------------------');
                writeln('|Значение функции в интервале [1..3]. Шаг = 0.1|');
                Writeln('------------------------------------------------');
                Writeln('|       Argument        |       Function       |');
                writeln('------------------------------------------------');
                x:=1;
                while x<=3  do
                        begin
                        writeln('|          ',x:2:1,'          |',func1(x,a,b,c,res):22:2,'|');
                        writeln('------------------------------------------------');
                        x:=x+0.1;
                        end;
                writeln('                        Выйти из программы - Escape.');
                writeln('          Вернутся в начало - любая другая клавиша.');
                end
        else    begin
                writeln('Информация о программе: ');
                writeln('Данная программа вычисляет значения функции в интервале [1..3]');
                writeln('с шагом 0.1 и выводит результат в виде таблицы');
                writeln;
                writeln('                        Выйти из программы - Escape.');
                writeln('          Вернутся в начало - любая другая клавиша.');
                end;
        end;
        until readkey=#27;
end.
Прошу.
guroDragon вне форума Ответить с цитированием
Старый 30.10.2013, 23:23   #4
guroDragon
Пользователь
 
Регистрация: 09.09.2013
Сообщений: 83
По умолчанию

Я тут заметил, если сначала открывать файл .pas и окошко открывать не на весь размер, а сделать обрезным, то когда запускается програ, то таблица не режется, то бишь скролить вверх, вниз можно, а если паскаль открыть на весь экран и запустить прогу, то скролить нельзя, просто таблица обрежется. Ну а если открыть сразу екзешник, то таблица будет срезана.
guroDragon вне форума Ответить с цитированием
Старый 31.10.2013, 06:35   #5
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Криминала в коде вывода таблицы не вижу.
Попробуйте ради интереса уменьшить число выводимых значений до 10, потом постепенно увеличивать. Если в какой-то момент таблица начнет "обрезаться" - значит особенности вывода паскаля. Как вариант - попробовать сменить его на Pacal ABC.Net и посмотреть, что получится.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 31.10.2013, 08:42   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Код:
function func1(x:real;a:real;b:real;c:real;res:real):real;
begin
        res:=0;
        res:=a*cos(x)-b+c;
        func1:=res;
end;
О локальных переменных не слышали? Да и что это за игры с переменной res?
Arigato вне форума Ответить с цитированием
Старый 31.10.2013, 10:01   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

guroDragon, либо уходите от TurboPascal (в сторону Delphi или FPC, например)
либо изменяйте процедуру вывода (уберите разделение строк в таблице, выводите в несколько столбцов или после вывода очередной порции (заполнения экрана, просите для продолжнения "press any key"... )



p.s. кроме того, я не смог понять назначение этого куска кода:
Цитата:
Код:
while vuxod<>1 do begin
                {$I-}
                writeln('Введите значение переменных A, B, C');
                readln(a,b,c);
                clrscr;
                {$I+}
                if IOResult=0 then vuxod:=1
                else begin
                        writeln('Неверная переменная');
                        vuxod:=0;
                        end;
                end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Информация об HDD Радик29 Компьютерное железо 2 31.07.2013 17:47
Информация о ОС и ПК kineziz Общие вопросы C/C++ 5 22.04.2012 10:25
Информация о файле на С++ олег123321 Помощь студентам 2 19.10.2011 23:55
Информация о ip Tradua PHP 5 05.04.2011 12:05
Константная информация zhenya.ya Помощь студентам 5 28.02.2010 21:59