4n7onio
(usa Nenhuma)
Enviado em 08/06/2017 - 13:38h
1º ) Problema e que eu preciso que as notas sejam alteradas no menu de alteração(case d).
2º ) Preciso criar uma mensagem que pergunte ao usuário se deseja ou não continuar cadastrando alunos ate o limite proposto no case a.
o programa:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main(void)
{
setlocale(LC_ALL, "Portuguese");
printf("\t\t\t\tJosephine v 0.510.n\n");
char menu_1[100]="Escolha uma dessa opções abaixo\n[A] Cadastro de dados\n";
char menu_2[100]="[B] Cadastro de alunos e notas\n[C] Listagem de dados e notas\n[D] Alterar dados\n";
char menu_3[100]="[1] Limpar dados\n[0] Sair do menu\n";
char opcao;
float aux;
unsigned int notas, alunos;
int controle=0;
int editar=0,escolha;
do{
printf("%s",menu_1);
if(controle==1){
printf("%s",menu_2);
};
printf("%s",menu_3);
scanf(" %s",&opcao);
if(opcao=='a'){
system("clear");
printf("Quantidade de alunos\n");
scanf(" %d",&alunos);
printf("Quantidade de notas\n");
scanf(" %d",¬as);
controle=1;
};
char nome[alunos][21], auxc[21];
float matriz[alunos][notas], resultado[alunos];
system("clear");
switch(opcao){
case 'b':
for(int i=0;i<alunos;i++){
system("clear");
printf("Digite o nome do %d aluno: ",i+1);
scanf(" %[A-Za-z0-9 ]s", &nome[i][0]);
system("clear");
for(int j=0;j<notas;j++){
printf("Digite a nota do aluno %s:",nome[i]);
do{
scanf("%f",&matriz[i][j]);
system("clear");
}while(matriz[i][j]>10);
resultado[i]+=matriz[i][j];
}
resultado[i] /= notas;
system("clear");
};
system("clear");
break;
case 'c':
system("clear");
printf("[A] sem oredenar\n");
printf("[B] Ordem crescente\n");
printf("[C] Ordem descrecente\n");
char opcao_2; scanf(" %s",&opcao_2);
switch(opcao_2){
case 'a':
for(int i=0;i<alunos;i++){
printf("%s : %.2f\n",nome[i], resultado[i]);
};
break;
case 'b':
for(int i=alunos-1;i>=0;i--){
for(int j=i;j>=0;j--){
if(resultado[i]>resultado[j]){
aux=resultado[i];
resultado[i]=resultado[j];
resultado[j]=aux;
strcpy(auxc,nome[i]);
strcpy(nome[i],nome[j]);
strcpy(nome[j],nome[i]);
}
}
}
for(int i=0;i<alunos;i++){
printf("%s : %.2f\n",nome[i], resultado[i]);
};
break;
case 'c':
if(controle==2)
for(int i=0;i<=alunos;i++){
for(int j=i+1;j<alunos;j++){
if(resultado[i]<resultado[j]){
aux=resultado[i];
resultado[i]=resultado[j];
resultado[j]=aux;
strcpy(auxc,nome[i]);
strcpy(nome[i],nome[j]);
strcpy(nome[j],auxc);
}
}
}
for(int i=0;i<alunos;i++){
printf("%s : %.2f\n",nome[i], resultado[i]);
};
}
break;
case 'd':
editar=0;
for(int i=0;i<alunos;i++){
printf("%d - %s\n",editar+=1,nome[i]);
};
printf("Qual deseja altera, digite o numero da opção\n");
do{
scanf(" %d",&escolha);
}while(escolha>alunos);
printf("Alteração do %s\n",nome[escolha-1]);
printf("[A] Alterar nome\n");
printf("[B]Alterar nota\n");
char opcao_3; scanf(" %c",&opcao_3);
switch(opcao_3){
case 'a':
printf("Alterar nome\n");
scanf(" %[A-Za-z0-9 ]s", &nome[escolha-1][0]);
break;
case 'b':
printf("Alterar nota\n");
for(int i=0; i<notas;i++){
scanf(" %f",&matriz[escolha-1][i]);
};
}
break;
case '1':
printf("Tudo limpo\n");
for(int i=0;i<alunos;i++){
for(int j=0;j<notas;j++){
matriz[i][j]=resultado[i]=0;
nome[i][0]='0';
}
system("clear");
}
opcao=opcao_2=opcao_3='n';
notas=alunos=controle=editar=escolha=0;
break;
case '0':
exit(0);
};
}while(opcao!='0');
return 0;
}
Desde já agradeço, estou apenas na primeira fase me de um desconto por favor.