Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите найти ошибку

Ответить
Настройки темы
C/C++ - [решено] Помогите найти ошибку

Аватара для COM-BAT

Пользователь


Сообщения: 84
Благодарности: 4


Конфигурация

Профиль | Отправить PM | Цитировать


Вот код
Код: Выделить весь код
#include <iostream>
#include <string>
using namespace std;
int main()
{
	string com;
	int matrix[9][9]={0};
	int x=9;
	int y=9;
	int v=9;
	int ix, iy, iv;
	do
	{
		cin>>com;
		if(com=="in"){cin>>ix>>iy>>iv; matrix[ix][iy]=in(ix, iy, iv, x, y, v);};
		if(com=="out"){cin>>ix>>iy; if(out(ix, iy, x, y)){cout<<matrix[ix][iy]<<endl<<"Sucesful"<<endl;};}
	}while(true);

}
int in(int ix, int iy, int iv, int x, int y, int v)
{
	if(!((ix<0)||(ix>x)||(iy<0)||(iy>y))){
		if(((iv<0)||(iv>9))){cout<<"So big or so smal value!"<<endl;}
		else{cout<<"Sucesful"<<endl; return iv;};}
	else{cout<<"End of matrix!"<<endl;};
}
bool out(int ix, int iy, int x, int y)
{
		if(!((ix<0)||(ix>x)||(iy<0)||(iy>y))){return true;}
	else{cout<<"End of matrix!"<<endl;};
}

Отправлено: 16:42, 15-01-2013

 

Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


Ну код и что? Компилируется нормально, выводит ноль в консоль. Что искать то?

Отправлено: 17:02, 15-01-2013 | #2



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

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


Аватара для COM-BAT

Пользователь


Сообщения: 84
Благодарности: 4

Профиль | Отправить PM | Цитировать


Вот что говорит дядюшка компилятор
1>c:\documents and settings\loner\мои документы\visual studio 2010\projects\m3\m3\m3.cpp(15): error C3861: in: идентификатор не найден
1>c:\documents and settings\loner\мои документы\visual studio 2010\projects\m3\m3\m3.cpp(16): error C3861: out: идентификатор не найден

Всё я уже сам нашол ошибку
Я не добавил прототипоа функций

-------
"Нет никакой гарантии, что Windows сохранит лидерство"©Bill Gates


Отправлено: 17:15, 15-01-2013 | #3


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Несколько замечаний по технике программирования. Есть такое понятие как "магическая цифра", у вас размер двухмерного массива равен 9, переменным y, x, v присвоено число девять. Потом труднее будет понять что является размером, а что значением. Всегда старайтесь использовать переменные.
Код: Выделить весь код
...
   const int row = 9;
   const int column = 9;
   int matrix[row][column] = {0};
...
Теперь такой момент, в условиях у вас слишком много скобок, это не ошибка, но они избыточные, достаточно написать
Код: Выделить весь код
...
   if(!(ix<0 || ix>x || iy<0 || iy>y)){
...
И наконец конструкция ввода\вывода
Цитата COM-BAT:
Код: Выделить весь код
...
do
 {
 cin>>com;
 if(com=="in"){cin>>ix>>iy>>iv; matrix[ix][iy]=in(ix, iy, iv, x, y, v);};
 if(com=="out"){cin>>ix>>iy; if(out(ix, iy, x, y)){cout<<matrix[ix][iy]<<endl<<"Sucesful"<<endl;};}
 }while(true);
...
»
Ввод массива
Код: Выделить весь код
...
   const int row = 9;
   const int column = 9;
   int matrix[row][column] = {0};

   for(int i = 0; i < row; i++){
      for(int j = 0; j < column; j++){
         cout << "Matix[" << i << "][" << j << "] = "; // Для красоты ввода
         cin >> matrix[i][j];
        }
     }
...
Вывод массива
Код: Выделить весь код
...
   const int row = 9;
   const int column = 9;
   int matrix[row][column] = {0};

   for(int i = 0; i < row; i++){
      for(int j = 0; j < column; j++){
         cout << matrix[i][j] << endl;
        }
     }
...

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:46, 15-01-2013 | #4


Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


На будущее, когда просите найти ошибку, сообщайте все, что вам о ней известно.

Цитата COM-BAT:
Вот что говорит дядюшка компилятор
1>c:\documents and settings\loner\мои документы\visual studio 2010\projects\m3\m3\m3.cpp(15): error C3861: in: идентификатор не найден
1>c:\documents and settings\loner\мои документы\visual studio 2010\projects\m3\m3\m3.cpp(16): error C3861: out: идентификатор не найден »
Действительно. У меня чего то MinGW Developer Studio чудит. Мало того что ошибку компиляции не выдало, дак еще и компилирует непонятно как. Попробовал скомпилировать g++, получил аналог этих ошибок и еще вот такое:
Код: Выделить весь код
test.cpp: In function ‘bool out(int, int, int, int)’:
test.cpp:17: warning: control reaches end of non-void function
test.cpp: In function ‘int in(int, int, int, int, int, int)’:
test.cpp:11: warning: control reaches end of non-void function
Это означает, что в некоторых ветках условных операторов не указан оператор return. Такие вещи нужно исправлять.

Цитата COM-BAT:
if(com=="in"){cin>>ix>>iy>>iv; matrix[ix][iy]=in(ix, iy, iv, x, y, v);}; »
Лучше не жалеть строчек на нормальное форматирование.

Код: Выделить весь код
do 	
...
while(true);
Тут у вас бесконечный цикл. Добавьте возможность его завершения.


Слов smal и sucesful в английском языке нет, есть small и successful. А фраза "So big or so small value!" переводится "Такое большое или такое маленькое значение", как минимум, нужно использовать too (слишком) вместо so (итак, такой).
Если собираетесь профессионально заниматья программированием, то подучите английский, он очень пригодится.


Цитата Drongo:
в условиях у вас слишком много скобок »
Весьма спорное замечание. Избыточные скобки в данном случае позволяют меньше задумываться о приоритете операций.

Отправлено: 09:57, 16-01-2013 | #5


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата torauma:
Весьма спорное замечание. Избыточные скобки в данном случае позволяют меньше задумываться о приоритете операций. »
В данном случае они излишни. Как ни крути, здесь нет двойных условий и приоритета проверки какого либо из них когда нужно вычислить сначала какую-то одну часть, и\или вторую. Здесь 4 сравнения, с одной операций отрицания всей проверки.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 14:33, 16-01-2013 | #6


Пользователь


Сообщения: 121
Благодарности: 35

Профиль | Отправить PM | Цитировать


Drongo, я и не утверждаю, что они здесь необходимы, просто при их наличии не нужно даже задумываться, что имеет больший приоритет сравнение или "или". Конечно, не трудно догадаться у чего приоритет выше, но ситуации бывают и запутанее. Ну и читать условие когда в нем сравнения выделены скобками легче (по крайней мере мне). Хотя в вашей записи тоже все читается вполне легко, так как сравнения отделены пробелами, но вот если отделить еще и переменные от заков сравнения (при более длинных именах переменных это имеет смысл), то читать станет сложнее. Вобщем, тут спор скорее о стиле оформления кода, а в этом вопросе каждый волен делать как ему удобнее, в разумных пределах конечно.

Отправлено: 15:17, 16-01-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите найти ошибку

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите найти ошибку кэп Программирование и базы данных 3 06-11-2012 09:16
C/C++ - Помогите найти ошибку pashazt Программирование и базы данных 1 05-11-2012 23:40
C/C++ - Помогите найти ошибку Bokslaitner Программирование и базы данных 3 01-11-2012 22:03
помогите найти ошибку igor7 Программирование в *nix 1 07-02-2011 09:55
C/C++ - Помогите найти ошибку KEKS-KEKS Программирование и базы данных 9 01-11-2007 20:30




 
Переход