Jump to content
paulo134

Dúvida (programa simples)

Recommended Posts

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");    




}    

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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).

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.