Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
mosko8

comparar numeros

Recommended Posts

mosko8

Boa noite,

eu sou um bocado leigo na matéria de programar e tenho um problema com um código

int listar_dados_numero(int numm)
{int i=0,alun,alunno,number;

for(i=0; i<numalunos; i++)
{
          
            printf("introduza o numero de aluno\n" );
                   scanf("%d",&number);
                   if(number==alunos[i].num){
                                                                                   printf(" \n******************************\n");
                                                                                   printf(" Nome:          %s\n",alunos[i].nome);
                                                                                   printf(" Curso:         %s\n",alunos[i].curso);
                                                                                   printf(" Morada:        %s\n",alunos[i].morada);
                                                                                   printf(" Codigo Postal: %s\n",alunos[i].codpostal);
                                                                                   printf(" Loalidade:     %s\n",alunos[i].localidade);
                                                                                   printf(" \n******************************\n\n\n");
                                                                                   }                                       
else 
          printf( "numero introduzido invalido\n");
          getch();
          
                break;                                  
            return alun;} }

nesta parte só me devolve os dados do primeiro aluno introduzido

ou seja se eu introduzir com o numero 1 o joao e com o 2 o pedro, ao devolver ele devolve muito bem os dados do joao mas eu ao pedir os dados do pedro ele diz que " numero introduzido inválido"

Alguem me pode dar uma ajudinha

thanks

Share this post


Link to post
Share on other sites
Baderous

Tens de limpar o buffer depois de introduzires o número, porque senão o scanf está a aproveitar o '\n' que fica lá devido à 1ª introdução do número.

Share this post


Link to post
Share on other sites
mosko8

Pois mas continua a dar o mesmo erro.o primeiro lista bem mas os seguintes nada!

Share this post


Link to post
Share on other sites
Localhost

Acho que isso acontece porque a cada iteração fazes um else que verifica se nessa posição não existe o tal número, ou seja, a cada iteração (que não existir o número) vai-te aparecer isso.

Tens ali um return dentro do for, ou seja, ele se não encontrar o número na posição que está a percorrer retorna logo.


here since 2009

Share this post


Link to post
Share on other sites
Localhost

Btw, a versão corrigida ficaria assim:

int listar_dados_numero() {
  int i=0,number=0;
  printf("Número: ");
  scanf("%i", &number);
  for(i=0; i < numalunos; i++) {
    if(number == alunos[i].num) return i; // retornar a posição do aluno no array
  }
  return -1; // não foi encontrado
}

Dei a solução porque vi que tinhas muitos erros.


here since 2009

Share this post


Link to post
Share on other sites
Localhost

Só uma coisa, tu queres procurar por uma certa estrutura certo?

Se sim, fazes assim na função que chama a que eu te pûs no último post:

int ret=listar_dados_numero();
if(ret < 0) printf("Nome não encontrado\n");
else {
  // printf's aqui
}


here since 2009

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
Sign in to follow this  

×

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.