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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2015, 17:41   #1
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
Восклицание Ошибка в программе С++

Добрый день!
Подскажите пожалуйста, писала программу, но на протяжении всей программы для переменной j выдает ошибку: error C2109: для индекса требуется массив или указатель
Код:
#include <stdio.h>
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
int Input(int *A)
{
	setlocale(LC_CTYPE, "");
	int count = 0, sum = 0, i, j;
	printf("Введите 25 элементов массива\n");
	for (int i = 0; i < 5; ++i) {
		for (int j = 0; j < 5; ++j) {
			cin >> A[i][j];
		}
	}
	cout << endl;
	for (int i = 0; i < 5; i++){
		for (int j = 0; j < 5; j++) {
			cout << " " << A[i][j];
			count = count + 1;
			if (count >= 5) {
				cout << endl;
				count = 0;
			}
		}
	}
	system("pause");
	return 0;
}
int MasX(int *A)
{
	int x[5];
	int *X =&x[5];
	int i, j;
	for (int i = 0; i < 5; i++)
	{
		X[i] = 0;
		int sum = 0;
		bool Flag1 = true;
		bool Flag2 = true;
		for (int j = 0; j < 5; j++)
		{
			sum += A[i][j];
			if (A[i][j] >= 0){
				Flag1 = false;
			}
			else {
				if (A[i][j] <= 0)
					Flag2 = false;
			}
		}
		if (Flag1 || Flag2)
			X[i] = sum;
	}
	for (int i = 0; i < 5; i++)
		cout << " " << X[i];
	system("pause");
	return 0;
}
int main()
{
	int a[5][5];
	int *A=&a[5][5];
		Input(A);
        MasX(A);
	system("pause");
}
Maray вне форума Ответить с цитированием
Старый 20.03.2015, 21:08   #2
Aleksander550
Форумчанин
 
Регистрация: 07.01.2014
Сообщений: 124
По умолчанию

попробуйте указать размер принимаемых массивов в аргументах функций
Код:
int Input(int A[5][5]){
.....
}
int MasX(int A[5][5]) {
.....
}
int main() {
    int a[5][5];
    // int *A=&a[5][5];
    Input(a);
    MasX(a);
    system("pause");
}
или делайте массивы динамическими;
или одномерный массив на 25 элементов и делите его блоками по 5 элементов(псевдодвумерный массив)
#define TRUE FALSE //счастливой отладки
Aleksander550 вне форума Ответить с цитированием
Старый 20.03.2015, 22:46   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,606
По умолчанию

Указатель двойной int** A для того, чтобы можно было обращаться по второму индексу.. Прототипы тогда

Код:
int Input(int **A);int MasX(int **A);
тогда main будет иметь вид
Код:
{
int** a;
int i;
a = new int*[5];
for(i=0;i<5;i++)
a[i]=new int[5];
Input(a);
MasX(a);
system("pause");
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе Си jula939393 Помощь студентам 6 11.04.2013 21:05
ошибка в программе MKS23 Помощь студентам 1 13.06.2012 20:36
Ошибка в программе CraZZZy-GameRRR Общие вопросы Delphi 2 14.02.2011 02:22
Ошибка в программе. ZeroCount Помощь студентам 2 18.12.2010 20:33
Ошибка в программе w6120w Общие вопросы C/C++ 3 04.10.2010 19:37