Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

msnhd2

programa que não estou conseguindo fazer

Recommended Posts

Tenho que entregar isto, porem tentei varias vezes não obtive sucesso fico grato desde já!!

 

Elabore um programa escrito na Linguagem C que leia a partir do teclado e armazene, em 4 variáveis distintas, a matrícula, o dia de nascimento, o mês de nascimento e o ano de nascimento dos alunos. Quando a matrícula informada for igual a 0 ou já tiverem sido informadas 10 matrículas, o programa deve solicitar a digitação de uma matrícula e apresentar a data de nascimento no formato “dd/mm/aaaa”. Se a matrícula informada for igual a 0, o programa deve terminar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sou novo em programação, consegui fazer isto porem sem sucesso.

 

Esta foi minha ultima tentativa....

 

#include<stdio.h>
main(){
int mat,dn,mn,an,i=0;
for(i=1;i<=10){
printf("Informe o numero da matricula: ");
scanf("%d", mat);
printf("Informe o dia de nascimento: ");
scanf("%d", dn);
printf("Informe o mes de nascimento: ");
scanf("%d", mn);
printf("Informe o ano de nascimento: ");
scanf("%d", an);
}
printf("Digite uma matricula: ");
scanf("%d", mat);
printf("A data de nascimento desta matricula é: " , dn ,"/", mn ,"/", an ,"/");
}
getch();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, veja a forma que você está enviando argumentos para a função, tem algo errado aqui:

scanf("%d", mat[i]); //é preciso passar o endereço de memória da variável.

 

Bom, você não declarou nenhum vetor e no momento de ler as variáveis você está trabalhando com índices.

int mat; // mat não é um vetor

printf("Informe o numero da matricula: ");
scanf("%d", mat[i]); // <--- ???

Ainda que fosse, no seu loop a variável "i" nunca é incrementada, veja:

for(i=1;i<=10) // <<--- ???

// ex:
for (i = 0; i < 10; i++);

 

No final, a forma de exibir algo no console é diferente do portugol:

printf("A data de nascimento desta matricula é: " , dn ,"/", mn ,"/", an ,"/"); // <-- errado

printf("A data de nascimento desta matricula é: %i  / %i / %i .", dn, mn, an); 

 

Se já souber trabalhar com struct, acredito que facilitará muito o desenvolvimento deste exercício.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não ainda não aprendi com struct começei com repetição agora, poderia postalo pronto por favor para eu analisa-lo?

 

Fiz algumas alterações só que ele ta perguntando a matricula mesmo ainda dentro do ciclo de repetição como corrigir isto?O que falta ser feito?

 

#include<stdio.h>
main(){
int mat , dn[10], mn[10], an[10], i ;
for(i = 0 ;i < 10;i++){
printf("Informe o numero da matricula: ");
scanf("%d",& mat);
printf("Informe o dia de nascimento: ");
scanf("%d", &dn);
printf("Informe o mes de nascimento: ");
scanf("%d", &mn);
printf("Informe o ano de nascimento: ");
scanf("%d", &an);
if ((mat = 0)&&(mat>=10)){
printf("Digite uma matricula: ");
scanf("%d", &mat);
printf("A data de nascimento desta matricula é: " , dn ,"/", mn ,"/", an ,"/");}
getch();
}

 

 



Ainda não está sendo possivel executar fiz algumas alterações , a parte do programa perguntar a matricula quando matricula for 0 ou o somatorio for 10 ou maior não sei de que forma fazer poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é preciso, eu disse que iria facilitar, não é uma regra. Esqueça isso por enquanto, você provavelmente irá aprender mais a frente.

Basta corrigir o seu código com o que escrevi no comentário anterior, não esqueça de transformar suas variáveis em vetores

 

----

 

Há um espaço aqui, corrija:

printf("Informe o numero da matricula: ");
scanf("%d",& mat); // acredito que esta variável também precisa ser um vetor, não?! 

A última chamada à função printf() continua errada:

printf("A data de nascimento desta matricula é: " , dn ,"/", mn ,"/", an ,"/");

 

Pelo que entendi, você vai precisar fazer OUTRO LOOP para exibir TODOS os dados e não somente um deles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

preciso de algo para fazer o somatorio das matriculas para quando execeder 10 solicitar matricula novamente



No final se o somatorio das matriculas exeder 10 deve ser perguntado novamente a matricula se digitado 0 tambem como fazer esta parte?
#include<stdio.h>
main(){
int mat[10] , dn[10], mn[10], an[10], i ;
for(i = 0 ;i < 10;i++){
printf("Informe o numero da matricula: ");
scanf("%d",& mat);
printf("Informe o dia de nascimento: ");
scanf("%d", &dn);
printf("Informe o mes de nascimento: ");
scanf("%d", &mn);
printf("Informe o ano de nascimento: ");
scanf("%d", &an);
if ((mat = 0)&&(mat>=10)){
printf("Digite uma matricula: ");
scanf("%d", &mat);
printf("A data de nascimento desta matricula é: %i / %i / %i .", dn, mn, an);}
getch();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra falar a verdade, não entendi este enunciado. Irá solicitar uma data ao final da execução... MAS POR QUE, se elas já estão sendo lidas no momento em que se pede a número da matricula? Imaginei isto:

 

#include <stdio.h>
#define MAXMAT 3

int main (void)
{
    int matricula[MAXMAT], dia[MAXMAT], mes[MAXMAT], ano[MAXMAT], i;

    for (i = 0; i < MAXMAT; i++)
    {
        printf("Numero da %i matricula: ", i + 1);
        scanf("%i", &matricula[i]);

        if(!matricula[i])
        {
            matricula[i] = '\0';
            break;
        }

        printf("Dia: "); scanf("%i", &dia[i]);
        printf("Mes: "); scanf("%i", &mes[i]);
        printf("Ano: "); scanf("%i", &ano[i]);
    }

    if (matricula[0] != '\0')
    {
        i = 0;
        printf("\n--- Matriculas: \n");
        while (matricula[i])
        {
                printf("Matricula n: %i\nData: %i / %i / %i\n",
                       matricula[i], dia[i], mes[i], ano[i]);
                i++;
        }
    }

    scanf("%*c");
    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim. Leia um número da matricula que gostaria de "pesquisar" e armazene-0 em uma variável. Percorra o vetor "mat" (utilizando outro loop e trabalhando com os indices) para verificar se há coincidências.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensa um pouco ai, não deu 1 MINUTO entre a minha resposta e o seu comentário.

 

Pelo código que mandei e por estar vendo estruturas de repetição você já sabe como percorrer um vetor. Se já sabe isto, provavelmente já aprendeu estruturas de seleção (if, else...). Basta percorrer o vetor e comparar os números armazenados no vetor "mat" com o número que foi pesquisado.

 

printf("Matricula a ser pesquisada: ");
int pesq_matricula; scanf("%i", &pesq_matricula);

if(!pesq_matricula) //SE FOR 0...
  return 1;

 else
 {
        // aqui você procura no vetor.
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.