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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 19:43   #1
Wenia
Пользователь
 
Аватар для Wenia
 
Регистрация: 15.11.2012
Сообщений: 20
Стрелка Составить на языке Турбо Паскаль программу обработки строк и двумерного массива.

Помогите составить на языке Паскаль программу, управляющуюся с помощью меню. А то я ничего в этом не понимаю
В меню обязательно должны войти пункты:
1) ввод и обработка символьной строки с выводом результатов; (задача1)
2) ввод и обработка двумерного массива с выдачей результатов;(задача2)
3) выход из программы (с подтверждением).

Алгоритмы задач 1 и 2 оформить в виде процедур или функций, внутренних по отношению к главной программе.

Задача №1.
Ввести строку и инвертировать каждое слово.
Задача №2.
Ввести матрицу и определить в ней максимум с координатами / минимум с координатами.

Матрицу и число строк/столбцов ввести должна сама.
И нужно сделать так, что бы матрица вводилась в ручную, а не заполнялась рандомом.

)
Wenia вне форума Ответить с цитированием
Старый 29.11.2012, 20:55   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В чем-то проблемы? Что-то не получается? - Говорите что, с радостью поможем
Или вообще лень делать? И знания стремятся к 0? - Тогда с деньгой во фриланс или ждать спасителя...
Poma][a вне форума Ответить с цитированием
Старый 29.11.2012, 21:41   #3
Wenia
Пользователь
 
Аватар для Wenia
 
Регистрация: 15.11.2012
Сообщений: 20
По умолчанию

я ВООБЩЕ НИЧЕГО НЕ ПОНИМАЮ.
У нас информатику на 1 семестр поставили ( и я не понимаю зачем это нам вообще) - я гуманитарий, историк (((
Денег нет, вот сижу и жду благородного спасителя, который по доброте душевной поможет без какой-либо корыстной мысли
Wenia вне форума Ответить с цитированием
Старый 29.11.2012, 21:52   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
я ВООБЩЕ НИЧЕГО НЕ ПОНИМАЮ.
это плохо..
Цитата:
я гуманитарий, историк (((
а это радует, хоть не информатик...
Цитата:
Денег нет
Типичный студент

Ладно давайте порешаем..
Цитата:
инвертировать каждое слово.
Это как?
Poma][a вне форума Ответить с цитированием
Старый 29.11.2012, 21:59   #5
Wenia
Пользователь
 
Аватар для Wenia
 
Регистрация: 15.11.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение

а это радует, хоть не информатик...
Меня это тоже радует
\
Я сама не понимаю, что это значит - на прошлом занятии были системы счисления, а на этом дают лабораторную с таким заданием
Wenia вне форума Ответить с цитированием
Старый 29.11.2012, 22:24   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
инвертировать каждое слово.
Цитата:
Это как?
Это значит записать слово в обратном порядке.

Например,
вводится фраза "мама мыла раму"
результат
"амам алым умар"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.11.2012, 22:48   #7
Wenia
Пользователь
 
Аватар для Wenia
 
Регистрация: 15.11.2012
Сообщений: 20
По умолчанию

Serge_Bliznykov, спасибо за объяснение )
Wenia вне форума Ответить с цитированием
Старый 29.11.2012, 22:48   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
uses CRT;

type
    TArr = array [1..100, 1..100] of Integer;

procedure InitArr (var a : TArr; var n, m : Integer);
var
    i, j : Integer;
begin
  WriteLn('Вы выбрали ввод значений в массив');
  Read (n, m);
  for i := 1 to n do
    for j := 1 to m do
        Read (a[i, j]);
  Delay (2000)
end;

procedure PrintArr (const a : TArr; const n, m : Integer);
var
    i, j :  Integer;
begin
  WriteLn('Вы выбрали вывод значений массива');

  for i := 1 to n do begin
    for j := 1 to m do
        Write (a[i, j], ' ');
    WriteLn
  end;
  Delay(2000)

end;

procedure InvertStr;
var
    s : string;
    i, j : Integer;

begin
    ReadLn (s);
    s := s + ' ';

    for i := 1 to Length(s) do
        if s[i] = ' ' then begin
            j := i-1;
            while (s[j] <> ' ') and (j > 0) do begin
                Write (s[j]);
                Dec (j)
            end;
            Write (' ')
        end;
    Delay (2000)
end;

procedure PosMaxMin (const a : TArr; const n, m : Integer);
var
 Max,Min:Byte;
 XMin,YMin,XMax,Ymax:Byte;
 X,Y:Byte;
Begin
 XMin := 1;
 YMin := 1;
 XMax := 1;
 YMax := 1;
 Max := a[1,1];
 Min := a[1,1];
 For Y := 1 to n do
  For X := 1 to m do
   Begin
    If a[Y,X] > Max Then Begin Max := a[Y,X]; XMax := X; YMax := Y; End;
    If a[Y,X] < Min Then Begin Min := a[Y,X]; XMin := X; YMin := Y; End;
   End;

  WriteLn ('Max(', YMax, ';', XMax, ')');
  WriteLn ('Min(', YMin, ';', XMin, ')');
  Delay (2000)
End;


var ct : char;
    a : TArr;
    n, m : Integer;

begin
  repeat

    ClrScr;
    WriteLn('Выберите действие:');
    writeln('1 - ввод массива');
    writeln('2 - вывод массива');
    writeln('3 - ввод и обработка строки (задача 1) с выдачей результатов');
    writeln('4 - обработка массива (задача 2) с выдачей результатов');
    writeln('5 - выход из программы (с подтверждением)');
    Writeln('_________________________ ');
    repeat
      Write('Выш выбор: ');
      readln(ct);
    until ct in ['1'..'5'];

    case ct of
      '1' : InitArr (a, n, m);
      '2' : PrintArr (a, n, m);

      '3' : InvertStr;
      '4' : PosMaxMin(a, n, m) ;

      '5' : {запрос подтверждения}
            begin
              WriteLn;
              Write('Вы действительно хотите выйти из программы? (Y/N) : ');
              ReadLn(ct);
              if (ct='Y') or (ct='y') then ct := '5';
                                  { возвращаем '5'-ку в переменную, по ней будет выход из цикла }
            end;
    end;

  until ct = '5'; { выход из программы }

  WriteLn('Программа закончила работу. Bye!');
  ReadLn
end.
Как-то так..
Взял менюшку Сержа, поиск максимума и минимума из темы про матрицы (почему-то там, много косяков...) и вот что-то получилось (ВНИМАНИЕ без задачи со строками, не знаю как строку инвертировать)

___
ADD.
Серж, огромное спасибо!

Последний раз редактировалось Poma][a; 29.11.2012 в 23:06.
Poma][a вне форума Ответить с цитированием
Старый 29.11.2012, 22:56   #9
Wenia
Пользователь
 
Аватар для Wenia
 
Регистрация: 15.11.2012
Сообщений: 20
По умолчанию

Poma][a, спасибо огромное за помощь!)))))) =* )))))))))
Wenia вне форума Ответить с цитированием
Старый 29.11.2012, 23:08   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Доделал со строкой
Единственное в 3 процедурке можно множество создать чтобы не только с пробелами работать, но уж поздно
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить на языке Турбо Паскаль программу обработки одномерного массива (управление через меню) Wenia Паскаль, Turbo Pascal, PascalABC.NET 8 16.11.2012 08:47
Пожалуйста,помогите составить программу задачи на языке Турбо Паскаль-задача на функцию Jan Помощь студентам 1 07.01.2009 19:39
написать программу обработки двумерного массива Miushka Паскаль, Turbo Pascal, PascalABC.NET 5 05.02.2008 23:32