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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 21:03   #1
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
Восклицание Помогите, пожалуйста, реализовать часть кода

Вот задача:
Требуется вывести на экран меню, состоящее из следующих пунктов:
1. ввод матрицы с клавиатуры,
2. ввод матрицы из файла,
3. номер строки, все элементы которой образуют убывающую последовательность, нечетен.,
4. преобразовать матрицу в строку по спирали,
5. печать матрицы,
6. выход.
и обеспечить его функционирование.
Внутри программы характеристика оформляется в виде функции с параметрами - значениями, которая возвращает значение булевского типа; преобразование в виде процедуры с параметрами - переменными. Необходимо отслеживать, был ли произведен ввод данных до выбора пунктов меню, которые обрабатывают матрицу.

Вот часть кода, что я написал, здесь не хватает только выполнения преобразования и проверки характеристики:
Код:

program PR_1;
uses CRT;
type   MATR = array[1..10, 1..10] of integer;
label 10;

var a: Matr;      
    i,j,n,m,k: word;
    schet: integer;
    c:char;

    f:text;

{------------------------------------------}
 procedure Print_Matrix( a:Matr; m,n: word);  
 var i, j: word;
 begin
      writeln;
      for i:=1 to m do
      begin

           for j:=1 to N do
                   write(a[i,j]:4, '  ');
           writeln;
      end;
 end;
{------------------------------------------}
 procedure inputUSER(var a:Matr);  
 begin
      writeln('‚Введите размерность матрицы:');readln(m,n);
      for i:=1 to m do
          for j:=1 to n do
          begin
               write('a[',i,',',j,']= '); readln(a[i,j]);
          end;
 end;
{------------------------------------------}
 procedure inputfromFILE(var a:Matr);  
 begin
 reset(f);
    Readln(f,m);
    Readln(f,n);
    for i:=1 to m do
    begin
          for j:=1 to n do
                   read(f,a[i,j]);

    end;
    close(f);
    writeln(' Матрица, полученная из файла:');
    Print_Matrix(a,m,n);
    readln;
 end;
{------------------------------------------}
 procedure STROKA;
  end;
{------------------------------------------}
 procedure AtLineOnASpiral;

 end;
{------------------------------------------}
begin
    clrscr;
    assign(f,'matrix.txt');
    {VVODfromFILE(a); }
10:  schet:=0;
while (c <>'6') do
begin
     clrscr;
     writeln(' 1. Ввод маирицы с клавиатуры');
     writeln(' 2. Ввод матрицы из файла');
     writeln(' 3. проверка характеристики');
     writeln(' 4. выполнение преобразования');
     writeln(' 5. Печать матрицы');
     writeln(' 6. Выход');
     writeln;
     schet:=schet+1;
     readln(c);
     if ((c='3') or (c='4') or (c='5')) and (schet=1) then
     begin
          writeln(' Ќ*¦¬ЁвҐ жЁдал 1 Ё«Ё 2!');
          readln;
          goto 10;
     end;
     case c of
     '1': begin inputUSER(a); readln; end;
     '2': begin inputfromFILE(a); end;
     '3': begin
               STROKA;

               readln;
          end;
     '4': begin 
                     AtLineOnASpiral;
                     
          end;
     '5': begin Print_Matrix(a{b},m,n);  readln; end;


'6': begin writeln(' do svidaniya'); break; end;
else  begin writeln(' Нажмите цифры 1-6!'); readln; end;
end;
end;
end.
З.Ы. пожалуйста, помогите...и если не сложно объясните как вы сделаете...=)

Последний раз редактировалось Horknee; 30.11.2008 в 21:07.
Horknee вне форума Ответить с цитированием
Старый 01.12.2008, 17:44   #2
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
По умолчанию

Вот я постарался сделать одну из недостающих процедур, сделал наполовину:
Код:
procedure AtLineOnASpiral(n:word; a:matr);
 var mas:array[1..36] of integer;
     i,k:integer;
 begin
            k:=1;
            for j:=1 to n-1 do
            begin
            mas[k]:=a[1,j];
            write(mas[k]:6);
            inc(k);

            end;
        for i:=1 to m-1 do
            begin
            mas[k]:=a[i,n];
            write(mas[k]:6);
            inc(k);

            end;
        for j:=n downto 1 do
            begin
            mas[k]:=a[m,j];
            write(mas[k]:6);
            inc(k);

            end;
 end;
З.Ы. почему наполовину? Потому что я не хочу писать n-ое количество этих условий на строки и столбцы мтрицы. Я же не знаю как оно пойдет в матрицах разногоразмера...помогите прописать условие=)
Horknee вне форума Ответить с цитированием
Старый 01.12.2008, 23:30   #3
Horknee
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 70
По умолчанию

Очень нужна ваша помощь, пожалуйста...
Horknee вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, реализовать. Horknee Паскаль, Turbo Pascal, PascalABC.NET 6 26.10.2008 16:21
Часть фона одним цветом а другая часть другим (без таблиц). Lanselot HTML и CSS 4 25.04.2008 18:41