Logo Hardware.com.br
SpecialForcesBR
SpecialForce... Tô em todas Registrado
1K Mensagens 66 Curtidas

c++ - compilação dando erro

#1 Por SpecialForce... 05/05/2013 - 16:02
#include <iostream>

using namespace std;

int main()
{

int i,x,y;
float valor[12],soma;

for (i=1; i<=12 {
cout<<("Digite o"<<i<<"° valor&quot;
cin>>(valor[i]);
}
cout<<("ok&quot<<endl;
cout<<("digite a posição correspondente no vetor&quot<<endl;
cin>>(x);
while(!((x>=0) && (x<=12))) {
cout<<("posição nao existe, digite novamente&quot;
cin>>(x);
}//fimwhile
cout<<("digite outra posição correspondente no vetor&quot;
cin>>(y);
while (!((y>=0) && (y<=12))) {
cout<<("posição nao existe, digite novamente&quot;
cin>>(y);
}
soma=(valor[x]+valor[y]);
cout<<("A soma dos valores dessas posiçoes eh:"<<soma);
//fimalgoritmo
return 0;
}
Está dando os seguintes erros:

|line 18|error: invalid operands of types 'const char [9]' and 'int' to binary 'operator<<'|
|line 35|error: invalid operands of types 'const char [39]' and 'float' to binary 'operator<<'|


o que são esses erros?
Dr. Hank
Dr. Hank General de Pijama Registrado
3.7K Mensagens 119 Curtidas
#3 Por Dr. Hank
05/05/2013 - 19:38
São duas coisas que estão impedindo o seu programa de compilar (testei no g++ e no clang++ aqui no Linux):
  • Os acentos e cedilhas em palavras como "posição". Em um programa curto assim é muito mais fácil simplesmente escrever "posicao".
  • O excesso de parênteses. Você não precisa colocar parênteses no que for mandar para o cout nesse caso. Nas linhas

cout<<("Digite o"<<i<<"° valor&quot;
e

cout<<("A soma dos valores dessas posiçoes eh:"<<soma);
o compilador se embanana todo. Reescreva como

cout << "Digite o" << i << "° valor";
e

cout << "A soma dos valores dessas posicoes eh: " << soma;
Mesmo compilando o seu código possue alguns pequenos erros conceituais.

No primeiro loop

for (i=1; i<=12 { 
cout<<("Digite o"<<i<<"° valor&quot;
cin>>(valor[i]);
}
Onde está o incremento do contador? O correto seria for (i=1; i<=12; i++)

Outra coisa: os arrays em C++ começam na posição zero, e não um. Portanto o seu array vai da posição 0 até a posição 11, e não da posição 1 até a posição 12!

O seus elementos são valor[0], valor[1], valor[2], ..., valor[11].

Portanto o loop na verdade seria for (i = 0; i < 12; i++)

Com isso em mente você precisa também arrumar os limites nas suas checagens de erro. Em

while(!((x>=0) && (x<=12)))
e

while (!((y>=0) && (y<=12)))
Você deve trocar 12 por 11.

Desculpe se fui muito superficial em algum ponto. Qualquer dúvida, por favor, volte a postar!

Abraços.

"I am Alpha and Omega, the beginning and the end. I will give unto him that is athirst of the fountain of the water of life freely."

— Revelation 21:6, KJV
SpecialForcesBR
SpecialForce... Tô em todas Registrado
1K Mensagens 66 Curtidas
#4 Por SpecialForce...
06/05/2013 - 13:57
hagahood disse:
tu ta misturando cout de string com cout de numero na linha 18 e 35.
separe os cout assim

cout<<("Digite o";
cout<<i;
cou<<"° valor \n&quot;


Dr. Hank disse:
São duas coisas que estão impedindo o seu programa de compilar (testei no g++ e no clang++ aqui no Linux):
  • Os acentos e cedilhas em palavras como "posição". Em um programa curto assim é muito mais fácil simplesmente escrever "posicao".
  • O excesso de parênteses. Você não precisa colocar parênteses no que for mandar para o cout nesse caso. Nas linhas

cout<<("Digite o"<<i<<"° valor&quot;
e

cout<<("A soma dos valores dessas posiçoes eh:"<<soma);
o compilador se embanana todo. Reescreva como

cout << "Digite o" << i << "° valor";
e

cout << "A soma dos valores dessas posicoes eh: " << soma;
Mesmo compilando o seu código possue alguns pequenos erros conceituais.

No primeiro loop

for (i=1; i<=12 { 
cout<<("Digite o"<<i<<"° valor&quot;
cin>>(valor[i]);
}
Onde está o incremento do contador? O correto seria for (i=1; i<=12; i++)

Outra coisa: os arrays em C++ começam na posição zero, e não um. Portanto o seu array vai da posição 0 até a posição 11, e não da posição 1 até a posição 12!

O seus elementos são valor[0], valor[1], valor[2], ..., valor[11].

Portanto o loop na verdade seria for (i = 0; i < 12; i++)

Com isso em mente você precisa também arrumar os limites nas suas checagens de erro. Em

while(!((x>=0) && (x<=12)))
e

while (!((y>=0) && (y<=12)))
Você deve trocar 12 por 11.

Desculpe se fui muito superficial em algum ponto. Qualquer dúvida, por favor, volte a postar!
Abraços.


No visualg o i nao precisa de incremento, ai acabei me atrapalhando.

Ambos explicaram corrtamente, o programa rodou liso agora!

Muito obrigado a todos!
BRASIL!
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal