Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при компиляции 
:(
    Опции темы
olegarh
Дата 25.11.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.2.2010

Репутация: нет
Всего: нет



c:\users\админ\documents\visual studio 2008\projects\matrica\matrica\matrica.cpp(8) : error C2109: для индекса требуется массив или указатель
Код программы

main.cpp
Код

#include <iostream>
using namespace std;
int main(){
    int i,j,z;
    int const H=5, C=5;
    int t[H][C];
    void matrica (H, C, t[H][C]);
    for (i=0; i<H; i++,cout<<'\n')
        for(j=0;j<C;j++)
            cout<<t[i][j]<<' ';
    return 0;
}
            



matrica.cpp
Код

void matrica (int const M, int const N, int *arr){
    int x,y,z;
    for (x=0; x<N; z++,z=0)
        for(y=0;y<=x;y++){
            for (z=0; z<=x;z++,y++)
                arr[x][y]=z+1;
            for (z>x; z<N; z++,y++)
                arr[x][y]=0;
        }
}


помогите пожалуйста)
PM MAIL   Вверх
bsa
Дата 25.11.2010, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



на седьмой строке у тебя не вызов функции, а ее объявление. причем, отличное от определения в matrica.cpp. Приведи их к общему виду и вынеси объявление из main. Если тебе нужно вызывать функцию (а тебе судя по всему это и нужно), то это нужно делать так: matrica(H, C, t);
но у тебя будут все равно проблемы... 
Читай тут про массивы. Так как в твоем случае должен быть именно динамический массив. Или H придется зафиксировать и указать при объявлении функции: void matrica(int C, int *t[H]);
PM   Вверх
Crafty
Дата 25.11.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Код

void matrica (int const M, int const N, int *arr){ // передаете M, но нигде её неиспользуете.
    int x,y,z;
    for (x=0; x<N; z++,z=0)  // для чего тут z увеличиваете на единицу, а потом обнуляете?
        for(y=0;y<=x;y++){
            for (z=0; z<=x;z++,y++)
                arr[x][y]=z+1;
            for (z>x; z<N; z++,y++)  // для чего здесь z>x 
                arr[x][y]=0;
        }
}


PM MAIL   Вверх
olegarh
Дата 25.11.2010, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.2.2010

Репутация: нет
Всего: нет




Код

void matrica (int const M, int const N, int *arr){ // передаете M, но нигде её неиспользуете.
    int x,y,z;
    for (x=0; x<N; z++,z=0)  // для чего тут z увеличиваете на единицу, а потом обнуляете?// тут x увеличивается на 1 это опечатка
        for(y=0;y<=x;y++){
            for (z=0; z<=x;z++,y++)
                arr[x][y]=z+1;
            for (z>x; z<N; z++,y++)  // для чего здесь z>x //что бы все элементы с индексом больше x были равны 0
                arr[x][y]=0;
        }
}

Это все не те ошибки! это логические ошибки! а мне нежно исправить эту
c:\users\админ\documents\visual studio 2008\projects\matrica\matrica\matrica.cpp(8) : error C2109: для индекса требуется массив или указатель
PM MAIL   Вверх
bsa
Дата 25.11.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



olegarh, int *arr - это одномерный массив. когда ты делаешь arr[x] то это получается число. поэтому когда ты делаешь arr[x][y] и возникает ошибка.
PM   Вверх
olegarh
Дата 25.11.2010, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 6.2.2010

Репутация: нет
Всего: нет



а как двумерный передать в функцию?
PM MAIL   Вверх
Crafty
Дата 25.11.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Цитата(olegarh @  25.11.2010,  17:20 Найти цитируемый пост)
а как двумерный передать в функцию? 

int **arr - это если динамический массив, а если статический, то 
Код

int arr[][5] // вместо 5 - вместо 5 подставить вторую размерность


Это сообщение отредактировал(а) Crafty - 25.11.2010, 17:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.