msnhd2 0 Denunciar post Postado Setembro 25, 2013 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
reebr 94 Denunciar post Postado Setembro 25, 2013 Ótimo, e o que já conseguiu fazer? Compartilhar este post Link para o post Compartilhar em outros sites
msnhd2 0 Denunciar post Postado Setembro 25, 2013 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
reebr 94 Denunciar post Postado Setembro 25, 2013 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
msnhd2 0 Denunciar post Postado Setembro 25, 2013 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
reebr 94 Denunciar post Postado Setembro 25, 2013 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
msnhd2 0 Denunciar post Postado Setembro 25, 2013 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
reebr 94 Denunciar post Postado Setembro 25, 2013 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
msnhd2 0 Denunciar post Postado Setembro 25, 2013 Está quase só que apos apertar 0 aparece rapidamente a data de nascimento e some Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Setembro 25, 2013 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
msnhd2 0 Denunciar post Postado Setembro 25, 2013 IXI poderia me mostrar? Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Setembro 25, 2013 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