Ir ao conteúdo
  • Cadastre-se

Igor Vargas

Membro Pleno
  • Posts

    180
  • Cadastrado em

  • Última visita

Tudo que Igor Vargas postou

  1. Estou com um problema onde eu tenho uma função que contem os dados mas não sei como mandar esses dados para printar a minha grade de horário, meu código esta assim, já tentei de varias formas. Se puder me ajudar agradeço. Preciso entregar segunda-feira mas parei nessa parte. A função que contem os dados é a grade_al. Estou tentando mandar os dados para a função consulta onde será print a matriz com as matérias que o aluno selecionou. Deixei abaixo do código e o pdf caso queira dar uma olhada. #include <stdio.h> #include <string.h> struct disciplinas { int codigo; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas; int grade[4][6]; }; int cont; void grade_al(struct registro grade_T[4][6],struct disciplinas dis[5]){ dis[0].codigo=122; dis[1].codigo=127; dis[2].codigo=132; dis[3].codigo=143; dis[4].codigo=135; strcpy(dis[0].h_Semanal,"08:00"); strcpy(dis[1].h_Semanal,"10:00"); strcpy(dis[2].h_Semanal,"13:00"); strcpy(dis[3].h_Semanal,"15:00"); dis[0].c_Horaria=60; dis[1].c_Horaria=60; dis[2].c_Horaria=60; dis[3].c_Horaria=30; dis[4].c_Horaria=60; int x,y; for(x=0; x<4; x++){ for(y=0; y<6; y++){ grade_T[0][1].grade[x][y]=dis[x].codigo; grade_T[1][2].grade[x][y]=dis[x].codigo; grade_T[2][2].grade[x][y]=dis[x].codigo; grade_T[3][2].grade[x][y]=dis[x].codigo; grade_T[2][2].grade[x][y]=dis[x].codigo; grade_T[1][4].grade[x][y]=dis[x].codigo; grade_T[0][5].grade[x][y]=dis[x].codigo; grade_T[1][3].grade[x][y]=dis[x].codigo; grade_T[0][5].grade[x][y]=dis[x].codigo; strcpy(grade_T[0][0].grade[x][y],dis[x].h_Semanal); strcpy(grade_T[1][0].grade[x][y],dis[x].h_Semanal); strcpy(grade_T[2][0].grade[x][y],dis[x].h_Semanal); strcpy(grade_T[3][0].grade[x][y],dis[x].h_Semanal); } } } int add_Aluno(struct registro al[3], struct disciplinas add_Dis[5]){ int dis,x,y,guarda[5],cont=0,num; char resp; int volta,j; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); printf("\n"); int passa; do{ int yy=1; printf("Digite seu nome:"); fflush(stdin); //Funcão de Cadastro do aluno gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome, al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); cont++; do{ volta=1; printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); for(j=0;j<num;j++){ if((al[y].l_Disciplinas == 127 && al[j].l_Disciplinas == 132 && j != y )|| al[y].l_Disciplinas ==135 && al[j].l_Disciplinas == 143) { printf("voce não pode se inscrever em duas disciplas de mesmo horario\n"); volta=0; al[y].l_Disciplinas=0; break; } } } }while(volta != 1 ); printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(resp != 'n'); } void consulta(struct registro al_C[3],struct disciplinas dis[5]){ struct registro grade_T[4][6]; int x,escolhe,a,b; char nome[20]; char salva[3]; int cont_L=0; int teste[3]; char resp; int matricula_N,salva_V; char string[3]; char horas[20]; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou Consultar aluno.---\n"); printf("--------------------------------------\n"); printf("1.Pesquisa por Nome\n"); printf("2.Pesquisa por Matricula\n"); fflush(stdin); scanf("%d",&escolhe); if(escolhe ==1){ printf("Digite o nome do aluno:"); fflush(stdin); gets(nome); for(x=0; x<4; x++){ if(strcmp(al_C[x].nome, nome)==0){ salva_V=1; } } } else if(escolhe == 2) { printf("Digite a Matricula do aluno:"); fflush(stdin); scanf("%d",&matricula_N); for(x=0; x<4; x++) { if(al_C[x].matricula == matricula_N ){ //compara as duas matricular se são iguais se for ele printa a grade do aluno salva_V=1; } } } if(salva_V == 1){ printf(" Segunda Terca Quarta Quinta Sexta\n"); for(a=0; a<4; a++){ for(b=0; b<6; b++){ printf("[%d]",grade_T[a][b].grade); } printf("\n"); } } } main(){ struct disciplinas curso[5]; struct registro alunos[3]; int escolha; do{ printf("\n\n"); printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); printf("3. Sair\n"); fflush(stdin); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso); } else if(escolha == 2) { consulta(alunos,curso); } }while(escolha !=3); } Trabalho 2.pdf
  2. Estou com um problema onde da erro depois que eu digito algo no scanf("%d",&al[y].l_Disciplinas) e fecha o programa. struct disciplinas { int codigo; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas; int grade[4][6]; }; void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5]){ struct registro grade_T[4][6]; int dis,x,y,guarda[5],cont=0,num; char resp; int volta,j; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); printf("\n"); int passa; do{ int yy=1; printf("Digite seu nome:"); fflush(stdin); //Funcão de Cadastro do aluno gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome, al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); cont++; do{ volta=1; printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); for(y=0; y<num; y++){ fflush(stdin); scanf("%d",&al[y].l_Disciplinas); } for(x=0; x<4; x++){ for(y=0; y<6; y++){ if(al[x].l_Disciplinas== 122) { grade_T[0][1].grade[x][y]=add_Dis[x].codigo; grade_T[1][2].grade[x][y]=add_Dis[x].codigo; } else if(al[x].l_Disciplinas== 127){ grade_T[2][2].grade[x][y]=add_Dis[x].codigo; grade_T[3][2].grade[x][y]=add_Dis[x].codigo; } else if(al[x].l_Disciplinas== 132){ grade_T[2][2].grade[4][4]=add_Dis[x].codigo; grade_T[1][4].grade[5][5]=add_Dis[x].codigo; } else if(al[x].l_Disciplinas== 143) { grade_T[0][5].grade[x][y]=add_Dis[x].codigo; } else if(al[x].l_Disciplinas== 135) { grade_T[1][3].grade[x][y]=add_Dis[x].codigo; grade_T[0][5].grade[x][y]=add_Dis[x].codigo; } strcpy(grade_T[0][0].grade[x][y],add_Dis[x].h_Semanal); strcpy(grade_T[1][0].grade[x][y],add_Dis[x].h_Semanal); strcpy(grade_T[2][0].grade[x][y],add_Dis[x].h_Semanal); strcpy(grade_T[3][0].grade[x][y],add_Dis[x].h_Semanal); } }for(x=0; x<num; x++){ for(j=0;j<num;j++){ if((al[x].l_Disciplinas == 127 && al[j].l_Disciplinas == 132 && j != x )|| al[x].l_Disciplinas ==135 && al[j].l_Disciplinas == 143) { printf("voce não pode se inscrever em duas disciplas de mesmo horario\n"); volta=0; al[y].l_Disciplinas=0; break; } } } }while(volta != 1 ); printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(resp != 'n'); }
  3. Eu tenho que colocar os indices dentro da estrutura? @isrnick , n sei se entendi direito.
  4. Eai galera. Meu código esta mostrando um erro quando eu quero passar um numero pra uma certa posição na matriz. Ele da o seguinte erro " [Error] assignment to expression with array type". struct disciplinas { int codigo; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas; int grade[4][6]; }; int cont; void grade_al(struct registro grade_T[][6], struct disciplinas dis[5]){ dis[0].codigo=122; dis[1].codigo=127; dis[2].codigo=132; dis[3].codigo=143; dis[4].codigo=135; strcpy(dis[0].h_Semanal,"08:00"); strcpy(dis[1].h_Semanal,"10:00"); strcpy(dis[2].h_Semanal,"13:00"); strcpy(dis[3].h_Semanal,"15:00"); dis[0].c_Horaria=60; dis[1].c_Horaria=60; dis[2].c_Horaria=60; dis[3].c_Horaria=30; dis[4].c_Horaria=60; int x; for(x=0; x<5; x++){ grade_T[0][1].grade=dis[x].codigo; grade_T[1][2].grade=dis[x].codigo; grade_T[2][2].grade=dis[x].codigo; grade_T[3][2].grade=dis[x].codigo; grade_T[2][2].grade=dis[x].codigo; grade_T[1][4].grade=dis[x].codigo; grade_T[0][5].grade=dis[x].codigo; grade_T[1][3].grade=dis[x].codigo; grade_T[0][5].grade=dis[x].codigo; } grade_T[0][0].grade=dis[0].h_Semanal; grade_T[1][0].grade=dis[1].h_Semanal; grade_T[2][0].grade=dis[2].h_Semanal; grade_T[3][0].grade=dis[3].h_Semanal; }
  5. Eu entendi essa parte só não conhecia o strstr . tenho aula hj e verei se posso usar, qualquer coisa eu volto aqui haha mas valeu pela paciência @giu_d
  6. @giu_d Verificar só se tem o ponto mas tem a parte do "com ou br " depois.
  7. Deu certo a questão do nome ahah valeu. Agora sobre o email char email[] = "[email protected]"; int i; for (i = 0; i < strlen(email); i++) { if (email[i + 2] == '@' && email[i + 1] != ' ' && email[i] != ' ') { printf("Validado!"); } } Falta o .com ou .br estou pensando em fazer um vetor e colocar os nomes tipo @hotmail ou gmail dentro e depois comparar ele com o email inscrito. @giu_d
  8. O problema pra mim é que não posso usar *result = strstr porque não aprendi isso em aula e o professor é meio rigido nesse quesito de usar só o que é aprendido em aula. Estou tentando outras formas mas nenhuma deu certo ainda
  9. O problema é que o mesmo scanf que eu uso pra digitar o nome normal seria o mesmo que eu teria que pegar as 3 primeiras letras do nome e compara com o nome que esta guardado no struct para printar uma grade de horário. Quanto ao email se eu fizesse uma condição assim funcionaria? @giu_d if(strcmp(email[x],".com")==1 ||strcmp(email[x],".br")==1 || strcmp(email[x],"hotmail")==1 || strcmp(email[x],"yahoo")==1|| strcmp(email[x],"gmail")==1 || email[x] <2){ printf("Email invalido"); }
  10. Eu tentei fazer o que você falou. O nome não funcionou aqui. printf("Digite o nome do aluno:"); char string[3]; fflush(stdin); gets(nome); for(x=0; x<4; x++){ string[x]=nome; if(string[x] == al_C[x].nome && string[x+1] == al_C[x+1].nome && string[x+1] == al_C[x+1].nome){ salva_V=1; } O email fiz uma parte mas n entendi o resto. printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); for(x=0; x<strlen(al[cont].email); x++){ if(al[x].email=='@'){ passa++; }if(al[passa-2].email!=' '){ } } Faz poucos meses que estou programando tem muita coisa que não assimilei direito. @giu_d
  11. Estou terminando um trabalho e falta algumas coisas. Queria saber a opinião de vocês nessas questões. 1. Preciso validar um email ele tem que ter um @ nao pode ter menos de 2 letras no inicio e dever ter um ponto final. 2. Também preciso achar um aluno pelas 3 primeiras letras do nome dele. No código abaixo ele esta comparando o nome inteiro. printf("Digite o nome do aluno:"); fflush(stdin); gets(nome); for(x=0; x<4; x++){ if(strcmp(al_C[x].nome, nome)==0){ salva_V=1; } } }
  12. Entendi não estava percebendo isso, Obrigado pela ajuda de todos.
  13. @giu_d Se ela digitar 127 e 135 ela não vai poder se inscrever pois as disciplinas tem os mesmos horários, ai retorna pra ela fazer a inscrição das disciplinas novamente.
  14. printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); do{ for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); volta=1; Digamos q ele digite o numero dois no primeiro scanf. Ai no segundo scanf vai digitar 127 e 132 ou135 e143 se for isso q ele digitar, vai ser verdadeiro, pois só vai ser falso se não for umas das 2 opções pelo menos foi essa lógica q eu utilizei posso estar errado. @isrnick adicionado 8 minutos depois A minha struct é essa. Sera que o int l_Dsciplinas não deveria ser um vetor ? pois são 5 disciplinas, mas no caso o aluno escolhe em quantas deseja se matricular. Sendo assim acho que o if funcionária. struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas; };
  15. Mesmo colocando if ele não funcionou. Não quero passar todo o código porque é meio extenso.
  16. @devair1010 nossa não tinha visto isso. Mas o meu outro do while parece q não esta reconhecendo essa condição else if((al[x].l_Disciplinas == 127 && al[x].l_Disciplinas == 132 )|| al[x].l_Disciplinas ==135 && al[x].l_Disciplinas == 143) { printf("voce Não pode se inscrever em duas disciplas de mesmo horario\n"); volta=0; al[y].l_Disciplinas=0; } }
  17. Estou com uma duvida na minha função onde meu laço nao esta reconhecendo meu if e não esta fazendo a volta para o scanf("%d",&al[x]l._Disciplinas) . Colocarei só a função. Meus dois do while não estão funcionando. void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5], struct grade g_Materias[20][5]){ int dis,x,y,guarda[5],cont=0,num; char resp; int volta; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); for(x=0; x<5; x++){ printf(" %d %s \n",add_Dis[x].codigo,add_Dis[x].nome); } printf("\n"); do{ printf("Digite seu nome:"); fflush(stdin); //Funcão de Cadastro do aluno gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome, al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); cont++; volta=1; printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); do{ for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); volta=1; } for(x=0; x<num; x++){ if(al[x].l_Disciplinas==122) //Adiciona as disciplinas para as posiçoes //da matriz { strcpy(g_Materias[0][0].grade_C,"Algo"); strcpy(g_Materias[1][1].grade_C,"Algo"); } else if(al[x].l_Disciplinas==127) { strcpy(g_Materias[2][1].grade_C,"Estr"); strcpy(g_Materias[4][2].grade_C,"Estr"); } else if(al[x].l_Disciplinas==132) { strcpy(g_Materias[2][1].grade_C,"Sist"); strcpy(g_Materias[1][3].grade_C,"Sist"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][4].grade_C,"Padr"); } else if(al[x].l_Disciplinas==135) { strcpy(g_Materias[1][2].grade_C,"Banc"); strcpy(g_Materias[1][4].grade_C,"Banc"); } else if((al[x].l_Disciplinas == 127 && al[x].l_Disciplinas == 132 )|| al[x].l_Disciplinas ==135 && al[x].l_Disciplinas == 143) { printf("voce Não pode se inscrever em duas disciplas de mesmo horario\n"); volta=0; al[y].l_Disciplinas=0; } } }while(volta == 0 ); printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(resp =! 'n'); }
  18. Quando eu do um print na minha matriz de string esta aparecendo uns simbolos e nao as palavras. Abaixo do codigo esta como deve ser apresentado. O exercicio pede isso. •Ao associar um aluno a uma disciplina, verificar se os blocos de horário necessários estão disponíveis na grade do aluno, se sim, associar a disciplina, senão mostrar uma mensagem informando o conflito. Por exemplo, se o aluno já estiver associado a uma disciplina que ocorre na terça as 13, não será possível adicionar outra disciplina que ocorre no mesmo dia e horário. Vide Tabela 1, disciplinas 0127 e 0132. • Ao inserir o email dos alunos, validar se o email está correto: a. Email deve possuir: 3 caracteresou mais; um sinal de arroba (@); outros 3 caracteres ou mais; seguidos de um sinal de ponto final (.); e mais um conjunto de pelo menos 2 caracteres; • Permitir consultar os alunos por nome ou parte do nome. Ao encontrar, permitir ver seus dados e sua grade horária. • Exemplo, aluno Pedro deve ser encontrado com “Ped” (a partir de 3 caracteres); • As informações das disciplinas são armazenadas na lista de disciplinas; as informações sobre os alunos são armazenadas na lista de alunos. Fazer um link, como visto em aula, entre eles, não duplicar os dados. #include <stdio.h> #include <string.h> struct disciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas[5]; }; struct grade { char grade_C[4][5]; }; int cont; void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5], struct grade g_Materias[4][5]){ int dis,x,y,guarda[5],cont=0,num; char resp; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); for(x=0; x<5; x++){ printf(" %d %s \n",add_Dis[x].codigo,add_Dis[x].nome); } printf("\n"); printf(" Horas Horario\n\n"); for(x=0; x<5; x++){ printf(" %d %s\n",add_Dis[x].c_Horaria,add_Dis[x].h_Semanal); } printf("\n"); do{ x=0; printf("Digite seu nome:"); fflush(stdin); //Funcão de Cadastro do aluno gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome,al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); cont++; for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); } for(x=0; x<num; x++){ if(al[x].l_Disciplinas==122) //Adiciona as disciplinas para as posiçoes //da matriz { strcpy(g_Materias[0][0].grade_C,"Algo"); strcpy(g_Materias[1][1].grade_C,"Algo"); } else if(al[x].l_Disciplinas==127) { strcpy(g_Materias[2][1].grade_C,"Estr"); strcpy(g_Materias[4][2].grade_C,"Estr"); } else if(al[x].l_Disciplinas==132) { strcpy(g_Materias[2][1].grade_C,"Sist"); strcpy(g_Materias[1][3].grade_C,"Sist"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][4].grade_C,"Padr"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][2].grade_C,"Banc"); strcpy(g_Materias[1][4].grade_C,"Banc"); } } printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(x=!'n'); } void consulta(struct registro al_C[3], struct grade grade_M[4][5] ){ int x,escolhe,a,b; char nome[20]; char salva[3]; int cont_L=0; int teste[3]; char resp; int matricula_N; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou Consultar aluno.---\n"); printf("--------------------------------------\n"); printf("1.Pesquisa por Nome\n"); printf("2.Pesquisa por Matricula\n"); scanf("%d",&escolhe); do{ if(escolhe ==1){ printf("Digite o nome do aluno:"); fflush(stdin); gets(nome); for(x=0; x<4; x++){ if(al_C[x-2].nome == ' ') { //copia as 3 primeiras letras para dentro do vetor salva strcpy(salva, al_C[x-2].nome); strcpy(teste, salva); } if(strcmp(al_C[x].nome, nome)==0 || strcmp(teste,salva)==0){ //compara os nomes ou compara a 3 letras dos dois nome se for igual ele printa a grade for(a=0; a<4; a++){ for(b=0; b<5; b++){ //matriz da grade curricular printf("%s",grade_M[a][b].grade_C); } } } } } else if(escolhe == 2) { printf("Digite a Matricula do aluno:"); fflush(stdin); scanf("%d",&matricula_N); for(x=0; x<4; x++) { if(al_C[x].matricula == matricula_N ); //compara as duas matricular se são iguais se for ele printa a grade do aluno { for(a=0; a<4; a++){ for(b=0; b<5; b++){ //matriz da grade curricular printf("%s",grade_M[a][b].grade_C); } printf("\n"); } } } } printf("Deseja consultar outro aluno? S/N"); fflush(stdin); scanf("%c",&resp); }while(resp != 's'); } main(){ struct disciplinas curso[5]; struct registro alunos[3]; struct grade m_Salva[4][5]; int escolha; curso[0].codigo=122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); do{ printf("\n\n"); printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); printf("3. Sair\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso,m_Salva); } else if(escolha == 2) { consulta(alunos,m_Salva); } }while(escolha !=3); }
  19. @devair1010 estou com uma dúvida no meu trabalho onde preciso passar as máterias que o aluno escolheu para a grade, o problema é que a minha grade esta dentro do meu registro alunos, o que eu estou pensando em fazer é colocar outro registro só com a grade e depois adicionar as matérias. Eu não sei se tem uma maneira mais prática de fazer isso. #include <stdio.h> #include <string.h> struct disciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas[5]; char grade[4][5]; }; struct grade { char grade[4][5]; }; int cont; void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5], struct grade g_Materias[4][5]){ int dis,x,y,guarda[5],cont=0,num; char resp; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf(" Lista de Disciplinas\n"); printf(" Codigo Nome\n\n"); for(x=0; x<5; x++){ printf(" %d %s \n",add_Dis[x].codigo,add_Dis[x].nome); } printf("\n"); printf(" Horas Horario\n\n"); for(x=0; x<5; x++){ printf(" %d %s\n",add_Dis[x].c_Horaria,add_Dis[x].h_Semanal); } printf("\n"); do{ x=0; printf("Digite seu nome:"); fflush(stdin); gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome,al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); cont++; for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); } for(x=0; x<num; x++){ if(al[x].l_Disciplinas==122) { strcpy(g_Materias[0][0].grade,"Algo"); strcpy(g_Materias[1][1].grade,"Algo"); } else if(al[x].l_Disciplinas==127) { strcpy(g_Materias[2][1].grade,"Estr"); strcpy(g_Materias[4][2].grade,"Estr"); } else if(al[x].l_Disciplinas==132) { strcpy(g_Materias[2][1].grade,"Sist"); strcpy(g_Materias[1][3].grade,"Sist"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][4].grade,"Padr"); } else if(al[x].l_Disciplinas==143) { strcpy(g_Materias[1][2].grade,"Banc"); strcpy(g_Materias[1][4].grade,"Banc"); } } printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(x=!'n'); } main(){ struct disciplinas curso[5]; struct registro alunos[3]; struct grade m_Salva[4][5]; int escolha; curso[0].codigo=122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); do{ printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); printf("3. Sair\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso,m_Salva); } else if(escolha == 2) { } }while(escolha !=3); }
  20. valeu pela ajuda infelizmente tive que ficar com o código de baixo, pois terei que explicar pro professor o que eu fiz ahah não estou muito avançado em C ainda, mas muito obrigado pela ajuda. Tem mais coisa pra fazer no trabalho quando eu tiver dúvida vou postar aqui @devair1010.
  21. Consegui arrumar. Agora a dúvida é se o que eu fiz até agora esta certo ou esta faltando algo. #include <stdio.h> #include <string.h> struct disciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[40]; int l_Disciplinas[5]; }; int cont; void add_Aluno(struct registro al[3], struct disciplinas add_Dis[5]){ int dis,x,y,guarda[5],cont=0,num; char resp; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); do{ x=0; printf("Digite seu nome:"); fflush(stdin); gets(al[cont].nome); printf("Digite seu Sobrenome:"); gets(al[cont].sobrenome); strcat(al[cont].nome,al[cont].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[cont].matricula); printf("Digite seu e-mail:"); fflush(stdin); gets(al[cont].email); printf("Digite em quantas materias deseja se matricular:"); scanf("%d",&num); printf("Digite o codigo das diciplinas que voce deseja se matricular\n"); for(y=0; y<num; y++){ scanf("%d",&al[y].l_Disciplinas); } printf("Deseja Cadastrar outro aluno? s/n:"); fflush(stdin); scanf("%c",&resp); }while(x=!'n'); } main(){ struct disciplinas curso[5]; struct registro alunos[3]; int escolha; char grade[4][5]; curso[0].codigo=122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); do{ printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); printf("3. Sair\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso); }else if(escolha == 2){ } }while(escolha !=3); }
  22. Olá estou com uma duvida nesse exercicio na ultima frase, esta pedindo para fazer uma lista mas n diz que é para colocar no registro, estou colocando a lista dentro do registro para guardar mas n sei se isso que é para fazer. Desenvolva um algoritmo para gerenciar alunos de um curso. É preciso armazenar informações sobre os alunos e sobre as disciplinas. Sobre disciplinas, é preciso armazenar uma lista das mesmas, contendo seu nome, nome do professor, carga horária (30 ou 60) e horário semanal. A lista de disciplinas a ser utilizada pode ser encontrada ao final deste documento, na seção “Recursos”. As mesmas não irão ser modificadas durante a execução do programa. Quanto aos horários, para simplificar, as aulas ocorrem apenas nos dias de semana e são organizadas em blocos de 2 horas. Uma disciplina pode possuir um ou dois blocos por semana. Cada dia da semana possui 4 blocos. O bloco 1 ocorre sempre às 8:00 e o bloco 2 ocorre as 10:00 da manhã. O bloco 3 ocorre as 13:00 e o bloco 4 as 15:00. Por exemplo, a disciplina de algoritmos ocorre às terças e quintas. No segundo bloco da terça e no terceiro da quinta. Consequentemente, algoritmos será ministrado as 10:00 de terça e as 13:00 de quinta. Quanto aos alunos, armazenar uma lista dos mesmos, para cada aluno deve conter: matricula, nome, sobrenome, email, lista de disciplinas matriculadas (apenas o semestre corrente) e grade horária (criada com base nos blocos explicados acima). Para as listas de alunos, disciplinas e disciplinas matriculadas do aluno, é preciso utilizar vetores. Para armazenar a grade horária do aluno, é necessário utilizar matrizes. Para cara aluno e disciplina, é necessário utilizar registros. #include <stdio.h> #include <string.h> struct diciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[30]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[20]; int l_Diciplinas[5]; }; void add_Aluno(struct registro al[3], struct diciplinas add_Dis[5]){ char sairm; int dis,x,y=0,guarda[5]; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf("Lista de diciplinas\n"); //mostra a lista das materias for(x=0; x<3; x++){ printf("Digite seu nome:"); fflush(stdin); gets(al[x].nome); printf("Digite seu Sobrenome:"); gets(al[x].sobrenome); strcat(al[x].nome,al[x].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[x].matricula); printf("Digite seu e-mail:"); gets(al[x].email); printf("Digite O codigo das diciplinas que voce deseja se matricular\n"); for(y=0; y<5; y++){ scanf("%d",&al[x].l_Diciplinas); } } } main(){ struct diciplinas curso[5]; struct registro alunos[3]; int escolha; char grade[5][5]; curso[0].codigo=122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); grade[0][0]="Segunda"; printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso); }else if(escolha == 2){ } }
  23. Galera estou com uma duvida nesse Trabalho. Eu preciso mostra umas lista parecida com esta. o problema é que ele n esta pegando os dados salvos na main. o meu codigo esta mais ou menos assim. #include <stdio.h> #include <string.h> struct diciplinas { int codigo; char nome[20]; char professor[20]; int c_Horaria; char h_Semanal[50]; }; struct registro { int matricula; char nome[20]; char sobrenome[20]; char email[20]; int l_Diciplinas[20]; char grade[5][5]; }; void add_Aluno(struct registro al[3], struct diciplinas add_Dis[5]){ char sair; int dis,x,y=0,guarda[5]; printf("\n\n"); printf("--------------------------------------\n"); printf("---voce selecionou adicionar aluno.---\n"); printf("--------------------------------------\n"); printf("Lista de diciplinas\n"); for(x=0; x<5; x++){ //mostra a lista das materias printf("%d\n",add_Dis[x].codigo); } for(x=0; x<3; x++){ printf("Digite seu nome:"); gets(al[x].nome); printf("Digite seu Sobrenome:"); gets(al[x].sobrenome); strcat(al[x].nome,al[x].sobrenome); printf("Digite sua Matricula:"); scanf("%d",&al[x].matricula); printf("Digite seu e-mail:"); gets(al[x].email); printf("Quantas diciplinas voce deseja se matricular:"); scanf("%d",&dis); printf("Digite o codigo das diciplinas que voce deseja se matricular:"); while(y<dis){ scanf("%d",&dis); guarda[y]=dis; y++; } } } main(){ struct diciplinas curso[5]; struct registro alunos[3]; int escolha; curso[0].codigo=0122; strcpy(curso[0].nome,"Algoritimos"); curso[0].c_Horaria=60; strcpy(curso[0].h_Semanal,"Segunda bloco 1 e terca bloco 2"); curso[1].codigo=0127; strcpy(curso[1].nome,"Estrutura de dados"); curso[1].c_Horaria=60; strcpy(curso[1].h_Semanal,"terca bloco 3 e quarta bloco 4"); curso[2].codigo=0132; //dados salvos strcpy(curso[2].nome,"Sistemas Operacionais A "); curso[2].c_Horaria=60; strcpy(curso[2].h_Semanal,"Terca bloco 3 e Quinta bloco 2"); curso[3].codigo=0143; strcpy(curso[3].nome,"Padroes de Projeto"); curso[3].c_Horaria=30; strcpy(curso[3].h_Semanal,"Sexta bloco 2"); curso[4].codigo=0135; strcpy(curso[4].nome,"Banco de dados ll"); curso[4].c_Horaria=60; strcpy(curso[4].h_Semanal,"Quarta bloco 3 e sexta bloco 2"); printf(" -----------------------\n"); printf(" ------Bem Vindo!!------\n"); printf(" -----------------------\n"); printf("Escolha uma das opções abaixo\n"); printf("1. Adicionar aluno\n"); printf("2. Consultar aluno\n"); scanf("%d",&escolha); if(escolha == 1){ add_Aluno(alunos,curso); }else if(escolha == 2){ } }
  24. Eai galera. Estou com um problema nesse condigo, onde quando eu escolho a segunda opção ele da um erro depois que voce digita a placa do seu carro. Estou achando que a comparação de strings não esta funcionando, mas n acho o motivo de não estar. #include <stdio.h> #include <string.h> struct FastCar { int ano_F; float preco; char descricao[50],fabricante[20],cor[20],placa[6]; }; void cadastro(struct FastCar op_Um[1] ){ int x; printf("-------------------------------------------\n"); printf("-----voce Selecionou Cadastrar Automovel---\n"); printf("-------------------------------------------\n"); for(x=0; x<1; x++){ fflush(stdin); printf("Digite a Placa do Seu carro: "); gets(op_Um[x].placa); strupr(op_Um[x].placa); printf("Digite a Descricao do seu carro: "); gets(op_Um[x].descricao); printf("Digite o Fabricante do seu carro : "); gets(op_Um[x].fabricante); printf("Digite a Cor do seu Carro: "); gets(op_Um[x].cor); printf("Digite o Ano de fabricação do seu carro: "); scanf("%d",&op_Um[x].ano_F); printf("Digite o Preco do seu carro:"); scanf("%f",&op_Um[x].preco); } } int consulta(struct FastCar op_Dois[1]){ int x,valor; char nova_P[6]; printf("-------------------------------------------\n"); printf("-----voce Selecionou Consultar Automovel---\n"); printf("-------------------------------------------\n"); fflush(stdin); printf("Digite a placa do carro: "); gets(nova_P); for(x=0; x<1; x++){ int salva=strcmp(op_Dois[x].placa, nova_P[x]); if(salva==0){ fflush(stdin); puts(op_Dois[x].descricao); puts(op_Dois[x].fabricante); puts(op_Dois[x].cor); printf("%d\n",op_Dois[x].ano_F); printf("%f",op_Dois[x].preco); } else{ return valor=1; } } if(valor==1){ printf("Essa Placa nao existe ou foi digitada incorreta"); } } void relatorio(struct FastCar op_Tres[1]){ int x; printf("-------------------------------------------\n"); printf("-----voce Selecionou Gerar Relatorio---\n"); printf("-------------------------------------------\n"); printf("Todos Os Carros"); for(x=0; x<1; x++){ puts(op_Tres[x].placa); puts(op_Tres[x].descricao); puts(op_Tres[x].fabricante); puts(op_Tres[x].cor); printf("%d\n",op_Tres[x].ano_F); printf("%f",op_Tres[x].preco); } } main(){ struct FastCar Carros[1]; int escolha; do{ printf("1. Cadastrar automovel\n"); printf("2. Consultar automovel\n"); printf("3. Gerar Relatorio\n"); printf("4. Sair do Programa\n"); scanf("%d",&escolha); if(escolha == 1){ cadastro(Carros); }else if(escolha == 2){ consulta(Carros); }else if(escolha == 3){ relatorio(Carros); }else if(escolha == 4){ break; } }while(escolha!= 4); }
  25. Obrigado pela ajuda n tinha pensado desse jeito. @devair1010

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!