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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2013, 02:40   #1
Vovcodav612
 
Регистрация: 19.11.2013
Сообщений: 6
По умолчанию C++ двухмерный массив

Определить средние значения элементов строк массива M[n][m]. Найти минимальное значение среди этих средних.
Код:
#include<conio.h>
#include <iostream>
using namespace std;
const int n = 3;
const int m = 4;
int main()
{
int a[n][m] =
	{
	{3,4,3,2},
	{1,1,5,5},
	{7,30,1,6}
	};
	int i,j,sum_str,sr_arif,min;
	  cout << "\nVyhidniy masyv: ";
	for(int i = 0; i<n; i++)
	{
	cout << "\n Ryad " << i << ":\t" ;
	for(int j = 0; j<m; j++)
	cout  << a[i][j]<<"\t";
	}
        cout << endl;
for (i=0;i<n;i++)
{
sum_str=0;
sr_arif=0;
for (j=0;j<m;j++)
{
sum_str=sum_str+a[i][j];
}
cout<<"\n"<<sum_str;
sr_arif=sum_str/m;
cout<<" srednee arifmeticheskoe stroki "<<i+1<<" ravno "<<sr_arif<<" \n ";
}

_getch();
return 0;
}
Не знаю как определить минимальное значение средних арифметических.
Vovcodav612 вне форума Ответить с цитированием
Старый 20.11.2013, 03:07   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Вместо одной переменной sr_arif создавайте одномерный массив. Количество элемнтов в нем равно количеству срок 2-мерного массива.
Типа
Код:
int sr_arif[n];
type_Oleg вне форума Ответить с цитированием
Старый 20.11.2013, 03:23   #3
Vovcodav612
 
Регистрация: 19.11.2013
Сообщений: 6
По умолчанию С++ двумерный массив

Код:
#include<conio.h>
#include <iostream>
using namespace std;
const int n = 3;
const int m = 4;
int main()
{
int a[n][m] =
	{
	{3,4,3,2},
	{1,1,5,5},
	{7,30,1,6}
	};
	int i,j,sum_str,sr_arif,min;
	  cout << "\nVyhidniy masyv: ";
	for(int i = 0; i<n; i++)
	{
	cout << "\n Ryad " << i << ":\t" ;
	for(int j = 0; j<m; j++)
	cout  << a[i][j]<<"\t";
	}
        cout << endl;
for (i=0;i<n;i++)
{
sum_str=0;
sr_arif=0;
for (j=0;j<m;j++)
{
sum_str=sum_str+a[i][j];
}
cout<<"\n"<<sum_str;
sr_arif=sum_str/m;
cout<<" srednee arifmeticheskoe stroki "<<i+1<<" ravno "<<sr_arif<<" \n ";
}
 int sr_arif[n];
min=sr_arif;
for(i=1;i<3;i++)
if(sr_arif<min){
min=sr_arif;


}
printf("\nmin=%d",min);
_getch();
return 0;
}
Добавила в конце код
Код:
int sr_arif[n];
min=sr_arif;
for(i=1;i<3;i++)
if(sr_arif<min){
min=sr_arif;
Выдает ошибки:l3new.cpp(35):
error C2040: sr_arif: "int [3]" отличается по уровням косвенного обращения от "int"
l3new.cpp(36): error C2440: =: невозможно преобразовать "int" в "int"
l3new.cpp(39): error C2440: =: невозможно преобразовать "int" в "int"
Vovcodav612 вне форума Ответить с цитированием
Старый 20.11.2013, 03:31   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Нет, получается вы дважды объявили один и тот же идентификатор sum_str
Попробуйте убрать его из int i,j,sum_str,sr_arif,min; и добавьте след.строкой int sr_arif[n];
И там, где считаете sr_arif, и выводите на печать, используйте вместо него sr_arif[i]
type_Oleg вне форума Ответить с цитированием
Старый 20.11.2013, 03:43   #5
Vovcodav612
 
Регистрация: 19.11.2013
Сообщений: 6
По умолчанию

Код:
int i,j,sr_arif,min;
	int sr_arif[n];
	  cout << "\nVyhidniy masyv: ";
	for(int i = 0; i<n; i++)
	{
	cout << "\n Ryad " << i << ":\t" ;
	for(int j = 0; j<m; j++)
	cout  << a[i][j]<<"\t";
	}
        cout << endl;
for (i=0;i<n;i++)
{
[I]sum_str=0;
sr_arif=0;
for (j=0;j<m;j++)
{
[I]sum_str=[I]sum_str+a[i][j];
}
cout<<"\n"<<[I]sum_str;
sr_arif=[I]sum_str/m;
cout<<" srednee arifmeticheskoe stroki "<<i+1<<" ravno "<<sr_arif<<" \n ";
}

min=sr_arif;
for(i=1;i<3;i++)
if(sr_arif<min){
min=sr_arif;
}
printf("\nmin=%d",min);
_getch();
return 0;
}
Выдает ошибки:
error C2040: sr_arif: "int [3]" отличается по уровням косвенного обращения от "int"
l3new.cpp(26): error C2337: I: атрибут не найден
l3new.cpp(26): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "sum_str"
l3new.cpp(26): error C2065: sum_str: необъявленный идентификатор
l3new.cpp(30): error C2337: I: атрибут не найден
l3new.cpp(30): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "sum_str"
l3new.cpp(30): error C2065: sum_str: необъявленный идентификатор
l3new.cpp(30): error C3481: I: передаваемая переменная в лямбда-выражении не найдена
l3new.cpp(30): error C2061: синтаксическая ошибка: идентификатор "sum_str"
l3new.cpp(32): error C3481: I: передаваемая переменная в лямбда-выражении не найдена
l3new.cpp(32): error C2061: синтаксическая ошибка: идентификатор "sum_str"
l3new.cpp(33): error C3493: "sr_arif" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(33): error C3493: "sr_arif" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(33): error C3481: I: передаваемая переменная в лямбда-выражении не найдена
l3new.cpp(33): error C2061: синтаксическая ошибка: идентификатор "sum_str"
l3new.cpp(34): error C3493: "i" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(34): error C3493: "i" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(34): error C3493: "i" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(34): error C3493: "sr_arif" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(34): error C2088: <<: недопустимо для class
l3new.cpp(37): error C3493: "min" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(37): error C3493: "min" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(37): error C3493: "min" нельзя передать неявно, поскольку не задан режим передачи по умолчанию
l3new.cpp(37): error C2440: =: невозможно преобразовать "int" в "int"
l3new.cpp(40): error C2440: =: невозможно преобразовать "int" в "int"
Vovcodav612 вне форума Ответить с цитированием
Старый 20.11.2013, 03:54   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Я ошибаюсь, и вы мои ошибки копируете.
Вот так попробуйте
Код:
  int i,j,sum_str,min;
  int sr_arif[n];
	  cout << "\nVyhidniy masyv: ";
	for(int i = 0; i<n; i++)
	{
	cout << "\n Ryad " << i << ":\t" ;
	for(int j = 0; j<m; j++)
	cout  << a[i][j]<<"\t";
	}
        cout << endl;
for (i=0;i<n;i++)
{
 sum_str=0;
 for (j=0;j<m;j++)
{
 sum_str=sum_str+a[i][j];
}
cout<<"\n"<<sum_str;     //  а зачем это выводить ?
 sr_arif[i]=sum_str/m;
 cout<<" srednee arifmeticheskoe stroki "<<i+1<<" ravno "<<sr_arif<<" \n ";
}

min=sr_arif[0];
for(i=0;i<n;i++)
if(sr_arif[i]<min){
min=sr_arif[i];
}
printf("\nmin=%d",min);
_getch();
return 0;
}
type_Oleg вне форума Ответить с цитированием
Старый 20.11.2013, 04:01   #7
Vovcodav612
 
Регистрация: 19.11.2013
Сообщений: 6
По умолчанию

Спасибо большое. Программа заработала, только почему то вместо средних значений пишет"0031FBBC".
Изображения
Тип файла: png Безымянный.png (4.8 Кб, 58 просмотров)
Vovcodav612 вне форума Ответить с цитированием
Старый 20.11.2013, 04:20   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Вот я вляпался. Я же на Си не пишу обычно. Ну ладно, раз уж взялся, вот. Проверил, работает.
Код:
#include<conio.h>
#include<iostream>
using namespace std;
const int n = 3;
const int m = 4;
int main()
{
int a[n][m] =
	{
	{3,4,3,2},
	{1,1,5,5},
	{7,30,1,6}
	};
	 int i,j,sum_str;
	 double min,sr_arif[n];  // потому что среднее может оказаться и не целым
	  cout << "\nVyhidniy masyv: ";
	for(int i = 0; i<n; i++)
	{
	cout << "\n Ryad " << i << ":\t" ;
	for(int j = 0; j<m; j++)
	cout  << a[i][j]<<"\t";
	}
        cout << endl;
for (i=0;i<n;i++)
{
 sum_str=0;
 for (j=0;j<m;j++)
{
 sum_str=sum_str+a[i][j];
}
 sr_arif[i]=(double)sum_str/m;   // чтобы не округляло. См. приведение типов
 cout<<" srednee arifmeticheskoe stroki "<<i+1<<" ravno "<<sr_arif[i]<<" \n "; // индекс 
}

min=sr_arif[0];
for(i=0;i<n;i++)
if(sr_arif[i]<min){
min=sr_arif[i];
}
cout<<"\nmin= "<<min;   // вместо printf
_getch();
return 0;
}
type_Oleg вне форума Ответить с цитированием
Старый 20.11.2013, 04:30   #9
Vovcodav612
 
Регистрация: 19.11.2013
Сообщений: 6
По умолчанию

У меня тоже заработало. Спасибо большое
Vovcodav612 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухмерный массив Kemb Общие вопросы C/C++ 6 14.11.2011 11:11
двухмерный массив tem_80 Общие вопросы C/C++ 4 05.02.2011 13:22
С# Двухмерный массив Dron17 Общие вопросы C/C++ 2 12.10.2010 10:58
Двухмерный массив xtraSHAD0W Паскаль, Turbo Pascal, PascalABC.NET 2 22.04.2008 18:17
Двухмерный массив Atheist Общие вопросы C/C++ 4 22.11.2007 14:05