|
|
|
|
|
для: cheops
(28.01.2007 в 19:13)
| | У меня код вообще в борланд си не работает, полмассива не обнуляется))))) | |
|
|
|
|
|
|
|
для: alex19921992
(28.01.2007 в 18:02)
| | Двумерный массив можно передать следующим образом
#include <iostream>
using namespace std;
int funct(int **arr);
int main()
{
int arr[2][5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *prt = &arr[0][0];
funct(&prt);
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 5; j++) cout << arr[i][j] << endl;
}
return 0;
}
int funct(int **arr)
{
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 5; j++) arr[i][j]++;
}
return 0;
} |
| |
|
|
|
|
|
|
|
для: alex19921992
(28.01.2007 в 18:02)
| | Массив в функцию можно передать следующим образом
#include <iostream>
using namespace std;
int funct(int *arr, int count);
int main(int argc, char *argv[])
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
funct(arr, sizeof(arr)/sizeof(arr[0]));
for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) cout << arr[i] << endl;
return 0;
}
int funct(int *arr, int count)
{
for(int i = 0; i < count; i++) arr[i]++;
return 0;
} |
| |
|
|
|
|
|
|
|
для: cheops
(28.01.2007 в 17:05)
| | А может скажете, как в принципе передать в функцию массив или отладите мою прогу?
(ее смысл - имитация кинотеатра, покупки/бронирования мест ) | |
|
|
|
|
|
|
|
для: alex19921992
(28.01.2007 в 13:28)
| | int * - это указатель на значение, т.е. по сути адрес значения можно объявлять указатель на указатель int** и т.д. | |
|
|
|
|
|
|
|
для: cheops
(28.01.2007 в 13:19)
| | Да что же там за звездочки такие? объясните наконец как передать массив в функцию нормально! | |
|
|
|
|
|
|
|
для: alex19921992
(28.01.2007 в 12:06)
| | int **a[10][16] на самом деле является int ****a, если вы хотите передать двумерный массив используйте в качестве аргумента фукнкции просто int **a. | |
|
|
|
|
|
|
| Почему не работает? надо передать 2мерный массив в функцию, чтоб она могла изменять
значения элементов массива! размер массива фиксированный 10х16
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int render(int **a[10][16])
{
for(int i=0;i<10;i++)
for(int j=0;j<16;j++)
{
setcolor(15);
rectangle(10+i*50,10+j*25,10+i*50+40,10+j*25+20);
int color;
if (a[i][j]==0)color=2;
if (a[i][j]==1)color=3;
if (a[i][j]==2)color=4;
setfillstyle(1,color);
floodfill(10+i*50+1,10+j*25+1,15);
}
for(j=0;j<16;j++)
{
char s[2];
itoa(j+1,s,10);
setcolor(15);
outtextxy(505,15+j*25,s);
}
return 0;
}
//-----------
int clearhall(int **a[10][16])
{
for(int i=0;i<10;i++)
for(int j=0;j<16;j++)
{
a[i][j]=0;
}
return 0;
}
//-----------
int drawrame(int i,int j,int c)
{
setcolor(c);
rectangle(10+i*50,10+j*25,10+i*50+40,10+j*25+20);
return 0;
}
//-----------
int changehall(int **hall[10][16])
{
int i=1,j=1;
int nowhall=1;
// int hall[10][16];
// i=1;j=1;
render(hall);
drawrame(i-1,j-1,1);
char ch=0;
while (ch!=27)
{
ch=getch();
if(ch=='H'){drawrame(i-1,j-1,15);if(j>1)j--; drawrame(i-1,j-1,1);}
if(ch=='K'){drawrame(i-1,j-1,15);if(i>1)i--; drawrame(i-1,j-1,1);}
if(ch=='P'){drawrame(i-1,j-1,15);if(j<16)j++;drawrame(i-1,j-1,1);}
if(ch=='M'){drawrame(i-1,j-1,15);if(i<10)i++;drawrame(i-1,j-1,1);}
if(((ch=='Z')||(ch=='z'))&&(hall[i-1][j-1]!=2)){hall[i-1][j-1]=2;render(hall);drawrame(i-1,j-1,1);}
if(((ch=='X')||(ch=='x'))&&(hall[i-1][j-1]==0)){hall[i-1][j-1]=1;render(hall);drawrame(i-1,j-1,1);}
if(((ch=='C')||(ch=='c'))&&(hall[i-1][j-1]!=0)){hall[i-1][j-1]=0;render(hall);drawrame(i-1,j-1,1);}
}
return 0;
}
//----------
int mainmenu(void)
{
return 0;
}
//----------
int main(void)
{
int gd,gm;
gd=DETECT;
initgraph(&gd,&gm,"");
//mainmenu();
int h[10][16];
changehall(h);
closegraph();
} | |
|
|
|
|