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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2010, 22:31   #1
vimpel
Новичок
Джуниор
 
Регистрация: 29.03.2010
Сообщений: 1
Печаль из тела проги не вызывается функция

Функция pokaz не вызывается из тела проги, дает вот такие ошибки
error C2087: 'mas' : missing subscript
error C2664: 'pokaz' : cannot convert parameter 1 from 'char [11][11]' to 'char [][1]'


Код:
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;

void pokaz(char mas[][], int n, int g)
{
for(int i=0; i<n; i++){
   for(int z=0; z<g; z++)
   cout<<mas[i][z];
   cout<<"\n";}
}
void main()
{setlocale (LC_ALL, "RUS");
const int b=11; char igrok[b][b], komp[b][b], kompkorabl [b][b];
for(int i=0; i<b; i++)
   for(int d=0; d<b; d++)
   igrok[i][d]='*';

pokaz(igrok, b, b);
}
В чем дело?
vimpel вне форума Ответить с цитированием
Старый 29.03.2010, 22:34   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Сделайте аргументом указатель.
Код:
void pokaz(char** mas, int n, int g)
{
for(int i=0; i<n; i++){
   for(int z=0; z<g; z++)
   cout<<mas[i][z];
   cout<<"\n";}
}
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 29.03.2010, 23:18   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

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

int (*ptr)[n];

в идеале, это делают вот так (естесно, в моем идеале):

Код:
#include <iostream>
#include <string.h>

using namespace std;

const int b = 11;

void pokaz(char (*mas)[b], int n)
{
	for (int i = 0; i < n; i++) {
		for (int z = 0; z < b; z++) {
			cout << mas[i][z] << " ";
		}
		cout << endl;
	}
}

int main()
{
	char igrok[b][b];

	memset(igrok, '*', sizeof(igrok));
	pokaz(igrok, b);

	return 0;
}
можно входящий параметр описать и int mass[][11] (если так понятнее), но все равно компилятор будет считать, что это int (*mass)[11];
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 30.03.2010 в 00:32.
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две проги. Порезка труб и движения коня по шахматной доске. По какому принципу работают такие проги? sadf Общие вопросы C/C++ 4 06.03.2010 20:04
Форма не закрывается когда из под нее вызывается процедура1 Maddy Общие вопросы Delphi 10 29.01.2010 19:24
Функция не вызывается с другого Unita Seran4ek Общие вопросы Delphi 7 03.01.2010 18:55
не вызывается Paint в borland 5 primeplus Общие вопросы C/C++ 4 08.08.2009 08:14
Не вызывается процедура. Что не так? KingMaker Общие вопросы Delphi 4 12.04.2009 00:59