Ir ao conteúdo

Fábio Henrique013

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Tudo que Fábio Henrique013 postou

  1. Isso ae, aproveitar que não está taxando as pequenas coisas por enquanto, só em agosto.
  2. Iae, Gabriel. Vou te apontar alguns detalhes, antes de tudo, segue o código. #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LENGTH 100 #define MAX_CODE_LENGTH 10 #define MAX_TURMAS 2 #define MAX_ALUNOS 6 typedef struct { char nome[MAX_NAME_LENGTH]; int matricula; int notas[3]; } Aluno; typedef struct { char nome[MAX_NAME_LENGTH]; char codigo[MAX_CODE_LENGTH]; int numAlunos; Aluno alunos[MAX_ALUNOS]; } Turma; typedef struct { char nome[MAX_NAME_LENGTH]; int registro; int numTurmas; Turma turmas[MAX_TURMAS]; } Professor; void exibirInformacoesProfessor(Professor *prof) { printf("Professor: %s\n", prof->nome); printf("Registro número: %d\n", prof->registro); for (int i = 0; i < prof->numTurmas; i++) { printf("Turma %s - %s, %d alunos\n", prof->turmas[i].codigo, prof->turmas[i].nome, prof->turmas[i].numAlunos); } } void exibirInformacoesAluno(Professor *prof, int matricula, char *codigoTurma) { for (int i = 0; i < prof->numTurmas; i++) { if (strcmp(prof->turmas[i].codigo, codigoTurma) == 0) { for (int j = 0; j < prof->turmas[i].numAlunos; j++) { if (prof->turmas[i].alunos[j].matricula == matricula) { Aluno aluno = prof->turmas[i].alunos[j]; int notaFinal = (aluno.notas[0] + aluno.notas[1] + aluno.notas[2]) / 3; char conceito; if (notaFinal >= 90) { conceito = 'A'; } else if (notaFinal >= 80) { conceito = 'B'; } else if (notaFinal >= 70) { conceito = 'C'; } else if (notaFinal >= 60) { conceito = 'D'; } else if (notaFinal >= 40) { conceito = 'E'; } else { conceito = 'F'; } printf("Aluno: %s\n", aluno.nome); printf("Matrícula: %d\n", aluno.matricula); printf("Prova 1: %d / Prova 2: %d / Prova 3: %d\n", aluno.notas[0], aluno.notas[1], aluno.notas[2]); printf("Nota Final: %d - Conceito %c\n", notaFinal, conceito); return; } } } } printf("Aluno não encontrado.\n"); } void inserirAluno(Professor *prof, char *nome, int matricula, char *codigoTurma) { for (int i = 0; i < prof->numTurmas; i++) { if (strcmp(prof->turmas[i].codigo, codigoTurma) == 0) { if (prof->turmas[i].numAlunos < MAX_ALUNOS) { Aluno novoAluno; strcpy(novoAluno.nome, nome); novoAluno.matricula = matricula; novoAluno.notas[0] = 0; novoAluno.notas[1] = 0; novoAluno.notas[2] = 0; prof->turmas[i].alunos[prof->turmas[i].numAlunos] = novoAluno; prof->turmas[i].numAlunos++; printf("Aluno inserido com sucesso.\n"); } else { printf("Turma cheia.\n"); } return; } } printf("Turma não encontrada.\n"); } void lancarNotas(Professor *prof, int matricula, char *codigoTurma, int nota1, int nota2, int nota3) { for (int i = 0; i < prof->numTurmas; i++) { if (strcmp(prof->turmas[i].codigo, codigoTurma) == 0) { for (int j = 0; j < prof->turmas[i].numAlunos; j++) { if (prof->turmas[i].alunos[j].matricula == matricula) { prof->turmas[i].alunos[j].notas[0] = nota1; prof->turmas[i].alunos[j].notas[1] = nota2; prof->turmas[i].alunos[j].notas[2] = nota3; printf("Notas lançadas com sucesso.\n"); return; } } } } printf("Aluno não encontrado.\n"); } void exibirInformacoesTurma(Professor *prof, char *codigoTurma) { for (int i = 0; i < prof->numTurmas; i++) { if (strcmp(prof->turmas[i].codigo, codigoTurma) == 0) { Turma turma = prof->turmas[i]; printf("Informações da turma %s - %s\n", turma.codigo, turma.nome); printf("%d alunos\n", turma.numAlunos); for (int j = 0; j < turma.numAlunos; j++) { printf("Aluno: %s Matrícula: %d\n", turma.alunos[j].nome, turma.alunos[j].matricula); } return; } } printf("Turma não encontrada.\n"); } void exibirSituacaoAlunos(Professor *prof, char *codigoTurma) { for (int i = 0; i < prof->numTurmas; i++) { if (strcmp(prof->turmas[i].codigo, codigoTurma) == 0) { Turma turma = prof->turmas[i]; printf("Situação na Turma %s - %s\n", turma.codigo, turma.nome); for (int j = 0; j < turma.numAlunos; j++) { Aluno aluno = turma.alunos[j]; int notaFinal = (aluno.notas[0] + aluno.notas[1] + aluno.notas[2]) / 3; char conceito; char situacao[20]; if (notaFinal >= 90) { conceito = 'A'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 80) { conceito = 'B'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 70) { conceito = 'C'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 60) { conceito = 'D'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 40) { conceito = 'E'; strcpy(situacao, "Exame Especial"); } else { conceito = 'F'; strcpy(situacao, "Reprovado"); } printf("Aluno: %s Matrícula: %d Nota Final: %d - Conceito %c Situação: %s\n", aluno.nome, aluno.matricula, notaFinal, conceito, situacao); } return; } } printf("Turma não encontrada.\n"); } void exportarDados(Professor *prof, char *outputFilename) { FILE *outputFile = fopen(outputFilename, "w"); if (!outputFile) { perror("Erro ao abrir o arquivo de saída"); return; } fprintf(outputFile, "DADOS EXPORTADOS\n"); fprintf(outputFile, "Professor %s - Registro %d\n", prof->nome, prof->registro); for (int i = 0; i < prof->numTurmas; i++) { Turma turma = prof->turmas[i]; fprintf(outputFile, "Turma %s - %s\n", turma.codigo, turma.nome); for (int j = 0; j < turma.numAlunos; j++) { Aluno aluno = turma.alunos[j]; int notaFinal = (aluno.notas[0] + aluno.notas[1] + aluno.notas[2]) / 3; char conceito; char situacao[20]; if (notaFinal >= 90) { conceito = 'A'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 80) { conceito = 'B'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 70) { conceito = 'C'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 60) { conceito = 'D'; strcpy(situacao, "Aprovado"); } else if (notaFinal >= 40) { conceito = 'E'; strcpy(situacao, "Exame Especial"); } else { conceito = 'F'; strcpy(situacao, "Reprovado"); } fprintf(outputFile, "Aluno: %s\n", aluno.nome); fprintf(outputFile, "Matrícula: %d\n", aluno.matricula); fprintf(outputFile, "Notas: %d %d %d\n", aluno.notas[0], aluno.notas[1], aluno.notas[2]); fprintf(outputFile, "Nota Final: %d - Conceito %c\n", notaFinal, conceito); fprintf(outputFile, "Situação: %s\n\n", situacao); } } fclose(outputFile); printf("Dados exportados com sucesso.\n"); } void carregarDados(Professor *prof, char *inputFilename) { FILE *inputFile = fopen(inputFilename, "r"); if (!inputFile) { perror("Erro ao abrir o arquivo de entrada"); return; } // Adicione a lógica para carregar os dados do arquivo conforme necessário fclose(inputFile); printf("Dados carregados com sucesso.\n"); } int main() { Professor prof; strcpy(prof.nome, "Rodrigo"); prof.registro = 1234; prof.numTurmas = 2; Turma turma1; strcpy(turma1.nome, "Matematica"); strcpy(turma1.codigo, "MAT101"); turma1.numAlunos = 0; Turma turma2; strcpy(turma2.nome, "Portugues"); strcpy(turma2.codigo, "POR202"); turma2.numAlunos = 0; prof.turmas[0] = turma1; prof.turmas[1] = turma2; exibirInformacoesProfessor(&prof); inserirAluno(&prof, "Aluno1", 1001, "MAT101"); inserirAluno(&prof, "Aluno2", 1002, "MAT101"); inserirAluno(&prof, "Aluno3", 1003, "POR202"); exibirInformacoesTurma(&prof, "MAT101"); exibirInformacoesTurma(&prof, "POR202"); lancarNotas(&prof, 1001, "MAT101", 85, 90, 88); lancarNotas(&prof, 1002, "MAT101", 75, 80, 78); lancarNotas(&prof, 1003, "POR202", 65, 70, 68); exibirInformacoesAluno(&prof, 1001, "MAT101"); exibirInformacoesAluno(&prof, 1003, "POR202"); exibirSituacaoAlunos(&prof, "MAT101"); exibirSituacaoAlunos(&prof, "POR202"); exportarDados(&prof, "dados.txt"); return 0; } Algumas funções não estavam corretamente declaradas antes de serem usadas no main ou em outras funções. As funções inserirAluno, lancarNotas e outras não verificavam os limites de alunos por turma ou a existência de turmas e alunos. Correção: Adicionei verificações para garantir que não se ultrapassem os limites de alunos e que as turmas/alunos existam antes de tentar acessá-los ou modificá-los. O uso de strcpy para copiar strings não estava sendo realizado corretamente, especialmente na função inserirAluno. Correção: Ajustei o uso de strcpy para copiar as strings primeiro para uma variável temporária e depois inseri-las na estrutura de dados correta. O cálculo da nota final e a determinação do conceito estavam corretos, mas não estavam sendo utilizados adequadamente nas funções exibirInformacoesAluno e exibirSituacaoAlunos. Correção: Ajustei as funções para utilizar e exibir corretamente essas informações. A função exportarDados não estava implementada corretamente e não verificava a abertura do arquivo de saída. Correção: Implementei a lógica completa para abrir o arquivo, verificar erros e escrever as informações estruturadas dos professores, turmas e alunos no arquivo de saída. Algumas funções estavam com a lógica mal estruturada ou faltando, como a necessidade de retornar mensagens apropriadas caso um aluno ou turma não fossem encontrados. Correção: Adicionei mensagens de erro apropriadas e reestruturei a lógica das funções para melhor clareza e funcionalidade. Espero que de tudo certo, abraços.
  3. Olá, Rafael! Para o seu sistema de controle de lâmpadas por comando de voz, o Arduino é necessário para processar os comandos de voz recebidos pela placa de reconhecimento de voz (a placa vermelha). A placa de voz por si só não possui a capacidade de controlar diretamente os relés ou as lâmpadas; ela apenas reconhece os comandos de voz e envia sinais ao Arduino. O Arduino, então, interpreta esses sinais e aciona os relés que controlam as lâmpadas. Em resumo, a placa de reconhecimento de voz faz o reconhecimento dos comandos, mas é o Arduino que faz o processamento e controle das ações desejadas (ligar/desligar as lâmpadas). Se precisar de mais alguma ajuda ou explicação detalhada sobre a montagem e programação, estou à disposição! Abraço!
  4. Boa noite, Matateu. Tudo bem? Na minha visão, você consegue um mouse melhor por um preço baixo. Particularmente, faz tempo que não utilizo mouse com fio e estou utilizando o Logitech G304 no momento. A única diferença entre esses dois que você mencionou é o peso e a DPI do mouse, porque de resto são coisas superficiais. Tem algumas opiniões de uma galera que fala sobre a pegada do Glorious e como ele da menos suor na mão, mas isso aí vai da pessoa. Só sei que nunca mais pegarei um mouse com fio, setup clean e o polling rate é igual para todos, quase.
  5. Boa noite, guerreiros(as). Estou com um problema que estou batendo a cabeça para resolver. As teclas de F1 até F12 não funcionam por algum motivo. Até poucos dias atrás estavam funcionando perfeitamente; abaixava e aumentava a música, mutava, etc. Agora só estão funcionando no navegador, tipo F5 (refresh) e tal. Não queria mexer na BIOS por acreditar ser alguma besteira que fiz. Meu teclado é o Teclado Gamer Semi Mecânico Warrior Wakiza LED Rainbow - TC208 Observação: tentei já FN + ESC e FN + caps lock Consegui resolver. Obrigado!! Vi um vídeo gringo em que ele menciona ir até o Gerenciador de Dispositivos e verificar se existe algum erro nas categorias de Teclado e Dispositivos de Interface Humana. Desabilite e habilite o dispositivo para que ele volte ao normal. No meu caso, havia um dispositivo com um sinal de erro . Fui lá, desabilitei e habilitei, e as teclas de função voltaram ao normal. Só não sei como faço para fechar o tópico.

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...