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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 20:28   #1
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
По умолчанию Массив, вывести по диагонали

Всем привет, осталось сделать две программки, самому не справится без вас.... мастера помогите =)

условие
Цитата:
По заданной строке из N символов сформировать квадратную матрицу размера N´N, расположив символы строки в главной диагонали и заполнив диагонали, параллельные побочной диагонали, соответствующими символами главной диагонали. Остальные элементы матрицы заполнить нулями. Например, для строки “Проба” получаем матрицу


Вот что сделал, слово размером до 10 букв внес в массив, а вот как вывести, так что бы было как требует задача?

Код:
program mas;
uses crt;
var a : string;
    n,i : longint;
    b : array [1..10] of string;
 begin
   clrscr;
   write('введите слово:');
   readln(a);
   n:=length(a);
   for i:=1 to n do b[i]:=a[i];
   for i:=1 to n do
   begin
     writeln('b[',i,']=',a[i]);
   end;
   readln;
 end.
Naposaram вне форума Ответить с цитированием
Старый 29.03.2012, 13:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а зачем Вам ОДНОМЕРНЫЙ массив то? В задании же чётко сказано: "сформировать квадратную матрицу размера N´N"

я бы предложил такой вариант (он неоптимален - количество циклов в нём избыточно, но он вполне рабочий!):
Код:
program mas;
uses crt;
const MaxN = 25;
var s : string;
    i,j,k, N : longint;
    B : array [1..MaxN, 1.. MaxN] of char;
 begin
   clrscr;
   repeat
     write('введите слово:');
     readln(s);
     N := length(s);
     if N>MaxN then WriteLn('Максимальная длина слова д.б. меньше ',MaxN);
   until N<=MaxN;

   {заполнение матрицы - сначала нулями}
   for i:=1 to N do
     for j:=1 to N do B[i,j] := '0';


   {теперь заполним буквами из слова}
   for k:=1 to N do
     for i:=1 to N do
       for j:=1 to N do
         if (i+j) = k*2 then B[i,j] := s[k];

   {вывод результатов}
   WriteLn('Полученная матрица:');
   for i:=1 to N do begin
     for j:=1 to N do
       Write(' ', B[i,j] );
     WriteLn;
   end;

   readln;
 end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2012, 14:36   #3
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
Хорошо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а зачем Вам ОДНОМЕРНЫЙ массив то? В задании же чётко сказано: "сформировать квадратную матрицу размера N´N"

я бы предложил такой вариант (он неоптимален - количество циклов в нём избыточно, но он вполне рабочий!):
Код:
program mas;
uses crt;
const MaxN = 25;
var s : string;
    i,j,k, N : longint;
    B : array [1..MaxN, 1.. MaxN] of char;
 begin
   clrscr;
   repeat
     write('введите слово:');
     readln(s);
     N := length(s);
     if N>MaxN then WriteLn('Максимальная длина слова д.б. меньше ',MaxN);
   until N<=MaxN;

   {заполнение матрицы - сначала нулями}
   for i:=1 to N do
     for j:=1 to N do B[i,j] := '0';


   {теперь заполним буквами из слова}
   for k:=1 to N do
     for i:=1 to N do
       for j:=1 to N do
         if (i+j) = k*2 then B[i,j] := s[k];

   {вывод результатов}
   WriteLn('Полученная матрица:');
   for i:=1 to N do begin
     for j:=1 to N do
       Write(' ', B[i,j] );
     WriteLn;
   end;

   readln;
 end.
Бооольшущее спасибо!!!
Naposaram вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задать двумерный массив, вывести на экран отдельно главную и побочную диагонали, отсортировать по убыванию методом пузырька CookieStar Помощь студентам 6 12.12.2011 07:44
Задачи на массив.вычисление максимума побочной диагонали Limonn Помощь студентам 11 01.12.2011 08:57
Посчитать количество нулей, находящихся на главной диагонали (массив) Sin3v_ Паскаль, Turbo Pascal, PascalABC.NET 6 03.10.2010 16:22
Массив, нахождение макс элемента ниже главной диагонали L3zh1Y Помощь студентам 2 15.05.2010 13:36
вывести элементы выше главной диагонали : Rusl92 Помощь студентам 0 30.10.2009 22:45