Download the Guru IA app
Android and iOS

Gabriel
#include <stdio.h> #include <stdlib.h> #include <locale.h> ...
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define maxaluno 1
#define maxatividade 1
typedef struct {
char categoria;
char descricao[1000];
int horas;
} atividade;
typedef struct {
int numeropessoal;
char nome[1000];
int ingressou; // Ano que o aluno ingressou no curso.
atividade atividades[maxatividade]; // Vetor de atividades, que armazena até o número máximo de atividades que o aluno realizou.
} aluno;
typedef struct {
char ncurso[1000]; // Nome do curso
int tminimo; // Tempo mínimo do curso
int tmaximo; // Tempo máximo do curso
aluno alunos[maxaluno]; // Quantidade de alunos que estão realizando o curso.
} curso;
//Typedef Struct: E utilizado para definir uma estrutura sem nome imediato, mas cria um chamado para uma estrutura que já foi definida.
//Em vez de declarar variáveis usando struct toda vez, você pode simplesmente usar ATIVIDADE. Isso simplifica a sintaxe e melhora a legibilidade do código
// Função para coletar as informações do curso
void informecurso(curso *c) {
//A função é definida para receber um ponteiro. Isso permite que a função modifique diretamente os valores dentro da estrutura passada.
printf("Digite o nome do curso: ");
fgets(c->ncurso, 1000, stdin);
//Rntrada padrão que armazena no campo ncurso da estrutura curso.
//A função fgets é usada para ler até 999 caracteres.
printf("Qual tempo máximo do curso: ");
scanf("%d", &c->tmaximo);
printf("Qual o tempo mínimo do curso: ");
scanf("%d", &c->tminimo);
}
// Função para coletar os dados de um aluno
void informacaodoaluno(aluno *a) {
printf("Nome do aluno: ");
fgets(a->nome, 1000, stdin);
printf("Número pessoa do aluno: ");
scanf("%d", &a->numeropessoal);
//fgets é usado para ler uma linha de texto, e armazená-la no campo nome da estrutura aluno.
printf("Ano que iniciou os estudos: ");
scanf("%d", &a->ingressou);
}
// Função para adicionar uma atividade a um aluno
void nomedaatividade(atividade *a) {
// Lê a categoria da atividade
printf("Qual atividade o aluno realizou:(P - Pessoal, C - Científica, V - Voluntária, S - Social, T - Técnica): ");
scanf(" %c", &a->categoria);
getchar();
// Limpa o uma área de memória utilizada para armazenar temporariamente dados enquanto eles estão sendo transferidos de um lugar para outro do teclado após ler a categoria.
// Lê a descrição da atividade
printf("Descrição da atividade: ");
fgets(a->descricao, 1000, stdin);
// Lê o tempo de duração da atividade
printf("Informe o tempo de duração da atividade (em horas): ");
scanf("%d", &a->horas);
getchar();
}
// Função para exibir os dados do curso
void evidenciardcurso(const curso *c) {
printf("\nNome do Curso: %s", c->ncurso);
printf("Tempo mínimo do Curso: %d horas\n", c->tminimo);
printf("Tempo máximo do Curso: %d horas\n", c->tmaximo);
for (int i = 0; i < maxaluno; i++) {
// Um loop para definir o numero maximo de alunos.
const aluno *a = &c->alunos[i];
//Um ponteiro constante para o i-ésimo aluno na lista de alunos do curso.
printf("\nAluno %d - Matrícula: %d\n", i + 1, a->numeropessoal);
//Exibe o número do aluno (baseado no índice do loop) e seu número de matrícula.
printf("Nome do aluno: %s", a->nome);
//Exibe o nome do aluno.
printf("Ano que iniciou os estudos: %d\n", a->ingressou);
//Exibe o ano em que o aluno começou seus estudos.
int somahoras = 0;
//Inicializa uma variável para somar as horas das atividades do aluno.
for (int j = 0; j < maxatividade; j++) {
const atividade *act = &a->atividades[j];
if (act->horas > 0) {
//Verifica se a atividade tem uma duração maior que zero
printf("Atividade %d - Tipo: %c\n", j + 1, act->categoria);
printf("Descrição: %s", act->descricao);//Exibe a descrição da atividade.
printf("Duração: %d horas\n", act->horas);//Exibe a duração da atividade em horas.
somahoras += act->horas;
}
}
if (somahoras >= c->tminimo) {
printf("O aluno atingiu a carga horária mínima necessária.\n");
} else {
printf("O aluno não atingiu a carga horária mínima necessária.\n");
}
}
}
int main() {
setlocale(LC_ALL, "Portuguese");
curso c;
informecurso(&c);
int escolha;
int continuar = 1;
while (continuar) {
printf("\nEscolha uma opção:\n");
printf("1. Adicionar aluno\n");
printf("2. Adicionar atividade para um aluno\n");
printf("3. Mostrar dados do curso\n");
printf("4. Sair\n");
printf("Escolha: ");
scanf("%d", &escolha);
getchar();
//Exibe um menu de opções para o usuário.
switch (escolha) {
case 1:
informacaodoaluno(&c.alunos[0]);
printf("Aluno adicionado com sucesso!\n");
break;
case 2:
if (c.alunos[0].numeropessoal != 0) {
nomedaatividade(&c.alunos[0].atividades[0]);
printf("Atividade adicionada com sucesso!\n");
} else {
printf("Nenhum aluno registrado para adicionar atividades.\n");
}
break;
//Adiciona uma atividade ao primeiro aluno, se houver algum registrado.
case 3:
evidenciardcurso(&c);
break;
//Mostra os dados do curso chamando
case 4:
printf("Encerrando...\n");
continuar = 0;
break;
//Encerra o programa definindo
}
}
return 0;
}
Ajuste o codigo para 50 alunos e100 atividades
#include <stdio.h> #include <stdlib.h> #include <locale.h>
#define maxaluno 1 #define maxatividade 1
typedef struct { char categoria; char descricao[1000]; int horas; } atividade;
typedef struct { int numeropessoal; char nome[1000]; int ingressou; // Ano que o aluno ingressou no curso. atividade atividades[maxatividade]; // Vetor de atividades, que armazena até o número máximo de atividades que o aluno realizou. } aluno;
typedef struct { char ncurso[1000]; // Nome do curso int tminimo; // Tempo mínimo do curso int tmaximo; // Tempo máximo do curso aluno alunos[maxaluno]; // Quantidade de alunos que estão realizando o curso. } curso;
//Typedef Struct: E utilizado para definir uma estrutura sem nome imediato, mas cria um chamado para uma estrutura que já foi definida. //Em vez de declarar variáveis usando struct toda vez, você pode simplesmente usar ATIVIDADE. Isso simplifica a sintaxe e melhora a legibilidade do código
// Função para coletar as informações do curso void informecurso(curso *c) { //A função é definida para receber um ponteiro. Isso permite que a função modifique diretamente os valores dentro da estrutura passada. printf("Digite o nome do curso: "); fgets(c->ncurso, 1000, stdin); //Rntrada padrão que armazena no campo ncurso da estrutura curso. //A função fgets é usada para ler até 999 caracteres.
printf("Qual tempo máximo do curso: ");
scanf("%d", &c->tmaximo);
printf("Qual o tempo mínimo do curso: ");
scanf("%d", &c->tminimo);
}
// Função para coletar os dados de um aluno void informacaodoaluno(aluno *a) { printf("Nome do aluno: "); fgets(a->nome, 1000, stdin);
printf("Número pessoa do aluno: ");
scanf("%d", &a->numeropessoal);
//fgets é usado para ler uma linha de texto, e armazená-la no campo nome da estrutura aluno. printf("Ano que iniciou os estudos: "); scanf("%d", &a->ingressou);
}
// Função para adicionar uma atividade a um aluno void nomedaatividade(atividade *a) { // Lê a categoria da atividade printf("Qual atividade o aluno realizou:(P - Pessoal, C - Científica, V - Voluntária, S - Social, T - Técnica): "); scanf(" %c", &a->categoria); getchar(); // Limpa o uma área de memória utilizada para armazenar temporariamente dados enquanto eles estão sendo transferidos de um lugar para outro do teclado após ler a categoria.
// Lê a descrição da atividade
printf("Descrição da atividade: ");
fgets(a->descricao, 1000, stdin);
// Lê o tempo de duração da atividade
printf("Informe o tempo de duração da atividade (em horas): ");
scanf("%d", &a->horas);
getchar();
}
// Função para exibir os dados do curso void evidenciardcurso(const curso *c) { printf("\nNome do Curso: %s", c->ncurso); printf("Tempo mínimo do Curso: %d horas\n", c->tminimo); printf("Tempo máximo do Curso: %d horas\n", c->tmaximo);
for (int i = 0; i < maxaluno; i++) {
// Um loop para definir o numero maximo de alunos.
const aluno *a = &c->alunos[i];
//Um ponteiro constante para o i-ésimo aluno na lista de alunos do curso.
printf("\nAluno %d - Matrícula: %d\n", i + 1, a->numeropessoal);
//Exibe o número do aluno (baseado no índice do loop) e seu número de matrícula.
printf("Nome do aluno: %s", a->nome);
//Exibe o nome do aluno.
printf("Ano que iniciou os estudos: %d\n", a->ingressou);
//Exibe o ano em que o aluno começou seus estudos.
int somahoras = 0;
//Inicializa uma variável para somar as horas das atividades do aluno.
for (int j = 0; j < maxatividade; j++) {
const atividade *act = &a->atividades[j];
if (act->horas > 0) {
//Verifica se a atividade tem uma duração maior que zero
printf("Atividade %d - Tipo: %c\n", j + 1, act->categoria);
printf("Descrição: %s", act->descricao);//Exibe a descrição da atividade.
printf("Duração: %d horas\n", act->horas);//Exibe a duração da atividade em horas.
somahoras += act->horas;
}
}
if (somahoras >= c->tminimo) {
printf("O aluno atingiu a carga horária mínima necessária.\n");
} else {
printf("O aluno não atingiu a carga horária mínima necessária.\n");
}
}
}
int main() { setlocale(LC_ALL, "Portuguese");
curso c;
informecurso(&c);
int escolha;
int continuar = 1;
while (continuar) {
printf("\nEscolha uma opção:\n");
printf("1. Adicionar aluno\n");
printf("2. Adicionar atividade para um aluno\n");
printf("3. Mostrar dados do curso\n");
printf("4. Sair\n");
printf("Escolha: ");
scanf("%d", &escolha);
getchar();
//Exibe um menu de opções para o usuário.
switch (escolha) {
case 1:
informacaodoaluno(&c.alunos[0]);
printf("Aluno adicionado com sucesso!\n");
break;
case 2:
if (c.alunos[0].numeropessoal != 0) {
nomedaatividade(&c.alunos[0].atividades[0]);
printf("Atividade adicionada com sucesso!\n");
} else {
printf("Nenhum aluno registrado para adicionar atividades.\n");
}
break;
//Adiciona uma atividade ao primeiro aluno, se houver algum registrado.
case 3:
evidenciardcurso(&c);
break;
//Mostra os dados do curso chamando
case 4:
printf("Encerrando...\n");
continuar = 0;
break;
//Encerra o programa definindo
}
}
return 0;
} Ajuste o codigo para 50 alunos e100 atividades