Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

mosko8

comparar numeros

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.