Pesquisar na Comunidade
Mostrando resultados para as tags ''lista dinamica''.
Encontrado 2 registros
-
Boa tarde! Esse é o meu primeiro post aqui, então me desculpem por qualquer erro. Eu estou tentando fazer um programa em C para cadastro de alunos. Basicamente ele precisa cadastrar quantos alunos o usuário quiser (máximo 50) e cada aluno possui uma chave (identificação) e três notas (n1, n2, n3). Até o cadastro, parece que deu tudo certo, mas ocorre um erro estranho quando tento apresentar os alunos. O código é o seguinte: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <malloc.h> #define MAX 50 //Estrutura de Alunos typedef struct{ int chave; int n1; int n2; int n3; }ALUNO; //Lista dinâmica typedef struct{ ALUNO A[MAX]; int qtdAlunos; }LISTA; //Função para iniciar lista void inicia_sistema(LISTA* li){ li->qtdAlunos = 0; printf("\n\nSistema Iniciado!\nVocê tem %d alunos cadastrados.\n--------------------------------------\n\n", li->qtdAlunos); } //Função para cadastrar alunos int cadastra_aluno(LISTA* li, ALUNO al){ int i = li->qtdAlunos; if(li->qtdAlunos == 0){ li->A[0] = al; return 1; }else{ i++; li->A[i] = al; return 1; } return 0; } //Função para listar alunos void lista_aluno(LISTA* li){ int i; for (i=0; i < li->qtdAlunos; i++){ printf("Aluno %d\n", i); printf("Nota 1: %i\n", li->A[i].n1); printf("Nota 2: %i\n", li->A[i].n2); printf("Nota 3: %i\n\n\n", li->A[i].n3); } } int main(){ setlocale(LC_ALL, "Portuguese"); LISTA* li = (LISTA*) malloc(sizeof(LISTA)); ALUNO al[MAX]; int op, cont, result; do{ printf("Pressione para escolher:\n"); printf("1 - Iniciar Sistema\n"); printf("2 - Cadastrar Aluno\n"); printf("3 - Listar Alunos\n"); printf("0 - Sair\n"); scanf("%d", &op); switch(op){ case 1: inicia_sistema(li); break; case 2: system("cls"); printf("Cadastro de Alunos\n\n--------------------------------------\n\n"); printf("Você tem %d alunos cadastrados.\n", li->qtdAlunos); printf("Nota 1: "); scanf("%d", &al[li->qtdAlunos].n1); printf("Nota 2: "); scanf("%d", &al[li->qtdAlunos].n2); printf("Nota 3: "); scanf("%d", &al[li->qtdAlunos].n3); al[li->qtdAlunos].chave = li->qtdAlunos; result = cadastra_aluno(li, al[li->qtdAlunos]); li->qtdAlunos++; if(result > 0){ printf("Aluno cadastrado!\n"); printf("Você tem %d alunos cadastrados.\n\n", li->qtdAlunos); }else{ printf("Aluno não cadastrado!\n"); printf("Você tem %d alunos cadastrados.\n\n", li->qtdAlunos); } break; case 3: system("cls"); printf("Listar Alunos\n\n--------------------------------------\n\n"); lista_aluno(li); break; } }while(op!=0); } A saída, para um caso de 3 alunos cadastrados, está em anexo.
-
- vetor
- lista dinamica
-
(e %d mais)
Tags:
-
boa tarde, alguém poderia me ajudar em um exercício.? 1. Faça um programa que cadastre funcionários. Para cada funcionário dever ser cadastrados nome e salário. Os dados devem ser armazenados em uma lista dinâmica simplesmente encadeada e ordenada, de forma decrescente, pelo salário do funcionário. Posteriormente, o programa deve mostrar: a) Cadastrar nome e salário; b) Listar todos os funcionários desordenados; c) Listar todos os funcionários ordenados; d) O nome do funcionário que tem o maior salário (em caso de empate mostrar todos); e) A média salarial de todos os funcionários juntos; f) A quantidade de funcionários com salário superior a um valor fornecido pelo usuário. Caso nenhum funcionário satisfaça essa condição, mostra mensagem. Construa um programa onde o usuário entre com 20 valores que deverão ser armazenados em uma pilha. Feito isso, o programa deverá apresentar os seguintes resultados: somatório de todos os valores ímpares, somatório de todos os valores pares, somatório de todos os valores que estão nas posições impares da pilha, somatório de todos os valores que estão nas posições pares.2. comecei assim, #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct funcionario{ float salario; //chave char nome[35]; struct funcionario *prox; }funcionario; funcionario* cria(float salario){ funcionario *novo; novo = (funcionario*) malloc(sizeof(funcionario)); novo->salario = salario; novo->prox = NULL; return novo; } funcionario *inserir(funcionario *cabeca, float salario) { funcionario *novo = NULL, *atual = NULL, *anterior = NULL; novo = cria(salario); if(novo!=NULL) { for(atual = cabeca; atual != NULL && (atual->salario < salario); atual = atual->prox) { anterior = atual; } if(!anterior) { //se for nulo insere no inicio da fila novo->prox = cabeca; cabeca = novo; } else { novo->prox = anterior->prox; anterior->prox = novo; } } else { printf("erro de alocacao"); } return cabeca; } int main (){ }
-
- c
- lista ordenada
-
(e %d mais)
Tags: