Jump to content

Função só devolve 1 quando devia de devolver outros valores


msmsms

Recommended Posts

boas, tenho o seguinte metodo

// variaveis globais
double voltas[max];
int nvoltas;
// metodo
void obervolas(){
double tempo;
int i = 0;
while ("scanf("%lf",&tempo)==1)
voltas[i++] = tempo;
nvoltas = i;
}

eu peguei este metodo num exemplo e ao tentar percebe-lo nao percebi a ultima instrução do nvoltas = i

sendo que o nvoltas está fora do ciclo while nvoltas=i nao será zero?

no exemplo que tenho esta assim o while sem chavetas e quero perceber se o nvoltas será zero ou se será o ultimo i++ e como.

Edited by brunoais
titulo muuuuito melhorado ("ajuda em metodo" não ajuda a quem procura)
Link to comment
Share on other sites

daria jeito para perceber duas coisas :

- estar em código correcto e sem erros

- bem indentado

// variaveis globais
double voltas[max]; // <--- nem vou comentar ... variáveis globais ...
int nvoltas;        // <--- nem vou comentar ... variáveis globais ...

// metodo
void obervolas(){
 double tempo;
 int i = 0;

 while (scanf("%lf", &tempo) == 1) // enquanto o valor "tempo" for correctamente lido
   voltas[i++] = tempo;            // guardar no array voltas (nota que se está a pós incrementar o valor de "i" (isto é importante)

 nvoltas = i;                      // guardar em "nvoltas" o número de elementos guardados no array
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

eu tentei executar o metodo no linux

e dá sempre 1 porquê?

sim eu copiei conforme esta no exemplo

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// programa que regista os tempos de cada carro de corrida
// ate ao fim da corrida ou ate desistir
// indica o numero de voltas efectuadas, a volta mais rapida e o respectivo tempo
#define max 81 // constante
double voltas[max];
int nvoltas;
void obtervoltas();
//void mostrarvoltas();
//int minvoltas();
//int imprimirtempo(double t);
void obtervoltas() // obter voltas
{
double tempo;
int i = 0;
while(scanf("%lf",&tempo)==1); // quanto for colocado um numero na consola o ciclo anda
voltas[i++] = tempo;
nvoltas = i;
}
int main()
{
obtervoltas();
printf ("n voltas: %d \n", nvoltas);

}

bem com as chavetas colocadas no while da o numero de voltas

portanto penso que quem fez o exemplo se enganou

pois sem chavetas da sempre 1

Edited by msmsms
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
×
×
  • 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.