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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2009, 14:17   #1
brakoso
Новичок
Джуниор
 
Регистрация: 23.11.2009
Сообщений: 3
Вопрос расскажите, пожалуйста, что исправить.

написал программку, а в ней не работает вывод через функцию отдельную, а когда это переставляю в main() - все работает. но интересен именно вариант в отдельной функции. пробовал в 2х компиляторах - не работает, очевидно, я что-то делаю не так. расскажите, пожалуйста.

Код:
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int i, j, k, c, d_r_arr[3];
int init_btl(int numm, int numr)
{
	std::cout<<"how many bottles of milk do you have?";
	std::cin>>numm;
	numr=pow(numm, 1.0/3);
	std::cout<<"you need"<<numr<<"rabbits";
	return 0;
}
void d_bot_gen(int a1, int a2, int a3)
{
	srand(time(NULL));
	a1=rand()%9;
	a2=rand()%9;
	a3=rand()%9;
}
int f_rab(int ***arr, int t)
{
	for (i=0;i<3;i++)
		d_r_arr[i]=-1;

	for (c=0;c<t;c++)
		for (i=0;i<t;i++)
	        for (j=0;j<t;j++)
				for (k=0;k<t;k++)
				{	
					if ((arr[c][j][k]==0)||(arr[i][c][k]==0)||(arr[i][j][c]==0))
						if (d_r_arr[0]==-1) d_r_arr[0]=c+1;
							else d_r_arr[1]=c+1;
								else d_r_arr[2]=c+1;
				}
	return 0;
}
int arr_gen(int ***arr, int t)
{
	int c1=0, c2=0, c3=0;

	(int***)arr=new int **[t];
	for (i=0;i<t;i++)
    {
		arr[i]=new int *[t];
        for (j=0;j<t;j++)
        {
			arr[i][j]=new int [t];
			for (k=0;k<t;k++)
				arr[i][j][k]=1;
        }
    }
	void d_bot_gen(int c1, int c2, int c3);
	arr[c1][c2][c3]=0;
	return 0;
}
void milk_out(int ***arr, int t)
{
	printf("трехмерный массив молочных бутылок:");
	for (i=0;i<t;i++)
	{	
		printf("%d плоскость", i+1);
		for (j=0;j<t;j++)
		{
			for (k=0;k<t;k++)
				printf("%d ", arr[i][j][k]);
			puts("/n");
		}
	}
}
void rab_out()
{
	int l;
	printf("номера отравившихся кроликов:");
	for (l=0;l<3;l++)
	{
		if 	(d_r_arr[l]!=-1)
			std::cout<<d_r_arr[l]<<" ";
	}
}
void main()
{
	int ***b, qm, qr;
	int init_btl(int qm, int qr); //спрашиваем, сколько бутылок молока
	int arr_gen(int ***b, int qr); //генерируем трехмерный массив и отравленную бутылку
	int f_rab(int ***b, int qr); //ищем, какие кролики отравятся
	_getch(); //ждем нажатия <Enter>
	void milk_out(int ***b, int qr); //выводим массив
	_getch(); //ждем нажатия <Enter>
	void rab_out(); //выводим номера кроликов
	_getch(); //ждем нажатия <Enter>
}
brakoso вне форума Ответить с цитированием
Старый 23.11.2009, 14:21   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

о господи.... кто то пытается описать функцию внутри другой, тут же попытка определения функциЙ внутри другой...
Код:
int ***b
вообще убило)))

парниш, прочитай главу Функции в любом учебнике по Си, посмотри на тамошние примеры работы с функциями и сравни со своими. Твой вопрос отпадет
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 вне форума Ответить с цитированием
Старый 23.11.2009, 15:09   #3
brakoso
Новичок
Джуниор
 
Регистрация: 23.11.2009
Сообщений: 3
По умолчанию

у Страуструпа в книге встречается вот такая вещь
Код:
int **a
потому что же убийственного в
Код:
int ***b
но я, спасибо, почитаю и про динамические массивы снова и про функции.
а описать я там не пытаюсь. насколько помню, там я всего лишь вызывал одну функцию из другой. это разве плохо?
можно ли подробней?
brakoso вне форума Ответить с цитированием
Старый 23.11.2009, 15:25   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2brakoso
ну просто я нечасто вижу такую запись - ***b, вот и в шоке) сначала показалось, что ты с указателями заигрался, не заметил, что у тебя трехмерный массив, хотя и непонятно, для чего).

Цитата:
а описать я там не пытаюсь. насколько помню, там я всего лишь вызывал одну функцию из другой. это разве плохо?
Цитата:
void main()
{
int ***b, qm, qr;
int init_btl(int qm, int qr); //спрашиваем, сколько бутылок молока
int arr_gen(int ***b, int qr); //генерируем трехмерный массив и отравленную бутылку
int f_rab(int ***b, int qr); //ищем, какие кролики отравятся
_getch(); //ждем нажатия <Enter>
void milk_out(int ***b, int qr); //выводим массив
_getch(); //ждем нажатия <Enter>
void rab_out(); //выводим номера кроликов
_getch(); //ждем нажатия <Enter>
}
так функции не вызываются, это называется описание функций для того, чтобы после этого их определить.

вызываются функции например так:
Цитата:
init_btl(qm, qr);
arr_gen(b, qr);
f_rab(b, qr);
milk_out(b, qr);
rab_out();
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 вне форума Ответить с цитированием
Старый 23.11.2009, 15:28   #5
brakoso
Новичок
Джуниор
 
Регистрация: 23.11.2009
Сообщений: 3
По умолчанию

О!
А можно ли этот 3хмерный массив описать просто вот так:
Код:
int ***arr=(int ***)new int[t][t][t]
?

Цитата:
Сообщение от pproger Посмотреть сообщение
2brakoso
ну просто я нечасто вижу такую запись - ***b, вот и в шоке) сначала показалось, что ты с указателями заигрался, не заметил, что у тебя трехмерный массив, хотя и непонятно, для чего).





так функции не вызываются, это называется описание функций для того, чтобы после этого их определить.

вызываются функции например так:
ААААА!!! Спасибо большое!!!

Последний раз редактировалось Stilet; 23.11.2009 в 15:47.
brakoso вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расскажите пожалуйста как делаються 2D игры Дима я Мультимедиа в Delphi 2 26.08.2009 18:10
Что исправить в коде? lider24816 Помощь студентам 6 26.05.2009 19:31
Подскажите что исправить в коде Grisha248 Помощь студентам 5 25.05.2009 03:00
Что значит ошибка и как исправить? Pirotexnik Общие вопросы Delphi 2 26.03.2009 19:52
Народ расскажите кто нужен для создания игры и кто что делает Kosoy135 Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.09.2007 18:59