Jump to content
msmsms

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

Recommended Posts

msmsms

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)

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
msmsms

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

o código depende do que escreves na consola !!

não podes dizer que "é sempre 1" !!!

tira a chavetas e escreve na consola após executar a aplicação:

1.1 2.2 3.3

resultado:

n voltas: 3


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
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.