Ir para conteúdo
Fórum Script Brasil
  • 0

Struct... Duvidas na Implementação


ProSkater

Pergunta

E ae galera beleza???

Sou novo aqui no forum mais to com duvidas na implematação da função struct...

se vocês poderem me ajudar agradeço

#include <stdio.h>

#include <stdlib.h>

struct Alunos {

char RA[10]; //armazena o RA dos aluno

char Nome[255]; //armazena o nome de um aluno

int Idade; //armazena a idade de um aluno

};

struct Lista {

int tamMax; //armazena a quantidade de elementos que esta lista pode armazenar

int tamUtilizado; //armazena a quantidade de elementos atualmente na lista

struct Alunos* Aluno; //Ponteiro para um vetor de Alunos, onde estarao os dados propriamente ditos;

};

void CriarLista( struct Lista *ListaAlunos, int n ){

printf("Funcao CriarLista() chamada\n");

(*ListaAlunos).tamMax = n;

(*ListaAlunos).tamUtilizado = 0;

(*ListaAlunos).Aluno = (Alunos *) malloc( n * sizeof( Alunos ) );

}

void DestroiLista( struct Lista *ListaAlunos ){

printf("Funcao DestroiLista() chamada\n");

(*ListaAlunos).tamMax = 0;

(*ListaAlunos).tamUtilizado = 0;

free ( (*ListaAlunos).Aluno );

}

void ExibirLista(){

printf("Funcao ExibirLista() chamada\n");

}

void Inserir(struct Lista *ListaAlunos){

printf("Funcao Inserir() chamada\n");

printf("Informe o Nome do Aluno: ");

scanf ("%c",&(*ListaAlunos).Aluno[0].Nome);

}

void Remover(){

printf("Funcao Remover() chamada\n");

}

void ExibirElemento(){

printf("Funcao ExibirElemento() chamada\n");

}

void ExibirPosicao(){

printf("Funcao ExibirPosicao() chamada\n");

}

void Esvaziar(){

}

void ListaVazia( struct Lista *ListaAlunos ){

printf("Funcao ListaVazia() chamada\n");

if( (*ListaAlunos).tamUtilizado == 0 ){

printf("Lista vazia\n");

}

else{

printf("Lista não esta vazia\n");

}

}

void ListaCheia(){

printf("Funcao ListaCheia() chamada\n");

}

int ProcessaMenu(){

int opcao=0;

printf("\n\n");

printf("-------Editor de Listas-------\n\n");

printf(" 1 - Exibir Lista\n");

printf(" 2 - Inserir na Lista\n");

printf(" 3 - Remover da Lista\n");

printf(" 4 - Exibir Elemento\n");

printf(" 5 - Exibir Posicao\n");

printf(" 6 - Esvaziar\n");

printf(" 7 - Lista Vazia\n");

printf(" 8 - Lista Cheia\n");

printf(" 0 - Sair\n\n");

printf("Digite sua opcao: ");

scanf("%d", &opcao);

return opcao;

}

void FinalizaPrograma(){

printf("Finalizando o programa\n");

}

void ProcessaEntrada( int opcaoMenu, struct Lista *ListaAlunos ){

switch( opcaoMenu ){

case 0:

FinalizaPrograma();

break;

case 1:

ExibirLista();

break;

case 2:

Inserir();

break;

case 3:

Remover();

break;

case 4:

ExibirElemento();

break;

case 5:

ExibirPosicao();

break;

case 6:

Esvaziar();

break;

case 7:

ListaVazia (ListaAlunos);

break;

default:

printf("Opcao Invalida\n");

break;

}

getchar();

getchar();

}

void LimpaTela(){

system("cls");

}

int main( int argc, char* argv[] ){

char opcaoMenu=0;

struct Lista ListaAlunos;

CriarLista( &ListaAlunos, 10 );

do{

LimpaTela();

opcaoMenu = ProcessaMenu();

printf("Opcao selecionada: %d\n", opcaoMenu);

ProcessaEntrada( opcaoMenu, &ListaAlunos );

}while (opcaoMenu != 0);

DestroiLista( &ListaAlunos );

return 0;

}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Então eu to fazendo sem ponteros... e to com duvidas na hora de remover

so que tem que remover por o RA informado pelo usuario

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

struct Alunos {

char RA[10]; //armazena o RA dos aluno

char Nome[255]; //armazena o nome de um aluno

int Idade; //armazena a idade de um aluno

};

struct Lista {

int tamMax; //armazena a quantidade de elementos que esta lista pode armazenar

int tamUtilizado; //armazena a quantidade de elementos atualmente na lista

struct Alunos Aluno[10]; //Ponteiro para um vetor de Alunos, onde estarao os dados propriamente ditos;

};

struct Lista ListaAlunos;

void CriarLista(){

ListaAlunos.tamMax = 3;

ListaAlunos.tamUtilizado = 0;

}

void DestroiLista(){

ListaAlunos.tamMax = 0;

ListaAlunos.tamUtilizado = 0;

}

void ExibirLista(){

int x;

for (x=0;x<ListaAlunos.tamUtilizado;x++){

printf("RA: %s Nome: %s Idade: %d\n",ListaAlunos.Aluno[x].RA, ListaAlunos.Aluno[x].Nome, ListaAlunos.Aluno[x].Idade);

}

}

void Inserir(){

printf("Funcao Inserir() chamada\n");

if(ListaAlunos.tamUtilizado < ListaAlunos.tamMax){

getchar();

printf("Informe o RA: ");

gets(ListaAlunos.Aluno[ListaAlunos.tamUtilizado].RA);

printf("Informe o Nome: ");

gets(ListaAlunos.Aluno[ListaAlunos.tamUtilizado].Nome);

printf("Informe a Idade: ");

scanf ("%d", &ListaAlunos.Aluno[ListaAlunos.tamUtilizado].Idade);

ListaAlunos.tamUtilizado++;

}

}

void Remover(){

void ExibirElemento(){

char busca[10];

int i;

getchar();

printf("Informe o RA: ");

gets (busca);

for (i=0; i < ListaAlunos.tamUtilizado; i++){

if ( strcmp(busca, ListaAlunos.Aluno.RA)==0){

printf("RA: %s\n", ListaAlunos.Aluno.RA);

printf("Nome: %s\n", ListaAlunos.Aluno.Nome);

printf("Idade: %d", ListaAlunos.Aluno.Idade);

}

}

}

void ExibirPosicao(){

int pos;

printf("Digite a Posicao: ");

scanf("%d", &pos);

if (pos <= ListaAlunos.tamUtilizado){

printf("RA: %s\n", ListaAlunos.Aluno[pos-1].RA);

printf("Nome: %s\n", ListaAlunos.Aluno[pos-1].Nome);

printf("Idade: %d", ListaAlunos.Aluno[pos-1].Idade);

}

else printf("Posicao inexistente");

}

void Esvaziar(){

ListaAlunos.tamUtilizado = 0;

printf("Lista Vazia");

}

void ListaVazia(){

printf("Funcao ListaVazia() chamada\n");

if( ListaAlunos.tamUtilizado == -1 ){

printf("Lista vazia\n");

}

else{

printf("Lista não esta vazia\n");

}

}

void ListaCheia(){

if (ListaAlunos.tamUtilizado >= ListaAlunos.tamMax){

printf("A Lista esta Cheia");

}

else printf("A Lista não esta Cheia");{

}

}

int ProcessaMenu(){

int opcao=0;

printf("======================MENU=======================\n\n");

printf(" 1 - Exibir Lista\n");

printf(" 2 - Inserir Lista\n");

printf(" 3 - Remover da Lista\n");

printf(" 4 - Exibir Elemento\n");

printf(" 5 - Exibir Posicao\n");

printf(" 6 - Esvaziar Lista\n");

printf(" 7 - Verificar se Lista esta Vazia\n");

printf(" 8 - Verificar se Lista esta Cheia\n");

printf(" 0 - Sair\n\n");

printf("=================================================\n");

printf("Digite sua opcao: ");

scanf("%d", &opcao);

return opcao;

}

void FinalizaPrograma(){

printf("Finalizando o programa\n");

}

void ProcessaEntrada( int opcaoMenu ){

switch( opcaoMenu ){

case 0:

FinalizaPrograma();

break;

case 1:

ExibirLista();

break;

case 2:

Inserir();

break;

case 3:

Remover();

break;

case 4:

ExibirElemento();

break;

case 5:

ExibirPosicao();

break;

case 6:

Esvaziar();

break;

case 7:

ListaVazia();

break;

case 8:

ListaCheia();

break;

default:

printf("Opcao Invalida\n");

break;

}

getchar();

getchar();

}

void LimpaTela(){

system("cls");

}

int main( int argc, char* argv[] ){

int opcaoMenu=0;

CriarLista();

do{

LimpaTela(); //Limpa a tela antes de processar o menu

opcaoMenu = ProcessaMenu(); //Imprime o menu na tela e le a entrada do usuario

printf("Opcao selecionada: %d\n", opcaoMenu); //Imprime na tela a opcao selecionada

ProcessaEntrada( opcaoMenu ); //Processa a opcao escolhida pelo usuario

}while (opcaoMenu != 0);

DestroiLista();

return 0;

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...