George2000C++ Ответов: 3

C++ нужна помощь много ошибок


#include <iostream>
#include <string>
using namespace std;
struct Player {

	char name [50];
	char player_class [50];
	unsigned short int level;
	float exp;
	bool competitive;
};
struct Battle {

	char battle_name[50];
	char battle_favour_class[50];
	int min_level;
	int xp;
};
void show_player (const Player & player)
{

if (player.competitive )
	cout<<player.name<<" is a competitive level "<<player.level <<player.player_class<<"\n";
else
	cout<<player.name<<" is an amateur level "<<player.level <<player.player_class<<"\n";

}
void encounter(Player,Battle)
{

if (Player1.level && Player2.level <Battle.min_level)
	cout<<"Not Valid Encounter\n";
else if (Player1.level>Battle.min_level && Player2.level<Battle.min_level)
	cout<<"The winner is "<<Player1;
else if (Player1.level<Battle.min_level && Player2.level>Battle.min_level)
	cout<<"The winner is "<<Player2;
else if (Player1.level &&Player2.level >=Battle.min_level)
	cout<<"Valid Encounter";
	if(Player1.player_class>Battle.battle_favour_class && Player2.player_class<Battle.battle_favour_class)
		cout<<"The winner is"<<Player1;
	else if (Player1.player_class<Battle.battle_favour_class && Player2.player_class>Battle.battle_favour_class)
		cout<<"The winner is"<<Player2;
	else if (Player1.player_class>Battle.battle_favour_class && Player2.player_class>Battle.battle_favour_class)
		if(Player1.exp>Player2.exp)
			cout<<"The winner is "<<Player1;
		else if(Player1.exp<Player2.xp)
			cout<<"The winner is "<<Player2;
	else if (Player1.player_class<Battle.battle_favour_class && Player2.player_class<Battle.battle_favour_class)
		if(Player1.exp>Player2.exp)
			cout<<"The winner is "<<Player1;
		else if(Player1.exp<Player2.exp)
			cout<<"The winner is "<<Player2;
	else if (Player1.exp=Player2.exp)
		cout<<"Tie";
}
int exp_winner(Player,Battle);
{

 if(Player1.level>Battle.min_level || Player1.player_class>Battle.battle_favour_class || Player1.exp>Player2.exp)
	Player1.exp=Player1.exp + Battle.xp
else if(Player2.level>Battle.min_level || Player2.player_class>Battle.battle_favour_class || Player2.exp>Player1.exp)
	Player2.exp=Player2.exp + Battle.xp
}
int main(){
}


Что я уже пробовал:

#include <iostream>
#include <string>
using namespace std;
struct Player {

	char name [50];
	char player_class [50];
	unsigned short int level;
	float exp;
	bool competitive;
};
struct Battle {

	char battle_name[50];
	char battle_favour_class[50];
	int min_level;
	int xp;
};
void show_player (const Player & player)
{

if (player.competitive )
	cout<<player.name<<" is a competitive level "<<player.level <<player.player_class<<"\n";
else
	cout<<player.name<<" is an amateur level "<<player.level <<player.player_class<<"\n";

}
void encounter(Player,Battle)
{

if (Player1.level && Player2.level <Battle.min_level)
	cout<<"Not Valid Encounter\n";
else if (Player1.level>Battle.min_level && Player2.level<Battle.min_level)
	cout<<"The winner is "<<Player1;
else if (Player1.level<Battle.min_level && Player2.level>Battle.min_level)
	cout<<"The winner is "<<Player2;
else if (Player1.level &&Player2.level >=Battle.min_level)
	cout<<"Valid Encounter";
	if(Player1.player_class>Battle.battle_favour_class && Player2.player_class<Battle.battle_favour_class)
		cout<<"The winner is"<<Player1;
	else if (Player1.player_class<Battle.battle_favour_class && Player2.player_class>Battle.battle_favour_class)
		cout<<"The winner is"<<Player2;
	else if (Player1.player_class>Battle.battle_favour_class && Player2.player_class>Battle.battle_favour_class)
		if(Player1.exp>Player2.exp)
			cout<<"The winner is "<<Player1;
		else if(Player1.exp<Player2.xp)
			cout<<"The winner is "<<Player2;
	else if (Player1.player_class<Battle.battle_favour_class && Player2.player_class<Battle.battle_favour_class)
		if(Player1.exp>Player2.exp)
			cout<<"The winner is "<<Player1;
		else if(Player1.exp<Player2.exp)
			cout<<"The winner is "<<Player2;
	else if (Player1.exp=Player2.exp)
		cout<<"Tie";
}
int exp_winner(Player,Battle);
{

 if(Player1.level>Battle.min_level || Player1.player_class>Battle.battle_favour_class || Player1.exp>Player2.exp)
	Player1.exp=Player1.exp + Battle.xp
else if(Player2.level>Battle.min_level || Player2.player_class>Battle.battle_favour_class || Player2.exp>Player1.exp)
	Player2.exp=Player2.exp + Battle.xp
}
int main(){
}

k5054

Мы не собираемся компилировать ваш код и исправлять ваши ошибки за вас. Вы должны рассказать нам, какие "ошибки" у вас есть, и где они находятся в коде. Возможно, тогда кто-то укажет вам на решение.

Как бы то ни было, у тебя нет тела. main(), так что в лучшем случае программа просто завершает работу, предполагая, что она компилируется чисто.

3 Ответов

Рейтинг:
0

Greg Utas

Для начала, это

if (Player1.level && Player2.level <Battle.min_level)
это просто неверно и должно быть записано как
if((Player1.level < Battle.min_level) && (Player2.level < Battle.min_level))
Добавление круглых скобок вокруг выражений-хорошая идея, если вы не уверены в приоритете операторов. Как написано, он даже не будет компилироваться.
void Encounter(Player, Battle)
должно быть что-то вроде
void Encounter(Player& player1, Player& player2, Battle& battle)
со строчными именами, используемыми внутри функции. Вероятно, вы также хотите, чтобы функция возвращала что-то, указывающее, кто выиграл. Наконец, ничего не произойдет, если main() не сделает что-то или не вызовет функцию. Вы также должны отформатировать свой код и добавить некоторые комментарии, чтобы другим было легче сказать, что вы пытаетесь сделать.


Stefan_Lang

На самом деле компилятор примет этот оператор if и выдаст совершенно бесполезный результат во время выполнения.

Рейтинг:
0

Stefan_Lang

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

В вашем случае первая ошибка указывает на первую строку в функции encounter():

void encounter(Player,Battle)
{
    if (Player1.level && Player2.level <Battle.min_level)

В сообщении об ошибке говорится, что
Цитата:
"Player1" не был объявлен в этой области

или что-то в этом роде, зависящее от вашего компилятора. Это означает, что компилятор пытался выяснить, что такое символ "Player1", и не нашел для него определения! Если вы посмотрите на следующие ошибки компилятора, вы обнаружите то же самое сообщение относительно "Player2".

Ошибка, которую вы допустили, заключается в том, что вы намеревались передать игрокам функцию в качестве аргументов, но забыли записать полное определение аргумента. Поэтому вам следует изменить определение функции на
void encounter(const Player& Player1, const Player& Player2, Battle& Battle1)

Обратите внимание, что вы также не указали имя аргумента для своего экземпляра Battle!

С этими изменениями многие ошибки исчезают. Но появляются новые, относящиеся к более поздним частям кода.

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

Если вы застряли в этом процессе в любой момент, Вы можете вернуться и спросить о конкретной ошибке, которую вы не знаете, как исправить.


Рейтинг:
0

Patrice T

Цитата:
C++ нужна помощь много ошибок

Вы забыли сказать, каковы ваши ожидания от этого кода и какие ошибки вы получаете.

int main(){
}

Этот код ничего не делает, и это нормально, но это то, что вы хотите ?

ou нужно практиковать синтаксис C++ :
 if(Player1.level>Battle.min_level || Player1.player_class>Battle.battle_favour_class || Player1.exp>Player2.exp)
	Player1.exp=Player1.exp + Battle.xp  // semicolumn missing at the end of this line
else if(Player2.level>Battle.min_level || Player2.player_class>Battle.battle_favour_class || Player2.exp>Player1.exp)
	Player2.exp=Player2.exp + Battle.xp  // semicolumn missing at the end of this line