Duvida em for

1. Duvida em for

Andre R.
nsk23

(usa Outra)

Enviado em 08/10/2014 - 09:41h

Pessoal alguem sabe se a liguagem C suporta essa semantica?
Esta dando erro ao compilar








for(cont=0;cont>3;cont++)
{
printf("Digite a nota da prova: %d \n",cont);
scanf("%f",&n(cont);
n(cont)=n(cont)*cont;

}



  


2. Re: Duvida em for

Perfil removido
removido

(usa Nenhuma)

Enviado em 08/10/2014 - 10:37h

A sintaxe do comando for é a seguinte:

for(cond inicio;cond fim;incremento)
{
/*codigo do programa*/
}


Você fez uma bagunça, usou a mesma variável, cont para controlar o laço for e para manipular dados no programa, e isso não e recomendado.
Tenta fazer assim:

for(int i = 0; i>3; i++)
{
printf("Digite a nota da prova: %d \n",i);
scanf("%f",&cont);
}


Dica: Quando for escrever um código aqui no fórum, escreve entre ['code'] ['/code'] sem aspas, assim fica mais "bonito" o codigo escrito e mais facil de entender se for um código grande.


3. Re: Duvida em for

fcbatera
fcbatera

(usa Debian)

Enviado em 08/10/2014 - 14:27h

condicao final deveria ser i<3, nao?


4. Re: Duvida em for

Andre R.
nsk23

(usa Outra)

Enviado em 08/10/2014 - 14:38h

o erro aparece no valor dentro dos parenteses


5. Re: Duvida em for

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 08/10/2014 - 14:38h

Voce está usando vetores ?

Se sim , o correto seria :


int n[3];
int cont;
for(cont = 0;cont<3;cont++){
printf("Digite a nota da prova %i\n",cont+1);
scanf("%i",&n[cont]);
n[cont] = (n[cont] * cont);
}



Seria isso ?

[]'s


T+


6. Re: Duvida em for

Paulo
paulo1205

(usa Ubuntu)

Enviado em 08/10/2014 - 14:42h

nsk23 escreveu:

Pessoal alguem sabe se a liguagem C suporta essa semantica?
Esta dando erro ao compilar








for(cont=0;cont>3;cont++)
{
printf("Digite a nota da prova: %d \n",cont);
scanf("%f",&n(cont);
n(cont)=n(cont)*cont;

}


O for das linguagens C e C++ tem a seguinte estrutura:

for(expressão_1; expressão_2; expressão_3) comando 


(comando pode ser um comando simples ou um bloco de comandos; se for um bloco, você deve indicar o começo do bloco com “{” e o final do bloco com “}”).

Essa estrutura pode ser reescrita também em C ou C++ com o comando while, com um sentido quase idêntico:

expressão_1;
while(expressão_2){
comando;
expressão_3;
}


O “quase” fica por conta do comportamento da cláusula continue, se ela ocorrer no interior do comando: no while ela não computa a expressão_3 antes de voltar ao ponto de avaliar o valor da expressão_2, enquanto o for garante que expressão_3 é computada.

Em outras palavras: o for vai se repetir somente enquanto a expressão_2 tiver um resultado verdadeiro.

Note que a sua construção tem como expressão_1 a definição do valor inicial 0 para a variável cont. Logo em seguida, o seu comando for testa, como condição de repetição, se cont é maior do que 3. Obviamente não é. Logo, o bloco de leitura de valores não executa nem uma vez.

O primeiro passo seu seria, portanto, corrigir a expressão condicional cont>3. Eu intuo que o que você quis dizer foi cont<3.

Dentro do bloco controlado pelo for, você também correções a fazer. Índices de arrays são especificados entre colchetes (“[” e “]”), e não entre parênteses, como vocês fez. Você também esqueceu de fechar um parêntese na chamada a scanf(), e vai atribuir um peso zero à nota da primeira prova (quando cont==0), o que eu acho que dificilmente é o que você quer.


7. Re: Duvida em for

Paulo
paulo1205

(usa Ubuntu)

Enviado em 08/10/2014 - 14:47h

Thihup escreveu:

Voce está usando vetores ?

Se sim , o correto seria :


int n[3];
int cont,i = 0;
for(cont = 0;cont<3;cont++,i++){
printf("Digite a nota da prova %i\n",i+1);
scanf("%i",&i);
n[cont] *= i;
}



Seria isso ?


Creio que não. Deve ser mais parecido com o que segue.

float n[3];  /* Deve ser float, pois inicialmente ele usou "%f" na formatação de scanf() */
int cont;
for(cont = 0; cont<3; cont++){
printf("Digite a nota da prova %i: ", cont+1);
scanf("%f", &n[cont]);
n[cont] *= (cont+1);
}



8. Re: Duvida em for

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 08/10/2014 - 14:56h

É , talvez seja um codigo parecido com o seu , mas ele nao deu informações sobre o que é o programa , e essa linha ( n[cont] *= (cont+1);) é muito estranha , não?

[]'s

T+


9. Re: Duvida em for

Paulo
paulo1205

(usa Ubuntu)

Enviado em 08/10/2014 - 15:00h

Depende. Estranha por quê? Pela forma ou pelo sentido? A forma não tem problema algum.

Do código original postado pelo autor do tópico, eu interpretei que ele queria atribuir um peso atribuído a cada nota (e por isso mesmo fiz cont+1, em lugar de apenas cont, porque nunca vi uma prova com peso zero). Mas se foi isso mesmo que ele quis dizer, só ele sabe.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts