viciado 1 Denunciar post Postado Novembro 22, 2008 Programa que: * receba as notas de 15 alunos em cinco provas diferentes e armazene-as em uma matriz 15x5 * os nomes dos 15 alunos e armazene-os em um vetor de 15 posições calcular e mostrar: para cada aluno, o nome, a média aritmética das cincos provas e a situação(aprovado, reprovado) a media da classe Nao quero o codigo pronto mais uma ajuda para começar Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 22, 2008 A moral desse exercício é bem parecido com a moral dos outros tópicos que eu respondi. Faça o loop, leia os dados... etc... Um vetor de nomes de 15 alunos é bem parecido com a moral de uma array bidimensional: char nomes[15][30]; 15, o primeiro número, é o número de alunos. 30, o segundo, é o número máximo de caracteres que um nome pode ter. Para ler os nomes, use fgets. Dê uma lida sobre a função. Para calcular a média, você pega e soma: float media = (M[0] + M[1] + M[2] + M[3] + M[4]) / 5.0 Utilize float para as notas! Para ver se está aprovado ou reprovado, digamos que a média mínima seja 7: if(media >= 7.0) { pirntf("aprovado"); } else { printf("reprovado"); } Para calcular a média da turma, tu soma as médias de todos os alunos e divide por 15. PS. Nota, é interessante perceber o seguinte: Se você estiver no loop da matriz de notas, e pegar o primeiro índice, aplique esse índice à matriz de nomes para pegar o aluno correspondente: for(i = 0; i < 15; i++) { printf("Notas do aluno %s", nomes[i]); for(j = 0; j < 5; j++) //... } Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 22, 2008 A moral desse exercício é bem parecido com a moral dos outros tópicos que eu respondi. Faça o loop, leia os dados... etc... Um vetor de nomes de 15 alunos é bem parecido com a moral de uma array bidimensional: char nomes[15][30]; 15, o primeiro número, é o número de alunos. 30, o segundo, é o número máximo de caracteres que um nome pode ter. Para ler os nomes, use fgets. Dê uma lida sobre a função. Para calcular a média, você pega e soma: float media = (M[0] + M[1] + M[2] + M[3] + M[4]) / 5.0 Utilize float para as notas! Para ver se está aprovado ou reprovado, digamos que a média mínima seja 7: if(media >= 7.0) { pirntf("aprovado"); } else { printf("reprovado"); } Para calcular a média da turma, tu soma as médias de todos os alunos e divide por 15. PS. Nota, é interessante perceber o seguinte: Se você estiver no loop da matriz de notas, e pegar o primeiro índice, aplique esse índice à matriz de nomes para pegar o aluno correspondente: for(i = 0; i < 15; i++) { printf("Notas do aluno %s", nomes[i]); for(j = 0; j < 5; j++) //... } Consegui fazer isso: #include <stdio.h> #include <stdlib.h> int main() { int i,j int M[15][5]; for(i=0;i<15;i++) for(j=0;j<0;j++){ pritnf("Informe a nota[%d]\n Informe o numero da prova[%d]\n",i,j); scanf("%d",&M[i][j]); } char N[15][30]; int count; for(count=0;count<15;count++){ printf("\nDigite os nomes dos alunos\n"); gets(strings[count]); } system("PAUSE"); return 0; } Agora nao entendi bem o resto Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 22, 2008 A variável "strings" não existe no seu código. Tenho certeza de que você não compilou o código. Há ponto-e-vírgula faltando. Como o tio Enésio disse, use fgets(), não gets(). O que você não entendeu? Como calcular as médias? Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 22, 2008 A variável "strings" não existe no seu código. Tenho certeza de que você não compilou o código. Há ponto-e-vírgula faltando. Como o tio Enésio disse, use fgets(), não gets(). O que você não entendeu? Como calcular as médias? Isso nao entedi com calcular Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 22, 2008 #include <stdio.h> #include <stdlib.h> #define NUM 5 int main() { int i = 0; float notas[NUM], media = 0; for(i = 0; i < NUM; i++) { printf("Digite a nota do aluno %d: ", i); scanf("%f", ¬as); } for(i = 0; i < NUM; i++) { media += notas; } media /= NUM; printf("Média: %f\n", media); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 23, 2008 Amigo nao entendi como armazenar os nomes na matriz [15][30]. Você tem um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2008 #include <stdio.h> #include <stdlib.h> #include <string.h> #define NUM 5 #define MAX_TAM 50 int main() { char nomes[NUM][MAX_TAM + 2]; /* +2 pois é necessário espaço para o '\0' e para o '\n' do fgets() */ int i = 0; for (i = 0; i < NUM; i++) { fgets(nomes, MAX_TAM, stdin); nomes[strlen(nomes) - 1] = '\0'; /* esta linha retira o '\n' que o fgets() coloca no fim da string */ } for (i = 0; i < NUM; i++) { printf("Nome %d: %s\n", i, nomes); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 23, 2008 Obrigado. Mais não consigo fazer este programa Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2008 Onde está a dificuldade? O que tentou e fazer e o que não conseguiu? Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 23, 2008 Nao entendo isso: fgets(nomes, MAX_TAM, stdin); nomes[strlen(nomes) - 1] = Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2008 http://www.cplusplus.com/reference/clibrar...tdio/fgets.html stdin -> entrada padrão (Standard Input) A segunda linha retira o \n. Pense: considere a string (str) "iMasters" o tamanho da string é 8, mas fgets() adiciona o '\n' Logo: -> strlen(str) == 9. str[0] = 'i' str[1] = 'M' str[2] = 'a' str[3] = 's' str[4] = 't' str[5] = 'e' str[6] = 'r' str[7] = 's' str[8] = '\n' Queremos retirar o '\n', fazendo com que a string termine após o 's'. Para isso, a posição 8 deve ser o '\0', não '\n'. strlen(str) - 1 == 8 Entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 23, 2008 A primeira linha é um fgets, não tem nada de mais. MAX_TAM é o número de caracteres pra ler e stdin é de onde vem os dados. Leia mais sobre a função. A segunda acessa acessa o último caractere da string de número i da array de strings nomes. Não cheguei a ler o código mas tenho certeza que define para '\0' que é o caractere de terminar string. Compartilhar este post Link para o post Compartilhar em outros sites
jotaelle 0 Denunciar post Postado Novembro 25, 2008 DESCULPE ESCREVER AQUI, MAS VÍ QUE TEM UM MEMBRO TE AJUDANDO E PRECISO DE AJUDA E NÃO CONSIQUI POSTAR!!! E TENHO UMA CERTA PRESSA NA NECESSIDADE DESTA AJUDA Galera, desde que conheci o C++ acompanho o forum com dicas, tuto é show e agora preciso de um help. Estou com um código rodando no DEV C++ mas ainda falta colocar uma condição para quando a pessoa digitar um caracter errado mais de uma vez, não contar como erro e informar o jogador que o caracter é invalido "digite outro" e também logo no início queria que quando a palavra fosse digitada não aprecesse na tela logo no início. Tem tbem um trecho no código (lá no switch) foi um amigo que ajudou no "case 4 : corpo[3] = '\\';" e no case 6 : corpo[5] = '\\'; porque tem que usar 2 barras? Segue //Bibliotecas #include <conio.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> //Variáveis Globais char palavra[65]; char npalavra[65]; char erros[30]; char corpo[7]; int nerros /*NUMERO DE ERROS*/ , nacertos /*NUMERO DE ACERTOS*/, tam /*TAMANHO DA PALAVRA*/; //Protótipo das Funções void titulo(); void entrada(); void tela(); void mostrapalavra(); #define AZUL 3 #define AMARELO 6 #define BRANCO 7 #define NEGRITO 8 #define VERMELHO 4 #define VERDE 10 #define ESCURO 1 #define PRETO 3 HANDLE hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); //Função relacionada a cor <windows.h> //Início do Programa int main() { char opt; do { titulo(); entrada(); tela(); printf(" Jogar novamente? (s/n): "); opt = toupper(getche()); } while(opt == 'S'); titulo(); printf("\n -------------Pressione qualquer tecla para sair...\n"); getch(); return(0); } void entrada() { int cont; tam = 0; printf(" Digite uma palavra (Maximo de 64 caracteres: \n"); gets (palavra); while(palavra[tam] != 0) tam++; nacertos = 0; nerros = 0; for(cont = 0; cont < 30; cont++) erros[cont] = '\0'; for(cont = 0; cont < 65; cont++) npalavra[cont] = '_'; for(cont = 0; cont < 6; cont++) corpo[cont] = ' '; } void titulo() { system("color 2"); system("cls"); system("cls"); printf(" ===================JOGO DA FORCA==================\n"); printf(" ==================================================\n"); SetConsoleTextAttribute(hConsoleHandle, VERDE); printf("\n"); } void tela() //Terceira função - Jogo { int fimjogo = 0, cont, acertou = 0; char c; while(fimjogo == 0) { titulo(); mostrapalavra(); printf(" Digite uma letra: "); c = getch(); for(cont = 0; cont < tam; cont++) if(toupper© == toupper(palavra[cont])) { if(toupper© != npalavra[cont]) { npalavra[cont] = toupper©; nacertos++; } acertou = 1; } if(!acertou) { erros[nerros] = toupper©; nerros++; switch(nerros) { case 6 : corpo[5] = '\\'; case 5 : corpo[4] = '/'; case 4 : corpo[3] = '\\'; case 3 : corpo[2] = '/'; case 2 : corpo[1] = '|'; case 1 : corpo[0] = 'O'; } } if((nacertos == tam) || (nerros == 6)) fimjogo = 1; acertou = 0; } titulo(); mostrapalavra(); cont = 0; while(palavra[cont] != 0) palavra[cont] = toupper(palavra[cont++]); if(nacertos == tam) printf(" PARABENS!! VOCE ACERTOU A PALAVRA ", palavra); else printf(" VOCE PERDEU... A PALAVRA ERA ", palavra); SetConsoleTextAttribute(hConsoleHandle, AZUL); printf("%s\n", palavra); SetConsoleTextAttribute(hConsoleHandle, AZUL); } void mostrapalavra() { int cont; SetConsoleTextAttribute(hConsoleHandle, AMARELO); printf(" /-----\\ %s \n", erros); printf(" | |\n"); printf(" | %c\n", corpo[0]); printf(" | %c%c%c\n", corpo[2], corpo[1], corpo[3]); printf(" | %c %c\n", corpo[4], corpo[5]); printf(" |\n"); printf(" |"); SetConsoleTextAttribute(hConsoleHandle, AZUL); for(cont = 0; cont < tam; cont++) printf(" %c", npalavra[cont]); printf("\n\n"); } Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Dezembro 9, 2008 Acho que o problema esta em armazenar as notas dos alunos: Falha o programa e tenho que finalizar a tarefa quando vou armazenar as notas #include <stdio.h> #include <stdlib.h> int main() { char nome[15][30]; int i, j; for(i=0;i<15;i++){ printf("Digite o nome dos 15 alunos \n"); fgets(nome[i], 30, stdin); nome[i][strlen(nome[i])-1] = '\0'; } float notas[15][5]; for(i=0;i<15;i++) for(j=0;j<5;j++){ printf("Digite o numero do aluno as 5 notas de cada aluno\n"); scanf("%d",notas[i][j]); } for(i=0;i<15;i++) for(j=0;j<5;j++){ printf("%s \n",nome[i]); float media = (notas[i][0] + notas[i][1] + notas[i][2] + notas[i][3] + notas[i][4]) / 5; printf("A media foi: \n %f \n",media); if(media >= 7){ printf("\n Aprovado \n"); } if(media >=5){ printf("\n Exame \n"); } else { printf("\n Reprovado \n"); } } float classe = 0; for(i=0;i<15;i++) for(j=0;j<5;j++){ classe = classe + notas[i][j]; } float media_classe = classe / 75; printf("A media da classe foi: \n %f \n",media_classe); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 9, 2008 notas é uma matriz de float e você as está lendo com %d Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Dezembro 9, 2008 Mesmo colocando %f da o mesmo erro Compartilhar este post Link para o post Compartilhar em outros sites