Jump to content

Erro: 1value required as left operand of assignment


Greemax
 Share

Recommended Posts

Boas.

Eu estou a programar um gerador de chaves para o Euromilhoes. e em dois loops, practicamente iguais, ao compilar deram me erro(1value required as left operand of assignment). Como ainda não sou muito experiente no uso de "pointers" julgo que seja algo relacionado com isso. Será que alguem me ajuda a corrigir o erro?

Aqui está o código:

//**********************************
//Gerador de Chaves para Euromilhoes
//**********************************

#include <iostream>
#include <stdlib.h>
#include <windows.h>

using namespace std;

int GetRandom(int de, int para);
bool VerifyNum(int *outras_chaves, int nova_chave,int array_size);

int main()
{
int numeros[4]; //5 Numeros
int estrelas[1]; //2 Estrelas
int verchave = 0;

srand(GetTickCount());

cout << "Numeros:\n";

for(int x=0 ; x <=4 ; x++ ) //Sortear Numeros
{
while(!VerifyNum(numeros, verchave, sizeof(numeros)) || verchave=0 ) //ERRO
verchave = GetRandom(1,50); //Enaqunto o numero não for novo, vai continuar a gerar

numeros[x] = verchave;
cout << numeros[x];
}

verchave = 0;

cout << "Estrelas:\n";

for(int x=0 ; x <=1 ; x++ )
{
while(!VerifyNum(estrelas, verchave, sizeof(estrelas)) || verchave=0 ) //ERRO
verchave = GetRandom(1,11); //Enaqunto a estrela não for novo, vai continuar a gerar

estrelas[x] = verchave;
cout << estrelas[x];
}

cin.get();
return 0;
}

int GetRandom(int de, int para)
{
int rnd;
rnd = rand() % (para + 1);
return rnd;
}

bool VerifyNum(int *outras_chaves, int nova_chave,int array_size) //Verificar se o número já foi sorteado
{
int x;
for(x=0; x <= array_size ; x++ )
{
if (nova_chave = *outras_chaves + x)
return false; //Reprovado, já saiu esse numero
else
return true; //Aprovado, numero ainda nao sorteado
}
}

Edited by Baderous
geshi
Link to comment
Share on other sites

eu nem vou olhar para o código até responderes ás perguntas habituais:

- em que linha de código o erro é originado

- qual a variável que se queixa

- qual a mensagem de erro que o compilador te dá

sem isto, simplesmente me recuso a responder, porque sinceramente, a minha vida não é interpretar linhas e linhas de código

(desculpa qualquer coisinha, mas este tipo de situação é constante aqui no fórum)

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

A comparação, em C++ (e muitas outras linguagens "descendentes" de C), é feita com o símbolo ==

O simbolo = usa-se para atribuição.

if (verchave == 0) /* ... */; // OK
if (verchave = 0) /* ... */; // NO

O teu compilador diz-te que nao podes atribuir um valor a uma coisa que não é um "lvalue" (não é 1value!). Aparentemente o verchave não é um lvalue e tiveste sorte porque ele se queixou. Se fosse um lvalue, o programa compilava sem erros (mas com warnings, liga sempre o máximo de warnings) mas não dava os resultados certos!

Tiveste sorte 🙂

Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

eu nem vou olhar para o código até responderes ás perguntas habituais:

- em que linha de código o erro é originado

- qual a variável que se queixa

- qual a mensagem de erro que o compilador te dá

sem isto, simplesmente me recuso a responder, porque sinceramente, a minha vida não é interpretar linhas e linhas de código

(desculpa qualquer coisinha, mas este tipo de situação é constante aqui no fórum)

As linhas com erro estão comentadas como //ERRO

Não sabia de que variável se queixava

A mensagem que aparece no compilador está no titulo e no inicio do tópico

Obrigado na mesma HappyHippyHippo

pmg Obrigado pela ajuda, eu sei dessa regra mas estava tão focado num erro a volta do apontador que realmente nem pensei que tivesse a ver com aquela parte tão simples do loop.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.