[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Зачем можно узнать?
    Можно оператором выбора: делим целое число на абсолютное значение (>0) и сравниваем с 1 и -1.
    Хотя этот же оператор выбора и есть разновидность условного оператора...
     
    #3081 Fata1ex, 10 Jun 2009
    Last edited: 10 Jun 2009
  2. ino222

    ino222 New Member

    Joined:
    1 Jun 2009
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    Есть горящий вопрос-сегодня нужно закончить пару кнопок в один блог, кнопки-флэш, сразу оговорюсь, я не пишу на AS, я работаю программно, но подобрать не могу необходимую функцию, а требуется следующее:
    -кнопка прозрачная(уже есть!)
    -клик по кнопке-звук треснувшего камня(уже есть!)
    ---------------------------------------------------------------------
    -нужно визуально отобразить треснувшую кнопку-как расходятся линии разлома в течении 1 сек., потом уже переход по ссылке(((((
    пипец башку сломал-нужно к вечеру уже доделать
    Кто-то, что-то актуальное может посоветовать?

    пипец башку сломал
     
  3. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
  4. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Это что-то типа...... получить ответ не задав вопрос....
    Для этого нужно принять определенные вещества и выйти на новый уровень общения с машиной.... )))
     
  5. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    Вот весь код, там где закоментировано надо сделать проверку, а лучше вообще функцией, нужна она т.к. если вводить не число то цикл зацикливается основной, может и не надо атуи, я за етм и попросил помощи, чтобы вы мне подсказали как сделать
    Code:
    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    using namespace std;
    void main(){
    	void Info(char str[100],int dl_str,bool sound=false);
    	Info("### Welcome to the BK! ###",31,true);
    	//------------------------Переменные-------------------------
    	char name[80];//Имя персонажа!
        cout<<"Enter your name!\t";
    	cin>>name;
    	enum {warrior=1,mage=2,priest=3,ranger=4};							
    	int user_class;												//Какой класс выбран! 
    	char proverka_na_vubor_classa;					//проверка на уверенность в выборе класса
    	bool prov_na_simvol=true;						//проверка на правильность выбора класса
    	bool vtoraya_proverka_na_vubor_classa=true;		//проверка на уверенность в выборе класса
    
    	while(vtoraya_proverka_na_vubor_classa){
    		system("cls");
    		cout<<"Choose your class!\n\n*** Warrior ***\t- 1\n*** Mage ***\t- 2"
    			<<"\n*** Priest ***\t- 3\n*** Ranger ***\t- 4\n\n";
    		//проверка на ввод числа а не чегото другого, такоеже сделать 
    		//while(true){
    		//	cin>>enter_user_class;
    		//	user_class=atoi(enter_user_class);
    		//	if(user_class==1||user_class==2||user_class==3||user_class==4){
    		//		break;
    		//	}
    		//	enter_user_class="";
    		//}
    		cin>>user_class;
    		switch(user_class){
    			case warrior:
    				system("cls");
    				cout<<"You choose warrior!\nYour standart parametrs!\n\n**************************\n"
    					<<"int - 0\npower - 6\nagility - 0\nstamina - 4\n"
    					<<"*************************\n";
    				break;
    			case mage:
    				system("cls");
    				cout<<"You choose mage!\nYour standart parametrs!\n\n**************************\n"
    					<<"int - 8\npower - 8\nagility - 5\nstamina - 2\n"
    					<<"*************************\n";
    				break;
    			case priest:
    				system("cls");
    				cout<<"You choose priest!\nYour standart parametrs!\n\n**************************\n"
    					<<"int - 5\npower - 0\nagility - 0\nstamina - 5\n"
    					<<"*************************\n";
    				break;
    			case ranger:
    				system("cls");
    				cout<<"Your standart parametrs!\n\n**************************\n"
    					<<"int - 0\npower - 0\nagility - 8\nstamina - 2\n"
    					<<"*************************\n";
    				break;
    		}
    		cout<<"\nAre you shure?(Y/N)\t";
    		cin>>proverka_na_vubor_classa;
    		if(proverka_na_vubor_classa=='y'||proverka_na_vubor_classa=='Y'){
    			vtoraya_proverka_na_vubor_classa=false;
    		}
    	}
    	system("cls");
    	//конец выбора класса
    	Info("Now you will get into the main menu!",37);
    
    	cout<<"\n\n";
    }
    
     
  6. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    Писать код не буду, но скажу что там формула есть , это потипу проверить какое число больше.
     
  7. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Code:
    while(flag) {
    switch(enter_user_class) {
    case '1': user_class = 1; cout << "You are mage tratata"; flag = 0; break;
    case '2': user_calss = 2; cout << "You are warior tratata"; flag = 0; break;
    case '3': -//-
    case '4': -//-
    default: cout << "what the fuck did u entered idiot?"; break;
    }
    }
    
    Зачем нужно две проверки?
     
    #3087 Fata1ex, 10 Jun 2009
    Last edited: 10 Jun 2009
  8. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    недопустимое выражение чар100 в свитч, да и как я понял с таким кодом проверка выполнится только 1 раз, и если не правильно то выведеться только "what the fuck did u entered idiot? , а мне надо чтобы оно снова предложило ввести как я писал выше
     
  9. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Я подправил код. enter_user_class должно быть char.
     
  10. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    ток теперь цикл не брейкается даже при вводе норм значений))
    И тупо что если вводишь 2 символа она 2 раза выдаст дефалт, если 3 то 3 раза

    А и не скажешь плиз, какая функция возвращает длину строки?
     
    #3090 Djezul, 10 Jun 2009
    Last edited: 10 Jun 2009
  11. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    strlen();
     
    1 person likes this.
  12. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    спс
     
  13. Lee_fx

    Lee_fx Elder - Старейшина

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Оказалось намного проще =)
    int sign = (num>0) - (num<0); //1 - положительное, -1 - отрицательное, 0 - ноль
     
  14. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Условные операторы все равно косвенно выполняются при подсчете возвращаемого значения выражения (num>0) и (num<0) = )
     
  15. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    чтобы проверять вхождения удобнее юзать массивы. определяешь так
    Code:
    string invalid_dic [] = {"1", "2", "3", "4"};
    
    bool is_valid(string data){
    	for(int i = 0; i < sizeof(invalid_dic) / sizeof(invalid_dic[0]); i++){
    		if(data.compare(invalid_dic[i]) == 0)
    			return false;
    	}
    	return true;
    }
    суть в том что при необходимости добавления нового ключа, ты просто добавляешь его в массив. больше ничего менять не надо. число элементов, которое используется для определения числа итераций цикла, вычисляется в момент компиляции.
     
    #3095 Ra$cal, 10 Jun 2009
    Last edited: 10 Jun 2009
  16. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    В чём ошибка , не хочет компелироваться
    Code:
    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>
    using namespace std;
    struct personaj{
    	char name[20];
    	int  game_class;
    	int power,stamina,agility,intelect,hp;
    };
    void main(){
    	void Info(char str[100],bool sound=false);
    	bool Main_Menu();
    	bool Arena(personaj player);
    	Info("### Welcome to the BK! ###",true);
    	//------------------------Переменные-------------------------
    	personaj player,computer;
    	computer.game_class=1;
    	computer.agility=5;
    	computer.intelect=5;
    	computer.power=5;
    	computer.stamina=5;
    	computer.hp=30;
    
        cout<<"Enter your name!\t";
    	cin>>player.name;
    	enum {warrior=1,mage=2,priest=3,ranger=4};
    //	char enter_user_class;
    	int user_class=0;												//Какой класс выбран! 
    	char proverka_na_vubor_classa;					//проверка на уверенность в выборе класса
    	bool prov_na_simvol=true;						//проверка на правильность выбора класса
    	bool vtoraya_proverka_na_vubor_classa=true;		//проверка на уверенность в выборе класса
    
    	while(vtoraya_proverka_na_vubor_classa){
    		system("cls");
    		cout<<"Choose your class!\n\n*** Warrior ***\t- 1\n*** Mage ***\t- 2"
    			<<"\n*** Priest ***\t- 3\n*** Ranger ***\t- 4\n\n";
    		//проверка на ввод числа а не чегото другого, такоеже сделать 
    		/*while{user_class!=1||user_class!=2||user_class!=3||user_class!=4){
    			cin>>enter_user_class;
    			switch(enter_user_class){
    			case '1': user_class=1; cout<<"War"; break;
    			case '2': user_class=2; cout<<"W";   break;
    			case '3': user_class=3; cout<<"Wr";  break;
    			case '4': user_class=4; cout<<"Wa";  break;
    			default: cout<<"Fuck"; 
    			}}*/
    		cin>>user_class;
    		switch(user_class){
    			case warrior:
    				system("cls");
    				player.agility=0;
    				player.intelect=0;
    				player.power=6;
    				player.stamina=4;
    				player.hp=30;
    				cout<<"You choose warrior!\nYour standart parametrs!\n\n**************************\n"
    					<<"intelect - "<<player.intelect
    					<<"\npower - "<<player.power
    					<<"\nagility - "<<player.agility
    					<<"\nstamina - "<<player.stamina
    					<<"\n*************************\n";
    				player.game_class=1;
    				break;
    			case mage:
    				system("cls");
    				player.agility=0;
    				player.intelect=8;
    				player.power=0;
    				player.stamina=2;
    				player.hp=15;
    				cout<<"You choose mage!\nYour standart parametrs!\n\n**************************\n"
    					<<"intelect - "<<player.intelect
    					<<"\npower - "<<player.power
    					<<"\nagility - "<<player.agility
    					<<"\nstamina - "<<player.stamina
    					<<"\n*************************\n";
    				player.game_class=2;
    				break;
    			case priest:
    				system("cls");
    				player.agility=0;
    				player.intelect=5;
    				player.power=0;
    				player.stamina=5;
    				player.hp=20;
    				cout<<"You choose priest!\nYour standart parametrs!\n\n**************************\n"
    					<<"intelect - "<<player.intelect
    					<<"\npower - "<<player.power
    					<<"\nagility - "<<player.agility
    					<<"\nstamina - "<<player.stamina
    					<<"\n*************************\n";
    				player.game_class=3;
    				break;
    			case ranger:
    				system("cls");
    				player.agility=8;
    				player.intelect=0;
    				player.power=0;
    				player.stamina=2;
    				player.hp=20;
    				cout<<"Your standart parametrs!\n\n**************************\n"
    					<<"intelect - "<<player.intelect
    					<<"\npower - "<<player.power
    					<<"\nagility - "<<player.agility
    					<<"\nstamina - "<<player.stamina
    					<<"\n*************************\n";
    				player.game_class=4;
    				break;
    		}
    		cout<<"\nAre you shure?(Y/N)\t";
    		cin>>proverka_na_vubor_classa;
    		if(proverka_na_vubor_classa=='y'||proverka_na_vubor_classa=='Y'){
    			vtoraya_proverka_na_vubor_classa=false;
    		}
    	}
    	system("cls");
    	//конец выбора класса
    	Info("Now you will get into the main menu!");
    	Main_Menu();
    	cout<<"\n\n";
    }
    void Info(char str[100],bool sound=false){
    	int dl_str=strlen(str);
    	for(int i=0;i<dl_str;i++){
    		cout<<str[i];
    		if(sound){
    			if(i==0||i==dl_str-1){
    				cout<<"\a";
    			}
    		}
    	Sleep(100);
    	}
    	system("cls");
    }
    //Меню основное
    bool Main_Menu(){
    	bool proverka_na_vuhod_iz_menu=true;
    	int user_choose_action_main_menu;
    	while(proverka_na_vuhod_iz_menu){
    		system("cls");
    		cout<<"Go to the Arena\t- 1\nGo to the shop\t- 2\nExit the game\t- 3\n";
    		cin>>user_choose_action_main_menu;
    		switch(user_choose_action_main_menu){
    			case 1:
    				system("cls");
    				Info("You will get to the arena soon!");
    				if(Arena(player)){
    					cout<<"Player win!";
    				}else{
    					cout<<"Player win!";
    				}
    				proverka_na_vuhod_iz_menu=false;
    				break;
    			case 2:
    				system("cls");
    				Info("You will get to the shop soon!");
    				proverka_na_vuhod_iz_menu=false;
    				break;
    			case 3:
    				system("cls");
    				Info("You will exit the game!");
    				proverka_na_vuhod_iz_menu=false;
    				return true;
    				break;
    		}
    	}
    
    }
    bool Arena(personaj player){
    	int player_action;
    	while(true){
    		if(player.hp<=0){
    			return false;
    			break;
    		}
    		if(computer.hp<=0){
    			return true;
    			break;
    		}
    		cout<<"Hit the Head!\t- 1\nHit the stomach!\t- 2\nHit \t- 3\n";
    		cin>>player_action;
    		switch(player_action){
    			case 1:
    				player.hp=player.hp-5;
    				computer.hp=computer.hp-10;
    				break;
    			case 2:
    				player.hp=player.hp-5;
    				computer.hp=computer.hp-10;
    				break;
    			case 3:
    				player.hp=player.hp-5;
    				computer.hp=computer.hp-10;
    				break;
    		}
    	}	
    }
    
    
    пишет
    Ошибка 1 error C2065: player: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 149
    Ошибка 2 error C3861: Arena: идентификатор не найден c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 149
    Ошибка 3 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 178
    Ошибка 4 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 178
    Ошибка 5 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 187
    Ошибка 6 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 187
    Ошибка 7 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 187
    Ошибка 8 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 187
    Ошибка 9 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 191
    Ошибка 10 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 191
    Ошибка 11 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 191
    Ошибка 12 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 191
    Ошибка 13 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 195
    Ошибка 14 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 195
    Ошибка 15 error C2065: computer: необъявленный идентификатор c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 195
    Ошибка 16 error C2228: выражение слева от ".hp" должно представлять класс, структуру или объединение c:\users\антон\documents\visual studio 2008\projects\09.06.09\09.06.09\09.06.09.cpp 195

    как передать правильно функции арена, значения типа плеер?
     
    #3096 Djezul, 10 Jun 2009
    Last edited: 10 Jun 2009
  17. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    bool Arena(personaj& player){
    ...
     
  18. Fata1ex

    Fata1ex Elder - Старейшина

    Joined:
    12 Dec 2006
    Messages:
    703
    Likes Received:
    300
    Reputations:
    38
    Сначала ты спрашиваешь в чем ошибка, а потом выкладываешь список ошибок >.<
    Все ошибки указаны компилятором.
     
  19. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    тоже самое((
     
  20. Djezul

    Djezul New Member

    Joined:
    8 Dec 2008
    Messages:
    43
    Likes Received:
    2
    Reputations:
    0
    Я думал ты понял о чём я , я только неделю учу си и ещё не сильно в нём ориентируюсь, так что ошибки компилятора мне ни о чем не говорят, я понимаю что они указаны, но что надо исправить в коде , чтобы их небыло, и что это за ошибки, мсдл не сильно помогло(
     
Thread Status:
Not open for further replies.