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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2007, 21:41   #1
Fimogen
 
Регистрация: 22.10.2007
Сообщений: 5
По умолчанию Двумерные массивы. Формирование одномерного массива из сумм строк матрицы, кратных числу k (в С++)

Здравствуйте, нужна ваша помощь. Нужно для целочисленной матрицы из n строк и m столбцов (1<n<=100, 1<m<=50) выполнить заданную операцию над матрицей, а имеенно: Формирование одномерного массива из суммы строк матрицы, кратных числу k. ( в С++). Т.е., допустим мы ввели матрицу:
1 2 3
4 6 8
6 9 5
и k, допустим пусть равно 2, следовательно двум кратна втроая строка 4 6 8 ==> формируем одномерный массив из сумм этой строки, кратных 2 и тд...
Код:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>// библиотека маникуляторов вывода (setw(5))
 void main()
{
int n,m;//размер матрицы
int a[100][50];//матрица
int i,j;// номер строк и столбцов
int k;
// ввод матрицы
cout<<"n,m,k?";
cin>>n>>m>>k;
cout <<"a?";
for(i=0;i<n;i++)
for(j=0,j<m,j++)
cin>>a[i][j];
//вывод матрицы
for (i=0; i<n; i++)
{ 
 for(j=0; j<m;j++);
 cout<<setw(5)<<a[i][j];
cout<<endl;
}
....
Самые азы, как ввести матрицу я, вроде, понял, но как написать этот процесс формирования одномерного массива из сумм строк матрицы, кратных числу k, я не знаю, буду признателен, если поможите доделать( ну, вприципе сделать)...
Fimogen вне форума Ответить с цитированием
Старый 15.11.2007, 22:22   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Мне кажется что по условию задачи скорее всего нужно найти суммы элементов в строках с номерами, кратными заданному числу(например для числа 3 это 3,6,9 и т.д.). Это легко делается. Затем из этих сумм нужно сформировать массив, что тоже несложно.
Если я правильно понял условие, то вот код на Паскале, по вашему я не умею. Думаю, что Вы легко переведете.
Код:
program masssum;
uses crt;
var a:array[1..100,1..50] of integer;
    b:array[1..50] of integer;
    n,m,D,i,j:integer;
begin
   clrscr;
   write('n=');readln(n);вводим количество строк
   write('m=');readln(m);вводим количество столбцов
   write('D=');readln(D);вводим заданное число
   randomize;
   for i:=1 to n do        создаем массив
      for j:=1 to m do 
         begin
            a[i,j]:=random(9)+1;
         end;
   for i:=1 to n do       выводим его на экран
       begin    
          for j:=1 to m do 
             write(a[i,j],' ');writeln; 
       end;
   readln;
   for i:=1 to n do 
      begin
         for j:=1 to m do 
            begin
                if i mod D = 0 then 
                     begin 
                        b[i div D]:=b[i div D]+a[i,j]; считаем сумму в кратных рядах
                     end;                              и формируем массив В     
            end;
       end;
    for i:=1 to n div D do               выводим его на экран
        write(b[i],' ');readln;
end.

Последний раз редактировалось puporev; 15.11.2007 в 23:18. Причина: Вставил код
puporev вне форума Ответить с цитированием
Старый 19.11.2007, 00:31   #3
Fimogen
 
Регистрация: 22.10.2007
Сообщений: 5
По умолчанию

эмм...я и по-нашему плохо понимаю, если бы знал не спрашивал бы у вас помощи, а куда мне до Паскаля.) Не смогу я перевести.) Мне бы лучше на С++...

Последний раз редактировалось Fimogen; 19.11.2007 в 00:35.
Fimogen вне форума Ответить с цитированием
Старый 19.11.2007, 07:30   #4
PuzzleC
Пользователь
 
Регистрация: 01.11.2007
Сообщений: 33
По умолчанию

Цитата:
из суммы строк матрицы, кратных числу k
Цитата:
Сообщение от Fimogen Посмотреть сообщение
Мне кажется что по условию задачи скорее всего нужно найти суммы элементов в строках с номерами, кратными заданному числу
Ясно же сказано строк, а не элементов!

Кстати для двумерного массива элементом как-раз и будет строка, а строка(ряд) является одномерным массивом элементом которого является одно число

Короче организуешь цикл:
если двумерный массив(матрица) состоит напр. из 10 рядов а ряд состоит из 10 элементов(чисел) то повторений будет 10*10
Код:
int x; 
for(int i=0; i<10; i++)
 {
 for( int j=0; j<10; j++ )
  {
  x+=_array[ i ][ j ]; // сумма ряда
  }
 }
Далее проверяешь на остаток от деления по модулю(есть библиотечная функция fmod), если остаток ноль то число кратно заданному k
Код:
if( fmod(x, k)==0 )
 {
 ...
 }
Осталось соеденить эти два куска
Код:
int x; 
for(int i=0; i<10; i++)
 {
 for( int j=0; j<10; j++ )
  {
  x+=_array[ i ][ j ]; // сумма ряда
  if( fmod(x, k)==0 )
   {
   cout <<  x << endl; // вывод на экран всей суммы ряда если она кратна k
   }
  }
 }

Последний раз редактировалось PuzzleC; 19.11.2007 в 07:47.
PuzzleC вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из одномерного массива сделать матрицу Шико Паскаль, Turbo Pascal, PascalABC.NET 8 28.05.2008 08:26
Сортировка одномерного массива (ASM & C) voron Помощь студентам 0 02.12.2007 13:41
двумерные массивы(матрицы) dunvegan Помощь студентам 4 05.11.2007 14:32
Паскаль.Сформировать одномерный массив А из элементов матрицы, кратных трём ICEART Помощь студентам 2 03.10.2007 17:29