Консультация № 69059
29.12.2006, 18:23
0.00 руб.
0 2 2
Здраствуйте уважаемые Эксперты! Прошу, Вас, почочь мне вот с какой задачей, точнее с пятью!

Организовать на экране внешнее меню, позволяющее выбрать нужную задачу из пяти имеющихся и продемеонстрировать результат её решения.
(управление внешним меню задается при помощи цифровой или буквенной клаиватуры или при помощи клавиш управления курсором или при помощи "мыши" - в зависимости от вашего желания. Предусмотреть защиту от неправильного ввода данных для каждой задачи и вывод всех результатов задачи в короткой форме для проверки правильности действия составленных программ)

1. По введенному с клавиатуры знаку действия найти для двух чисел результат операции(сложение, вычитание, умножение, деление, степень) и вывести на экран!
2. В массиве М(45) лежат целые числа. Перерасположить элементы массива таким образом, чтобы порядок следвания остался прежним, но в начале шли нули, затем отрицательные элементы, затем положительные элементы массива
3. Ввести строку А: string с клавиатуры. Вместо каждой точки поставить многоточие, вместо буквы "а" букву "о". Посчитать количество элементов.
4. Создать список клиентов банка. Описать и ввести массив, содержажий 10 записей следующей структуры: ФИО, адрес, возоаст, № счета, счет (руб.). Вывести массив в табличном виде по номеру счета. Вывести списки клиентов проживающих по пр. Ленина, затем клинтов старше 70 лет. Найти средний возраст клиентов.
5. Создать файл, состоящий из нескольких чисел. Дописать после каждого числа в файле его модуль. Дописать измененный файл суммой всех имеющихся чисел. Осущитвить просмот содержимого вначале созданного файла, затем преобразованного файла.

Сам я TurboPascal пости не знаю, так, что прошу напишите,пожалуйста, по подробнее.
Заранее благодарен!

Обсуждение

Неизвестный
29.12.2006, 20:01
общий
это ответ
Здравствуйте, Тисенков!

Если Вы не знаете Паскаль, то почитайте эту книжку:
http://declic.narod.ru/ossio/files/welcome.html

Она Вам поможет в решении последних двух задач, там есть общие алгоритмы и описание языка. Ещё некоторые алгоритмы можно найти здесь:
http://pasadvice.narod.ru/

Меню можно организовать через case of - ввод цифр, соответсвующих пункту, с клавиатуры. Напишите хоть что-нибудь и обращайтесь с кодом, а писать всю программу Вам здесь вряд ли кто-нибудь станет.
Неизвестный
31.12.2006, 11:28
общий
это ответ
Здравствуйте, Тисенков!
В приложении примерная реализация программы с "меню" и выполненными задачами 1 и 3.
Алгоритм для 2 задачи: находим 0 и сдвигаем все элементы перед ним, а его ставим в начало. Для отрицательных чисел аналогично, только само число надо запоминать.
Для 4 задачи ответ - RTFMТем более, что почитать, Вам предложил предыдущий эксперт. Если будет время, выложу решения ост. задач в мини-форум. Но уже не сегодня.

Приложение:
program Project2;uses crt,sunit;procedure chisla;var c: char; f: boolean; a, b: integer; res: real;begin writeln(‘Введите символ‘); readln(c); writeln(‘Введите 2 числа‘); readln(a, b); f := true; case c of ‘+‘: res := a + b; ‘-‘: res := a - b; ‘*‘: res := a * b; ‘/‘: if b <> 0 then res := a / b else f := false; ‘^‘: res := exp(b * ln(a)); else writeln (‘Операция не поддерживается‘); end; if f then writeln(res) else writeln(‘Delenie na nol‘);end;procedure mass;var m: array[1..45] of integer;beginend;procedure stroka;var s: string; i, l: byte;begin writeln(‘Введите строку‘); readln(s); i := 1; l := length(s); while (i <= l) do begin if s[i] = ‘a‘ then s[i] := ‘o‘ else if s[i] = ‘.‘ then begin insert(‘..‘, s, i); inc(i, 2); end; inc(i); end; writeln(s);end;procedure spisok;beginend;procedure file_;beginend;var i: integer;al:array [0..5] of string;begin i := 0; al[0] := ‘ Числа ‘; {создаем массив из строк меню} al[1] := ‘ Массив ‘; {все строки одинаковой длины} al[2] := ‘ Строка ‘; {иначе добавляем пробелы} al[3] := ‘ Список ‘; al[4] := ‘ Файл ‘; al[5] := ‘ Выход ‘; repeat menu(i, 6, al); case i of 1: begin clrscr; chisla; readkey end; 2: begin clrscr; mass; ReadKey; end; 3: begin clrscr; stroka; ReadKey; end; 4: begin clrscr; spisok; ReadKey; end; 5: begin clrscr; file_; ReadKey; end; end; until i = 6;end.*****sunit****{ Модуль Sunit Copyrigth (C) 1999-2001 Сиротов Алексей e-mail: sss@hostmos.ru e-mail: prsir@mail.ru sirsoft.boom.ru sss.hostmos.ru Процедуры: menu - процедура работы с меню; HideCursor - убрать курсор; ShowCursor - показать курсор;}unit Sunit;interfaceuses crt;var ko:string; q,j,i,n,x1,y1,y,ve,ggr,gr:integer; al:array[0..5] of string; procedure menu(var y:integer;n:integer; var al:array of string ); procedure HideCursor; procedure ShowCursor;implementationprocedure HideCursor;begin asm mov ah,1 mov ch,$20 int $10 end;end;procedure ShowCursor;begin asm mov ah,1 mov ch,5 mov cl,7 int $10 end;end;procedure menu(var y:integer;n:integer; var al:array of string );beginclrscr;if y=0 thenbeginy1:=(25 div 2)-(n div 2); {начальное значение курсора по ос ОY}x1:=33; {координата кусора по оси ОХ}ve:=y1;gr:=y1;end;n:=n-1;{n:=5; {кол-во строк в меню}TextColor(0);TextBackground(0); repeat HideCursor; {Убираем мигающий курсор } clrscr; {Шапка меню} TextBackground(15);gotoxy(30,ve-1);writeln(‘г========================¬‘); {Элементы меню} j:=ve;for i:=0 to n do begin TextBackground(0); write(‘ ‘:30);TextBackground(15);gotoxy(30,j);write(‘¦ ‘,al[i],‘ ¦‘); TextBackground(0); j:=j+1;end; {Конец таблицы} TextBackground(15);gotoxy(30,ve+n+1);writeln(‘L========================-‘);{----------Вывожу на экран движение курсора-------------------------}ko:=al[y1-gr]; GotoXY(x1,y1); TextColor(15); TextBackground(0); write(ko); TextColor(0); TextBackground(0);{---------Считывание клвиш с клавиатуры-----------------------------} case ReadKey of #72:begin y1:=y1-1;if y1<gr then y1:=gr+n;end;{курсор вверх} #80:begin y1:=y1+1;if y1>gr+n then y1:=gr;end; {курсор вниз} #13:q:=1; {нажать ENTER} end; ShowCursor; {Показываем мигающий курсор } until q=1; {Выход если нажато ENTER} TextColor(15);q:=0;y:=y1+1-ve;end {menu};end.
Форма ответа