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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2013, 14:40   #1
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию сумма элементов матрицы

С клавиатуры вводится размерность целочисленной матрицы,затем сама матрица.Найти сумму всех элементов.Разрешается при этом использовать только один оператор цикла(кроме цикла ввода матрицы).
Вот сделала эту задачу,правильно ли?или нельзя было еще одно For использовать?
Код:
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");
int i,j,N,M,S,a[20][20];
int *A;
cout<<"Введите количество строк,N="; 
cin>>N;
cout<<"Введите количество столбцов,M="; 
cin>>M;
A=new int [N*M];
cout<<"Составьте матрицу А\n";
//цикл по переменной i,в которой перебираем строки
for (i=0; i<N; i++)
//цикл по переменной j, в котором перебираем элементы внутри строки
for (j=0; j<M; j++)
cin>>a[i][j]; //ввод элемента матрицы
cout<<"матрица А:\n";
for (i=0; i<N; i++)
{
for (j=0; j<M; j++)
cout<<a[i][j]<<"\t"; //вывод элемента матрицы
cout<<endl; //переход на новую строку
}
for (S=i=0; i<N; i++)
for (j=0; j<M; j++)
S+=a[i][j];
cout<<"сумма равна,S="<<S<<endl;
system("pause");
return 0;
}
fkty вне форума Ответить с цитированием
Старый 04.09.2013, 15:41   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Насколько я понял, второй for по условию действительно нельзя использовать. Можно сделать так:
Код:
for (int k = 0; k < M * N; ++k)
 {
 int x = k / M;
 int y = k % M;
 S += a[x][y];
 }
Хотя с двумя вложенными циклами, конечно, удобнее и потому лучше.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 04.09.2013, 15:50   #3
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

а можете объяснить как так получается?что за к?
fkty вне форума Ответить с цитированием
Старый 04.09.2013, 16:23   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А почему у Вас 2 массива (a[20][20] и new int[M * N])?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.09.2013, 16:35   #5
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

не могу разобраться,как убрать a[20][20]?ведь надо получается использовать новую матрицу А
fkty вне форума Ответить с цитированием
Старый 04.09.2013, 16:49   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Можно, например, так:
Код:
#include <iostream>

using namespace std;

int
main()
{
    setlocale (LC_ALL, "RUS");
    int i, j, N, M, S;
    cout << "Введите количество строк, N = ";
    cin >> N;
    cout << "Введите количество столбцов, M = ";
    cin >> M;
    int *A = new int [N * M];
    cout << "Введите матрицу А" << endl;
    for (i = 0; i < N; ++i)
        for (j = 0; j < M; ++j)
            cin >> A[M * i + j];
    cout << "Матрица А:" << endl;
    for (i = 0; i < N; ++i) {
        for (j = 0; j < M; ++j)
            cout << A[M * i + j] << "\t";
        cout << endl;
    }
    for (S = i = 0; i < N * M; ++i)
        S += A[i];
    delete[] A;
    cout << "S = " << S << endl;
    system("pause");
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.09.2013, 18:28   #7
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

а как вывели эту формулу cin >> A[M * i + j];? и почему то программа не запускается

Последний раз редактировалось fkty; 04.09.2013 в 18:32.
fkty вне форума Ответить с цитированием
Старый 04.09.2013, 18:40   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Насчет "не запускается" не знаю (у меня запускается).
Насчет формулы:
N строк M столбцов
в каждой строке M элементов
A[N * M] по сути одномерный массив
Все строки матрицы записаны одна за другой в массиве A

UPD
Пожалуйста
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 04.09.2013 в 19:18.
BDA вне форума Ответить с цитированием
Старый 04.09.2013, 19:01   #9
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

спасибо
fkty вне форума Ответить с цитированием
Старый 15.09.2013, 12:17   #10
fkty
Форумчанин
 
Регистрация: 22.05.2013
Сообщений: 245
По умолчанию

BDA,оказывается у вас в программе два лишних цикла,я их убрала,но теперь вывод матрицы не работает
Код:
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "RUS");//установка поддержки русского языка
  int i,j,N,M,S;
  int *A;
  cout<<"ВВедите количество строк,N="; //ввод количества строк
  cin>>N;
  cout<<"Введите количество столбцов,M="; //ввод количества столбцов
  cin>>M;
  A=new int [N*M];
  cout<<"Составьте матрицу А\n";
  for (i=0; i<N; i++)
	  for (j=0; j<M; j++)

  {
	  cin>>A[i*M+j]; //ввод очередного элемента матрицы
  }
  cout<<"матрица А:\n";
  for (S=i=0; i<N*M; i++)
	  {
		  cout<<A[i*M+j]<<"\t";//вывод очередного элемента матрицы
		  S+=A[i];
	  }
   
      cout<<endl; //переход на новую строку после вывода всех элементов строки
 
   cout<<"сумма равна,S="<<S<<endl; //вывод результата
   delete [] A;
   system("pause");
   return 0;
}
fkty вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма элементов матрицы [n:m] (Си) Найт Помощь студентам 1 18.04.2012 16:18
сумма элементов матрицы Paulsan Общие вопросы C/C++ 7 07.01.2012 10:49
Сумма элементов матрицы Паркер Помощь студентам 3 25.11.2011 15:19
Сумма элементов матрицы DenProx Помощь студентам 2 19.12.2009 14:49
Сумма четных элементов матрицы. Произведение элементов 3-го столбца. Минимальный элемент матрицы. renovare Помощь студентам 2 03.07.2009 21:13