Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Turbo Pascal 7.0

Автор: AddMen
Дата сообщения: 20.03.2006 05:04
Спасибо за пояснение

Цитата:
рекурентное выражение это выражение типа y2:=y2+a; где новое значение переменной присваивается исходя из его старого значения

как оказалось, рекуррентное выражение при математическом расчете выражается как:
a=(А(i+1)/A(i))*a.
В общем расписал я это выражение для каждого i, должно пройти
Автор: PanOFF86
Дата сообщения: 20.03.2006 07:03
а что мне кто нить поможет??
Автор: studen
Дата сообщения: 20.03.2006 07:23
помогите люди ...
может это программа и есть у вас
мне нужно:
в турбо паскале
нужно написать текстовый редактор , в виде консольного приложения(то есть чёрненькое окошко и мигает курсор )
и сделать это нужно с помощью масив масивов (только одномерные масивы)
нужно чтобы он выполнял ряд операций:
1)ввод символов с клавиатуры
2)ввод символа пробел
3)удаление символов из любой позиции с помошью клавиши delete и бэкспэйс(backspace)
4)перевод на новую строку с помощью клавиши enter
5)вставка и удаление строки из любой позиции с помощью delete и бэкспэйс(backspace)
6)сохранение текста в файл по нажатию клавиши F2
здесь должны быть диалоговые окна , то есть мы открыли файл куку изменили его тыкаем ф2 и должно выскочить дилоговое окно вы хотите заменить существующий файл или в сохранить в другой...
7)загрузка текста из файла по нажатию F3
Автор: Di0NiS
Дата сообщения: 20.03.2006 08:44
Привет Народ!
Вопрос риторический, но всё же... Есть ли декомпилятор для TP 7.0 или что-то наподобие? Понимаю, что декомпилятор сам по себе это нонсенс, но та же IDA описывает половину дизассемблированного листинга паскалескими инструкциями, может и полноценный декомпиллер есть?
Автор: nick444
Дата сообщения: 20.03.2006 16:13
Подскажите, пожалуйста! Нужна программа, позволяющая ввести неограниченное количество чисел тина real и найти наибоьшее.
Автор: daMIR
Дата сообщения: 20.03.2006 16:21
nick444
И что, сложно написать?
Автор: ShIvADeSt
Дата сообщения: 21.03.2006 00:41
daMIR

Цитата:
И что, сложно написать?

если человек не знает, что такое списки, то невозможно, ибо паскаль не дает возможности работать с динамическими массивами.
[more]
program TheEnd;
type
Ukas=^s;
s=record
val:integer;
next:ukas;
end;
var
a,b,c:ukas;
begin
writeln('éóÑñ¿ΓÑ ß»¿ß«¬');
new(a);
a^.next:=nil;
Readln(a^.val);
b:=a;
c:=a;
while a^.val<>0 do begin
new(b^.next);
b:=b^.next;
b^.next:=nil;
readln(b^.val);
a:=b;
end;
writeln('&#230;»&#191;&#223;«¬');
b:=c;
a:=c;
while c<>nil do begin
write(c^.val,' ');
c:=c^.next;
end;
c^.next:=b;
readln;
while a<>nil do begin
write(a^.val,' ');
a:=a^.next;
end;
readln;
end.
[/more]
это простейший пример работы со списками, че делает уже не помню. А тебе нужен всего один список (здесь их 3) и сделать потом пробег по списку в поисках наибольшего значения.
Автор: studen
Дата сообщения: 21.03.2006 22:04
а что с моей прогой???
Автор: AddMen
Дата сообщения: 22.03.2006 04:21
studen
По твоей программе

Цитата:
нужно написать текстовый редактор , в виде консольного приложения(то есть чёрненькое окошко и мигает курсор )
и сделать это нужно с помощью масив масивов (только одномерные масивы)
нужно чтобы он выполнял ряд операций

пиши структуру и подпрограммы по обработке реакций на нажатие.
У меня нечто похожее будет летом но на С++

Добавлено:
Люди подскажите что такое МЕТОД ХОРД (ЛИНЕЙНАЯ ИНТЕРПОЛЯЦИЯ). я по Высшей математике прочитал в учебнике, ничего не понял, и как расписать функцию этим методом ума не приложу.
Если кто по этому поводу что нибудь знает, поделитесь.
Заранее благодарен.
Автор: PanOFF86
Дата сообщения: 24.03.2006 17:27
а как же я???
Автор: daMIR
Дата сообщения: 27.03.2006 15:14
ShIvADeSt
Хе Я думал несколько проще Алгоритм:
Создаешь цикл ввода до тех пор пока не нажмут Esc, запоминаешь первое введенное число и последующее, если оно больше первого. Повторять до тех пор, пока введные символы лежат по ASCI-кодам в пределах цифр. Все
Автор: ShIvADeSt
Дата сообщения: 28.03.2006 00:10
daMIR
Ты думал как проще а я думал, как преподаватель, первое что требуется это ввести н колво чисел, а потом уже найти наибольшее. Поэтому несмотря на то, что в данном случае твой вариант даст правильный результат, я бы его не зачел, ибо он не совпадает с условием.
Автор: daMIR
Дата сообщения: 28.03.2006 00:53
ShIvADeSt
Наоборот, если придерживаться строго условию задачи, то мое решение оцениватся выше. Т.к. 1. быстрее 2. проще 3. удолетовряют условию. На самом деле ведь в том и фишка чтобы делать проще и быстрее задачи УДОЛЕТВОРЯЮЩИЕ условию задачи, усложнить-то несложно А то что учитель ожидал какие-то алгоритмы и не получил- его проблема.
Автор: jemmix
Дата сообщения: 01.04.2006 20:10
Поддерживаю оратора со смайлом на юзерпике. Хранить числа по условию не нужно.
Автор: Turboworld
Дата сообщения: 02.04.2006 23:17
реклама себя
Автор: Deusx
Дата сообщения: 05.04.2006 02:18
C Turbo Pascal я не сображаю сильно но очень нужно помогите.

1.Подсчитать сумму, и количество элементов последовательности с точностью ,указаной пользователем. Где значения x заданно пользователем.

S=x+(x*x*x)/3!+...+(exp(2n+1)*ln(x))/(2n+1)!

2.Если в данном пользователем массиве целых чисел сума элементов, размещена на парных местах, меньше сумы элементов на парных, то отсортировать массив с условием уменьшения его элементов. Ясли наоборот - то за условием увеличение модулей его элементов. Напечатать входящий и заключительный массив и найти сумы элементов на парных и непарных позициях.

3.Если в данном пользователем массиве целых чисел найти среднее арифметическое всех элементов, кратных 5. Отсортировать полученный массива условием увеличением отклонения его элементов от найденных среднего арифметического. Напечатать входящий и заключительный массив и среднее арифметическое.
Автор: Pinocchio
Дата сообщения: 06.04.2006 15:06
daMIR
Если придерживаться условия исходя из того, что условие задано для ученика с целью научить или дать возможность применить знания и приобрести опыт, то Ваше решение может быть оценено выше, но таких дополнительных исходных задано не было...
Если же придерживаться условия исходя из того, что условие задано для его выполнения именно в том виде как оно задано, а это может быть в тех случаях когда исходный текст программы будет использован для дальнейших модификаций не только исполнителем, а ещё и теми кто готовил этот ряд задачь, то Ваше решение будет оценено гораздо ниже.
Автор: gec
Дата сообщения: 07.04.2006 22:41
Для заданого X>1 пощитать y=корень квадратный из X за итерацыонной формулой:
Yi=1/2 * (Yi-1 + ( X/Yi-1) ) с заданой погрешностью epsilon и начальньным приближением Y0=X. Сколько итерацый нужно выполнить?

Вот так вот я написал на Паскале эту задачу

uses crt;
var Y1, Y0, x:real;
var i, epsilon:integer;

begin

    clrscr;
    write('Vvedit x: ');
    readln(x);
    writeln;
    write('Vvedit tochnist: ');
    readln(epsilon);
    Y0:=x;
    Y1:=0.5 * (Y0 + x/Y0);
    i:=1;

    repeat;
    Y0:=Y1;
    Y1:=0.5*(Y0+x/Y0);
    i:=i+1;
    until (Abs(Y0-Y1)<Ln (1 / epsilon) / Ln (10));
writeln;
    write('y=', Y1:10:epsilon);
writeln;
writeln;
    write('Kilkist iteraciy=', i);

    readln;
end.

После того как ввожу приближение прога останавливаеться. В чём здесь ошибка?
Автор: Deusx
Дата сообщения: 08.04.2006 15:08
Спасибо хоть чем та. И по чему надо использовать ету формулу Yi=1/2 * (Yi-1 + ( X/Yi-1) ) .
Автор: Iceman82
Дата сообщения: 08.04.2006 23:45
gec
Возможная проблема в том, что у тебя переменная epsilon объявлена как integer, а обычно точность задается в вещественных числах типа real. Обычно это 0.01, 0.001 или, например, 1e-5 и т.д.

На самом деле, ввод в переменную типа integer числа вроде 0.01 может быть даже и возможен, но в этом случае произойдет округление его до нуля, а в строке

Цитата:
until (Abs(Y0-Y1)<Ln (1 / epsilon) / Ln (10));

у тебя происходит деление, получается, что на ноль, что тоже может дать тебе ошибку.
Автор: gec
Дата сообщения: 10.04.2006 22:02
Ага спасибо. Только я прогу по другому переписал уже) В задаче сказано чтобы только пример щитался с заданйо точностью а чтобы ответ выводился с этой точностью не сказано так что уже всё.

Тут вот проблема есть Помогите ктото пожэалусто переписать прогу с Си на Паскаль..

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int B[10], C[10], A[10][10], i, j, k, m, y, z;

void main()
    {

     clrscr();
     printf("Skoliko nomerov v masive? ");
     scanf("%i", &j);
     for(i = 0; i < j; i++)
        {
         printf("\nB[%i]=", i);
         scanf("%i", &B[i]);

         for (z = 0; z < i; z++)
         if (B[i] == B[z])
         {
             printf("Chislo %i uje bilo, vvedite drugoe chislo\n",B[i]);
            i=i-1;
         }
        }

printf("\nVvedite rozmiri matrici: ");
    scanf("%i %i", &k, &z);
    printf ("\n");

     randomize ();
     for (i = 0; i < k; i++)
     for (m = 0; m < z; m++)
     A[i][m] = random (10);

    for (i = 0; i < k; i++)
     {
     for (m = 0; m < z; m++)
     printf ("%i ", A[i][m]);
     printf ("\n");
     }

        for(y = 0; y < j; y++)
        C[y] = 0;

            for(y = 0; y < j; y++)
             {
             for(i = 0; i < k; i++)
             for(m = 0; m < z; m++)
             if(B[y] == A[i][m]) C[y] = C[y] + 1;
             }

        for(y = 0; y < j; y++)
        if(C[y] > 1) printf("\nNomer %i poftoriaetza", B[y]);

getch();
    }
Автор: sonicp
Дата сообщения: 11.04.2006 12:28
gec
Переписал. То же на паскале:
[more]
uses crt;
var b:array [0..9] of integer;
c:array [0..9] of integer;
a:array [0..9] of array [0..9] of integer;
i,j,count,m,n,y:integer;
begin
ClrScr;
writeln('Skolko nomerov v massive? : ');
readln(count);
i:=0;
while (i<count) do
begin
write('B[',i,']=');
readln(b[i]);
for j:=0 to i-1 do
if (b[i]=b[j]) then
begin
writeln('Chislo ',b[i],' uje bilo, vvedite drugoe chislo');
i:=i-1;
end;
i:=i+1;
end;

write('Vvedite razmer matrici (m , n): ');
readln(m,n);
randomize;
for i:= 0 to m-1 do
for j:= 0 to n-1 do
A[i][j] := random (10);
for i:=0 to m-1 do
begin
for j:=0 to n-1 do
write(A[i][j],' ');
writeln;
end;
for y:=0 to count-1 do
C[y]:=0;
for y:=0 to count-1 do
for i:=0 to m-1 do
for j:=0 to n-1 do
if (B[y]=A[i][j]) then C[y]:=C[y]+1;
j:=0; {ispolzuem peremennyu kak flag}
for y:=0 to count do
if (C[y]>1) then
begin
writeln('Nomer B[',y,']=',B[y],' povtoriaetsia');
j:=j+1;
end;
if (j=0)
then writeln('Ni odno iz B[i] ne naideno v matrice');
readln;
end.
[/more]
Автор: gec
Дата сообщения: 11.04.2006 13:09
Спасибо!!!!
Автор: Deusx
Дата сообщения: 11.04.2006 19:21
Спасибо!!!
Автор: GRADAR
Дата сообщения: 11.04.2006 20:14
Парни я навичек в работе с TurboPas 7.0! так что помогите ! У меня есть готовая программа для управления двигателем из DOS. теперь мне надо зделать так чтобы при запуке вылетало ! чтото типо введите пороль для запуска! ВОТ ! Я НЕ ЗНАЮ КАК ЭТО НАПИСАТЬ! помогите! В qbasic без проблем а вот Pascal не знаю толком!надо обязательно в ПАСКАЛЕ! _СПАСИБО_
Автор: infeter
Дата сообщения: 12.04.2006 00:13
GRADAR
а чё, if else уже не катит?
Автор: GRADAR
Дата сообщения: 13.04.2006 00:47
Понятно конечно что через if else но я не знаю как на ПАСКАЛЕ я вснго лиш дней 5 с ним работаю ранее не сталкивался!Ну дапустим в Qbasic ето так у меня выглядит...
SCREEN 0
COLOR , 15, 1

CLS

COLOR 3: PRINT "Введите пароль..."
a1: COLOR 3
FOR i = 1 TO 5
C$ = INPUT$(1)
PRINT "*";
parol$ = parol$ + C$
NEXT i
CLS
IF parol$ <> "maxim" THEN
DO
COLOR 14
PRINT "Неправильный пароль"
parol$ = ""
GOTO a1:
LOOP

ELSE COLOR 12
END IF
{Далее соответственно основная программа ...}
Вот бы тоже самое только в Pascal 7.0
Автор: nekra
Дата сообщения: 13.04.2006 10:40
procedure EnterPassword;
var
parol: string;
c: char;
begin
parol:='';
COLOR 3: PRINT "Введите пароль..." write('Введите пароль: ');
a1: COLOR 3 while length(parol)<=0 do begin
FOR i = 1 TO 5 for i:=0 to 5 do begin
C$ = INPUT$(1) c:=readkey();
PRINT "*"; write('*');
parol$ = parol$ + C$ parol:=parol+c;
NEXT i end;
CLS clrscr;
IF parol$ <> "maxim" THEN if parol<>'maxim' then begin
DO
COLOR 14
PRINT "Неправильный пароль" write('Неправильный пароль');
parol$ = "" parol:='';
GOTO a1: end;
LOOP

ELSE COLOR 12
END IF
end;

Это - если тупо преобразовать твой код в Паскалевский. Но как минимум, надо ещё команду, которая выводит надпись "Введите пароль: " поместить внутрь цикла (у тебя GOTO A1), потому что у тебя происходит очищение экрана и пользователь будет вводить пароль на чёрном экране.
Автор: valerka78
Дата сообщения: 13.04.2006 10:45

Цитата:
procedure EnterPassword;
var
parol: string;
c: char;

i: byte;

Автор: GRADAR
Дата сообщения: 13.04.2006 20:40
Спасибо большое !!! люди добрые !!!

Страницы: 1234567891011121314

Предыдущая тема: VC++ vs. Delphi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.