Ir para o conteúdo
paulo134

Dúvida (programa simples)

Mensagens Recomendadas

paulo134

Boa noite a todos eu sou um aluno de programação em c.

Eu estive a tentar fazer um programa mas quando o executo faz tudo normal mas fecha no fim sem eu clicar em nada ja exprimentei usar o getch e o system pause mas continua a fechar provavelmente deve ser um erro basico mas eu nao o consigo identificar espero poder contar com a vossa ajuda.

Ja agora no programa os numeros nos if não estão por ordem pois ouve muitos alunos que entraram mais tarde e muitos que sairam.

#include <stdio.h>
main()
{
int numero;    

printf("Insira o seu numero\n");
scanf("%d",&numero);
if(numero=1)
            printf("Alexandre Cruz 16 anos.");
else
if(numero=2)
            printf("Alexandre Ribeiro 15 anos");
else

if(numero=3)
            printf("Ana Sofia 16 anos");
else

if(numero=4)
            printf("Andre Dionisio 17 anos");
else

if(numero=5)
            printf("Bernardo Borges 16 anos");
else

if(numero=6)
            printf("Carlos 15 anos");
else

if(numero=7)
            printf("Claudia Sofia 15 anos");
else    

if(numero=8)
            printf("David Rodrigues 15 anos");
else

if(numero=9)
            printf("Guilherme Silva 15 anos");
else    

if(numero=11)
            printf("Jessica Santos 15 anos");
else

if(numero=10)
            printf("Jessica Fragoso 16 anos");
else

if(numero=13)
            printf("Leandro Bernardes 15 anos");
else

if(numero=14)
            printf("Lovepreet Singh 15 anos");
else

if(numero=16)
            printf("Micaela Brazao 16 anos");
else

if(numero=19)
            printf("Pamella Kristine 18 anos");
else

if(numero=20)
            printf("Paulo Cardoso 15 anos");
else

if(numero=21)
            printf("Pedro Luzio 15 anos");
else

if(numero=27)
            printf("Rafael Parracho 15 anos");
else

if(numero=26)
            printf("Rogerio Serrano 17 anos");
else

if(numero=22)
            printf("Sandro Ferreira 16 anos");
else

if(numero=25)
            printf("Tiago Coelho 17 anos");
else

if(numero=23)
            printf("Telmo Marques 17 anos");
else






system("pause");    




}    

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Isso acontece porque o system("pausa") está inserido no último else. Tens de o remover, o system("pause") só será executado se numero for menor que 1 ou maior que 23, ou seja, se todas as condições falharem.

Nota: usa getchar, e usa a estrutura switch.


Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
paulo134

depois de corrigir esse erro descobri outro quando executo o codigo mesmo que no inicio coloque outro numero ele corre o primeiro if alguem me diz o porque de isso acontecer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

faz isto (vou escrever com if apesar de já te terem dito para usar o switch) :

int numero = 0; // inicializa sempre as tuas variáveis !!!

// ...

if (scanf("%d",&numero) == 0) { // comparações são feitas com o sinal de comparação (==) e não com o sinal de atribuição (=)
 printf("Erro na leitura do numero");
} elseif (numero == 0) { // comparações são feitas com o sinal de comparação (==) e não com o sinal de atribuição (=)
 printf("Entrada desconhecida");
} elseif (numero == 1) { // comparações são feitas com o sinal de comparação (==) e não com o sinal de atribuição (=)
// ...
}


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

paulo134,

  • A função main está mal declarada (omitiste o tipo de dados de retorno):
    /* o correcto é: */
    int main(void) {
     /* ...código principal... */
    
     return 0; /* não te esqueças desta linha */
    }


  • O pessoal já te disse para utilizares switch/case e corrigiu-te os erros... Mas evitar toda essa repetição também seria bom! Podias criar uma array de alunos (ordenados por número) e utilizá-la:
    struct aluno {
     char *nome[50];
     int idade;
    };
    
    const struct aluno alunos[] = {
     { "Alexandre Cruz",    16 },
     { "Alexandre Ribeiro", 15 },
     /* ...o resto por aqui abaixo... */
    };
    
    /* e para imprimir informação: */
    printf("%s %d anos.\n", alunos[numero - 1].nome, alunos[numero - 1].idade);


    Logicamente, terias que te certificar que o número introduzido não seria inferior a 1 nem superior ao número de alunos inseridos no array.

Esta última sugestão até pode estar fora dos teus conhecimentos actuais... Mas é algo que deves investigar, caso contrário vais lidar sempre com código muito extenso e bastante repetitivo (e portanto, muito mais propenso a erros).

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.