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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2014, 16:54   #1
Епифан Суровый
 
Регистрация: 16.03.2014
Сообщений: 5
По умолчанию C++ Помогите найти ошибку

Код:
string Input(string mass[100][50],int n, int m)
{
	int i, j;
	i = 0;
	while (i < n)
	{
		j = 0;
		while (j < m)
		{
			cin >> mass[i][j];
			j = j + 1;
		}
		i = i + 1;
	}
	return mass[100][50];
}
Массив вводится нормально, но когда функция должна его вернуть, выдает ошибку, не могу понять в чем дело, помогите пожалуйста.
Епифан Суровый вне форума Ответить с цитированием
Старый 09.05.2014, 18:26   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Просто интересно... А как вы вызываете функцию? И вообще что хотите передать, что получить?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 09.05.2014, 18:45   #3
Епифан Суровый
 
Регистрация: 16.03.2014
Сообщений: 5
По умолчанию

Разработать программу, которая вводит матрицу из n строк и m столбцов (n<=100, m<=50) и упорядочивает элементы матрицы. Правило упорядочивания определяется вариантом. Программа должна предостав-лять пользователю выбор типа элементов матрицы: целого или строкового. Операции ввода, вывода и упорядочивания элементов матрицы должны быть реализованы в виде перегруженных функций.

Разместить все элементы с заданным значением в левой верх-ней области матрицы (заполняя ими матрицу по столбцам сверху вниз), а остальные – в правой нижней области

Вот такое у меня задание, это функция ввода матрица для строкового типа, и почему-то я не могу из нее вернуть массив.
Епифан Суровый вне форума Ответить с цитированием
Старый 09.05.2014, 18:50   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
void Input(string& mass[100][50],int n, int m)
{
	int i, j;
	i = 0;
	while (i < n)
	{
		j = 0;
		while (j < m)
		{
			cin >> mass[i][j];
			j = j + 1;
		}
		i = i + 1;
	}
}

Код:
string[100][50] Input(string mass[100][50],int n, int m)
{
	int i, j;
	i = 0;
	while (i < n)
	{
		j = 0;
		while (j < m)
		{
			cin >> mass[i][j];
			j = j + 1;
		}
		i = i + 1;
	}
	return mass;
}
в последнем не уверен..
Poma][a вне форума Ответить с цитированием
Старый 09.05.2014, 19:27   #5
Епифан Суровый
 
Регистрация: 16.03.2014
Сообщений: 5
По умолчанию

Не, так она даже компилироваться не хочет
Епифан Суровый вне форума Ответить с цитированием
Старый 09.05.2014, 20:19   #6
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Мне больше нравится так (целочисленный вариант)
Код:
void Input(int mass[][], int n, int m)
{
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < m; j++) {
			cin >> mass[i][j];
		}
	}
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 09.05.2014, 20:47   #7
Епифан Суровый
 
Регистрация: 16.03.2014
Сообщений: 5
По умолчанию

Ну это не принципиально, надо понять почему целочисленные функции работают, а строковая нет((
Епифан Суровый вне форума Ответить с цитированием
Старый 09.05.2014, 20:56   #8
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Строку хотите...
Код:
void Input(char mass[][], int n, int m)
{
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < m; j++) {
			cin >> mass[i][j];
		}
	}
}
А чтобы предусмотреть передачу целочисленных значений и строк
Код:
template< typename T >
void Input(T mass[][], int n, int m)
{
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < m; j++) {
			cin >> mass[i][j];
		}
	}
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 09.05.2014 в 20:59.
Bugrimov вне форума Ответить с цитированием
Старый 09.05.2014, 21:31   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А в чем смысл? После завершения процедурами массив же не изменится!
Poma][a вне форума Ответить с цитированием
Старый 10.05.2014, 13:20   #10
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Poma][a вы правы...
Немного подшаманим.
Код:
#include <iostream>
#include <cstdlib>
#include <locale>

using namespace std;

const int n = 4;
const int m = 4;

void Input(int [n][m]);

int main() {
	
	int mass[n][m];

	setlocale(0, "rus");

	cout << "\n Ввод значений в массив:" << endl;
	Input(mass);
	
	cout << "\n Результат:" << endl;
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < m; j++) {
			cout << " " << mass[i][j];
		}
	cout << endl;
	}

	return 0;
}

void Input(int mass[n][m])
{
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < m; j++) {
			cout << " [" << i << "][" << j << "] - ";
			cin >> mass[i][j];
		}
	}
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
помогите найти ошибку deadh5n1 Помощь студентам 1 13.03.2009 20:56
Помогите найти ошибку Manchester Помощь студентам 3 09.02.2009 22:26
Помогите найти ошибку Anat JavaScript, Ajax 12 28.01.2009 23:50
помогите найти ошибку MyQwErTy Помощь студентам 1 05.11.2008 21:24