Убедительная просьба ко всем, кто выкладывает исходники: 1. Обязательно пользуйтесь тэгом code (иначе очень трудно читать)
2. Старайтесь делать отступы
Если вы хотите чтобы вам помогли в написании программы, внятно излагайте задание!
Прежде чем задать вопрос, воспользуйтесь учебником
Возможно, что нужная вам программа уже написана, поэтому советую просмотреть список здесь и здесь Отредактировано куратором: Lord_of_Darkness. Дата: 07.07.2006 19:36
Member
Статус: Не в сети Регистрация: 20.12.2003 Откуда: Россия
xKVtor
Вот, тебе ОГРОМНОЕ человеческое СПАСИБО за помощь! Супер, такая маленькая программа, а я не справился
Ещё раз благодарю. Жил бы я в Москве, пивом бы угостил!
З.Ы. Есть ещё другая похожая последняя задачка, но я сюда формулу кинуть не могу, не получается.
Добавлено спустя 17 минут, 51 секунду Это последняя задачка, если трудно, то не парьтесь, не заставляю, но буду огромно благодарен, если решите.
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Samanthoz вот
Код:
uses crt; const ArrayLength = 1000; var n, i: integer; res: real; x: array [1..ArrayLength] of real; begin clrscr; write('n = '); readln(n); res:=1; for i:=1 to n do begin write('x[',i,'] = '); readln(x[i]); if i>1 then res:=res*(1/x[i-1]+x[i]); end;
write('result = ',res:15:5); readln;
end.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 15.07.2005 Откуда: Из Новочека
Всем привет! Народ, помогите кто чем может. Очень прошу. Курсовой послезавтра сдавать, если не сдам, то каюк...Задание следующее:
а) Массив А(n,2) представляет данные о координатах точек опробования. Элемент А(n,1) - координата X, A(n,2) - координата Y. Определить порядковые номера наиболее удалённых друг от друга точек.
б) Организавать диалог пользователя с программо при помощи меню, создать подпрограмму для сохранения исходных данных в файле в виде записей следующей структуры:
- координата Х
- координата Y
- кначение параметра в пробе
Создать подпрограмму для чтения данных из файла, предусмотреть возможность задания пути и и мени файла для сохранения исходных данных
в) Создать подпрограмму для вывода, по необходимости, на принтер или на экран исходных данных в виде таблицы
г) Создать подпрограмму для вывода на графический экран схемы расположения точек. Максимально удалённые точки соеденить линией.
Member
Статус: Не в сети Регистрация: 17.02.2004 Откуда: Санкт-Петербург
Так. Приветствую посетителей данной ветки. Было задано в школе 2 программы написать. Они сами по себе элементарные, но т.к. во время объяснения основ Turbo Pascal я бы слегка занят другой работой, то немного упустил что-то.
Программы такие:
1) Составить программу:
Пользователь вводит 3 числа, 2 из них должны быть одинаковы, об этом прога еще перед вводом этих чисел должна сообщить пользователю. После ввода прога должна вывести на экран число отличное от двух других.
2) Пользователь вводит три разных числа. Прога выводит наибольшее.
Проги очень простые, но я в каждой что-то напутал, и они у меня не работают. Помогите, пожалуйста. Очень нужно к Завтрашнему дню!!!
Добавлено спустя 1 час, 16 минут, 2 секунды Все, сам справился. Спасибо за внимание.
Это часть программы, которую не так давно написал уважаемой мной Lord_of_Darkness. Нужно это программу написать используя PChar. Завтра предоставлю свои выкладки на эту тему. Вот исходная прога:
var i, InputNum: integer; Numbers: array [1..3] of integer; res: string; begin clrscr; textcolor(2); write('Введите число [0..1000]: '); textcolor(white); readln(InputNum); textcolor(2); write('Введено число '); if (InputNum<0) or (InputNum>1000) then writeln('введенное число вне допустимого диапазона.') else if InputNum=0 then writeln('нуль') else if InputNum=1000 then writeln('тысяча') else begin Numbers[1]:=InputNum div 100; Numbers[2]:=(InputNum div 10) - Numbers[1]*10; Numbers[3]:=InputNum - (Numbers[1]*100 + Numbers[2]*10);
if Numbers[2]<>1 then res:=A[Numbers[1],1]+A[Numbers[2],2]+A[Numbers[3],3] else res:=A[Numbers[1],1]+B[Numbers[3]];
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
AndreyZZ Ничего не путаешь? Массив A точно двумерный? Просто если это действительно так, то в двух элементах массива будут хранится два разных (координаты) значения и два одинаковых (результат). Сегодня сделать уже не успею, если еще будет нужно - напиши, сделаю завтра. m2 Выкладывай то, что сам своял, тогда и будем разбираться в чем проблема. Иначе никакого толка... Кстати советую книжечку почитать из поста на верху страницы, там это есть. PS эх приближается сессия и экзамены в школах, чувствуется завалят лабами...
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Я понимаю, что создал массив указателей, но я совершенно не понимаю, как создать массив пчаров (читай длинных строк). Ведь нет такого типа данных как Pchar... Этот тип определяется как указатель на символ...
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
AndreyZZ
Код:
uses crt, graph; const ArLen = 100; type TProba = record X, Y : longint; Param : real; end; TNumb = array [1..2] of integer;
var A: array [1..ArLen] of TProba; i, n, index: integer; s: string;
procedure InputData; begin write('n = '); readln(n); { randomize; } for i:=1 to n do begin { A[i].X := random(640); A[i].Y := random(480);} writeln('Номер точки ',i); write('X = '); readln(A[i].X); write('Y = '); readln(A[i].Y); write('Param = '); readln(A[i].Param); end; end;
procedure SaveData(Path: string); var F : file of TProba; fname: string; i: integer; begin if Path = '' then fname := 'data.dat' else fname := Path; Assign(F,fname); Rewrite(F); for i:=1 to n do write(F,A[i]); close(F); end;
procedure LoadData(Path: string); var F : file of TProba; fname: string; i: integer; begin if Path = '' then fname := 'data.dat' else fname := Path; Assign(F,fname); Reset(F); i:=0; while not EOF(F) do begin inc(i); read(F,A[i]); end; n:=i; end;
procedure Solve(var Slv: TNumb); var i, j, ind1, ind2 : integer; Len, NewLen, NewLen2: extended; begin ind1:=1; ind2:=2; Len:=sqrt(sqr(A[ind1].X-A[ind2].X)+sqr(A[ind1].Y-A[ind2].Y)); for i:=1 to n-1 do for j:=i+1 to n do begin NewLen:=sqrt(sqr(A[j].X-A[i].X)+sqr(A[j].Y-A[i].Y)); if NewLen>Len then begin Len:=NewLen; ind1:=i; ind2:=j; end; end; Slv[1]:=ind1; Slv[2]:=ind2; end;
procedure OutPutData; var i: integer; Slv: TNumb; begin writeln('ЙНННННЛНННННЛННННННННН»'); writeln('є X є Y є Param є'); writeln('МНННННОНННННОННННННННН№'); for i:=1 to n do writeln('є',A[i].X:5,'є',A[i].Y:5,'є',A[i].Param:9:2,'є'); writeln('ИНННННКНННННКНННННННННј'); writeln; Solve(Slv); writeln('MaxLen mejdu ',Slv[1],' and ',Slv[2]); readln; end;
procedure DrawPoints; var grDriver: Integer; grMode: Integer; ErrCode: Integer; i: integer; Slv: TNumb; begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then begin Solve(Slv); SetColor(1); line(A[Slv[1]].X,A[Slv[1]].Y,A[Slv[2]].X,A[Slv[2]].Y); for i:=1 to n do PutPixel(A[i].X,A[i].Y,12); Readln; CloseGraph; end else Writeln('Graphics error:', GraphErrorMsg(ErrCode)); end;
begin repeat clrscr; writeln('1. Ввод данных'); writeln('2. Загрузить из файла'); writeln('3. Сохранить в файл'); writeln('4. Вывод данных'); writeln('5. Отрисовка точек'); writeln('0. Выход'); writeln; write('Ваш выбор: '); readln(index); if (index>5) or (index<0) then continue;
clrscr; case index of 1: InputData; 2: begin write('Введите путь к файлу: '); readln(s); LoadData(s); end; 3: begin write('Введите путь к файлу: '); readln(s); SaveData(s); end; 4: OutPutData; 5: DrawPoints; end;
until index=0; end.
m2 вообщето PChar при установвленной по умолчанию директиве компилятора {$X+} воспринимается как ^Char.
Тебе разве не это нужно?
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Помогите, пожалуйста!
Срочно нужно узнать как написать на TP7:
Дано натуральное число N (1..MaxInt). Мне нужно заполнить одномерный массив, например, MAS1 всеми цифрами числа этого N. К примеру, дано число 2346, в массиве будет 2 3 4 6 или 6 4 3 2, в общем не важно, главное, что бы цифры числа были в массиве. Т.к. дано любое нат. число, я думаю надо делать через цикл, только вот совсем не могу отделить все цифры и запихнуть их в массив. Плиз хелп!
Куратор темы Статус: Не в сети Регистрация: 03.01.2004 Откуда: Питер
Shagrath юзай mod 10 в цикле и заполняй массив.
к примеру есть число 123456789 в переменной m тогда
Код:
i:=1; while n>0 do begin A[i]:=n mod 10; n:=n div 10; inc(i); end;
после первого прохода в массив выйдет 9, а число превратится в 12345678, и т.д.
только в массиве оно будет задом на перед, т.е. выводить из массива нужно будет начиная с i-1 ого элемента и до 1 ого.
_________________ Здесь так мало тех, с кем легко говорить,
Еще меньше тех, с кем не страшно молчать (c)
Member
Статус: Не в сети Регистрация: 08.12.2005 Откуда: Smolensk
Млин скоро сессия, а 2 задачи решить не могу:
- Ввести массив, сотоящий из n чисел. Вывести те элементы массива, которые
нечетны и отрицательны.
- Ввести массив A, состоящий из n чисел. Вывести те элементы массива,
значения которых больше значения предидущего элементв (начиная со второго).
Может кто поможет...
_________________ Вам может показаться, что я повторяюсь, но я буду распоряжаться вашими жизнями, как мне вздумается. Постарайтесь этого не забывать...
|Клан Дедов|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения