Ir para conteúdo

POWERED BY:

Arquivado

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

viciado

Programa envolvendo matriz

Recommended Posts

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

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

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

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

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

#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", &notas);

}

 

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

#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

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

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

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

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

×

Informação importante

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