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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2011, 19:37   #1
graf890
 
Регистрация: 18.02.2011
Сообщений: 5
По умолчанию Процедуры и функции

Всем привет!
Ребят, задали нереальную штуку: изменить с помощью процедур и функций свою программу и добавить туда фасеты, то есть чтобы пользователь смог выбрать что ему хочется сделать с прогрммой дальше (например: вы хотите подсчитать сумму элементов столбцов или строк матрицы)
вот текст программы:
Дана матрица A(6,6). разработать алгоритм нахождения четных элементов в каждой строке двумерного массива и получите их суммы и выведите результат на экран. например можно изменить строки на столбцы и т.д.
Главное, чтобы процедури и функции использовались.
вот код программы:

Код:
Program summa;
  Uses crt;     {модуль для работы с программой в текстовом режиме }
Const   {секция объявления констант}
   nmax=20;
   kmax=20;
Var     {секция объявления переменных}
       a:Array[1..nmax,1..kmax] of integer;   
       Sum:Array[1..nmax] of integer;            
        i,j,n,max,error,k:Integer;                     
        ch:char;                     
        Label L1,L2;        
Begin        
    L1:clrscr;
     repeat     
      textcolor(white);
     write ('Введите количество строк массива в интервале от 2 до 20:');
     {$i-}     
     readln(n); 
     Error:=IOResult;   
     {$i+}      
      if (n<2) or (n>20) or (error<>0) then
                        begin
                          Textcolor(lightgreen);
                          writeln('Неверно задано количество строк в массиве! Повторите ввод!');
                        end;
      until(n>=2) and (n<=20) and (error=0);        {конец цикла с постусловием}
      writeln;

      repeat
       textcolor(white);
      write ('Введите количество столбцов массива в интервале от 2 до 20:');
      {$i-}  
       readln(k);
       Error:=IOResult;
       {$i+}
       if (k<2) or (k>20) or (error<>0) then
                        begin
                          Textcolor(lightgreen);
                          writeln('Неверно задано количество столбцов в массиве! Повторите ввод!');
                        end;
       until(k>=2) and (k<=20) and (error=0);
{-----------------цикл ввода значений элементов двумерного массива с проверкой---------------}
   clrscr;
    writeln;
    gotoxy(20,5);
        Writeln('Введите элементы массива:');
       for i:=1 to n do begin
          for j:=1 to k do
                                begin
                                   a[i,j]:=0;
                                   repeat
                                   textcolor(white);
                                  {$i-}
                                   read(a[i,j]);
                                   Error:=IOResult;
                                  {$i+}
                                   if (a[i,j]>1000) or (a[i,j]< -1000) or (error<>0) then
                                      begin   
                                         textcolor(lightgreen);  
                                         writeln('Ошибка в значении элемента массива! Введите элемент
                                                      в интервале');
                                         Writeln('от -1000 до 1000 вместо ошибочного и  
                                                      нажмите клавишу “Enter”!');
                                   until (a[i,j]<=1000) and (a[i,j]>= -1000) and (error=0);
                                end;
                                writeln;
                                  end;
  
    for i:=1 to n do
      begin
        Sum[i]:=0;
          for j:=1 to k do
                                begin
                                        if a[i,j] mod 2 = 0 then   {нахождение четных элементов}
                                        Sum[i]:=Sum[i]+a[i,j];
                                end;
     end;

    Clrscr;
    Gotoxy(16,4);
     Textcolor(yellow);
      Writeln(‘Р_е_з_у_л_ь_т_а_т_ы___р_а_б_о_т_ы___п_р_о_г_р_а_м_м_ы’);
    
     Textcolor(lightgreen);  
      Writeln;
      Writeln;
     Writeln('Исходный массив:);
       for i:=1 to n do
             begin
                    for j:=1 to k do
                            write(a[i,j]:4, ' ');
                    writeln;
             end;

      writeln;
       writeln;
        textcolor(lightgreen); 
        writeln('Обработанный массив:');
          for i:=1 to n do
                write(Sum[i], ' ');
                   writeln;
                   writeln;
                  textcolor(white);
        Writeln(‘Хотите обработать ещё один массив? (Y – Да, N – Нет)’);
L2:
      Case readkey of   
       #89: goto L1;
       #121: goto L1;
       #78: exit;
       #110: exit;
       End;
Goto L2;
End.    {конец программы}

Последний раз редактировалось Stilet; 19.02.2011 в 08:46.
graf890 вне форума Ответить с цитированием
Старый 18.02.2011, 21:39   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Переделка программы с использованием процедур и функций не такая уж нереальная задача. Тем более если прога готова, остается ее части оформить в виде отдельных блоков (подпрограмм), определить для них входные и выходные параметры.
Это мне кажется самое простое в заданиях по программированию.
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 18.02.2011, 22:30   #3
graf890
 
Регистрация: 18.02.2011
Сообщений: 5
По умолчанию

спасибо за ответ!
не могли бы хоть немного помочь, или натолкнуть на мысль, чтобы я мог продолжить в том же ключе. просто преподавателя на этот семестр выдали требовательного, ну а объяснений с его стороный нет. был бы очень благодарен вам
graf890 вне форума Ответить с цитированием
Старый 19.02.2011, 00:19   #4
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

посмотри тут http://pers.narod.ru/study/pascal/18.html
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедуры и функции yanevforme Помощь студентам 2 12.01.2011 14:30
процедуры и функции allegri Помощь студентам 2 09.01.2011 21:16
Процедуры и функции Nikolai17 Помощь студентам 1 28.12.2009 22:56
Функции и процедуры _Антон_ Помощь студентам 4 15.11.2008 19:58