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.