Pesquisar na Comunidade
Mostrando resultados para as tags ''Struct''.
Encontrado 55 registros
-
Vetor de Struct, passar Struct para função
uma questão postou Isaias_Picolino Tutoriais & Dicas - C, C++
To com um problema, não sei, já pesquisei, e não dei conta, de passar um struct de vetor para função. Segue o código void inserir (struct Campeonato *camp1) { int i; for (i=0;i<4;i++) { printf ("Nome do time: "); scanf ("%s", camp1[i]->time); } } typedef struct Campeonato { char time[50]; int jog, vit, der, emp, golp, golc, sgol; }Campeonato; int main() { struct Campeonato campeonato[4]; inserir(campeonato); system("PAUSE"); return 0; } Vlw! -
O programa roda bem até a hora de imprimir as informações dos livros, ele imprime só o titulo do primeiro livro e para a execução, as vezes o programa para de responder ou não acontece mais nada. O que pode ser? #include <stdio.h> typedef struct livros { int ISBN; char *titulo; char editora; char local_pub; char data_pub; char primeiro_autor; char segundo_autor; } TLivros; int main() { int i; TLivros vet[10]; TLivros *p; p = (TLivros*)malloc(5*sizeof(TLivros)); for(i=1; i<=2; i++) { printf("\nInforme a data de publicacao do livro %d no formato dd/mm/aa: ",i); fflush(stdin); scanf("%s", &vet[i].data_pub); } for(i=1; i<=2; i++) { printf("\nInforme a data de publicacao do livro %d no formato dd/mm/aa: ",i); fflush(stdin); scanf("%s", &p->data_pub); } for(i=1; i<=2; i++) { vet[i].titulo = (char*)malloc(20*sizeof(char)); } for(i=1; i<=2; i++) { printf("\nInforme o titulo do livro %d: ",i); fflush(stdin); fgets(vet[i].titulo,20,stdin); } printf("-------------------LIVROS-------------------"); for(i=1; i<=2; i++) { printf("\nTitulo do livro %d: %s",i,vet[i].titulo); printf("\nData de publicacao do livro %d: %s",i,vet[i].data_pub); printf("\nData de publicacaodo livro %d: %s",i,p->data_pub); } return 0; }
-
Bom dia. pessoal... Tou com um pequeno problema. É o seguinte. Implementei um algoritmo que cria uma árvore alv (até aqui beleza), mas que em cada nó seja armazenada uma palavra e que quando insiro uma palavra que tenha a mesma primeira letra da que esta no nó, é criada uma lista encadeada. Mas o negócio ta aí. Quando insiro mais de duas palavras que tenham a mesma primeira letra, só imprime as duas ultimas palavras, parece que fica perdido a primeira palavra. E se eu inserir mais, só imprime as duas últimas. Vou colocar só a função de inserir. Se puderem me ajudar agradeceria muito. void inserir(struct avl **pRaiz,struct avl **PAI, char info[]){ struct avl *atual; struct avl *novo; //struct avl *anterior; if(*pRaiz == NULL){ *pRaiz = (struct avl *) malloc(sizeof(struct avl )); (*pRaiz)->prox = NULL; (*pRaiz)->esq = NULL; (*pRaiz)->dir = NULL; strcpy((*pRaiz)->info,info); (*pRaiz)->chave = info[0]; (*pRaiz)->pai=(*PAI); (*pRaiz)->bal=0; return; } else{ if(info[0] <(*pRaiz)->chave){ inserir(& (*pRaiz)->esq,& (*pRaiz), info); (*pRaiz)->bal=avl_height ( (*pRaiz)->dir ) - avl_height ( (*pRaiz)->esq ); if( (*pRaiz)->bal==-2){ if( (*pRaiz)->esq->bal==-1) (*pRaiz)= rotacaoLL ( (*pRaiz) ); else if( (*pRaiz)->esq->bal==1){ (*pRaiz)->esq =rotacaoRR ( (*pRaiz)->esq ); (*pRaiz)= rotacaoLL ( (*pRaiz) ); } } } else{ if(info[0] >(*pRaiz)->chave){ inserir(& (*pRaiz)->dir,& (*pRaiz), info); (*pRaiz)->bal=avl_height ( (*pRaiz)->dir ) - avl_height ( (*pRaiz)->esq ); if( (*pRaiz)->bal==2){ if( (*pRaiz)->dir->bal==1) (*pRaiz)= rotacaoRR ( (*pRaiz) ); else if( (*pRaiz)->dir->bal==-1){ (*pRaiz)->dir=rotacaoLL ( (*pRaiz)->dir); (*pRaiz)= rotacaoRR ( (*pRaiz) ); } } } } if(info[0] == (*pRaiz)->chave){ novo = (struct avl *) malloc(sizeof(struct avl)); if (novo == NULL) exit(0); else{ novo->prox = NULL; novo->esq = NULL; novo->dir = NULL; strcpy((novo)->info,info); novo->chave = info[0]; novo->pai=(*PAI); novo->bal=0; atual = *pRaiz; while(atual->prox != NULL){ atual = atual->prox; } atual->prox = novo; *pRaiz = atual; } //novo->prox = atual; //printf("(%d)%s\n",novo->bal, novo->info); //system("pause"); //anterior->prox = novo; //printf("(%d)%s\n",anterior->bal, anterior->info); //system("pause"); //*pRaiz = atual; return; } } }
- 2 respostas
-
- avl
- lista encadeada
-
(e %d mais)
Tags:
-
Criei uma estrutura do tipo pessoa e pretendo usá-la em uma lista encadeada, porém o seguintes erros aparecem: 'No' has no member named 'dados', 'No' has no member named 'prox' e unknow type name 'p' O programa nem chegou a rodar, alguém pode me ajudar? O arquivo .h é o seguinte: __________________________________________________________________ #ifndef Pessoa #define Pessoa typedef struct pessoa{ char nome[25]; char sobrenome[25]; int registro; }Pessoa; typedef struct no{ Pessoa dados; struct no *prox; }No; typedef struct lista{ No *cabeca; No *cauda; int tamanho; }Lista; No* criaNo(Pessoa p); Lista* criaLista(); void inserir(Lista *l, Pessoa p, int posicao); void remover(Lista* l, int registro); //pesquisa registro e remove a pessoa void imprimeLista(Lista* l); void destruirLista(Lista* l); #endif ________________________________________________________________ O arquivo .c é o seguinte: _______________________________________________________________ #include <stdio.h> #include <stdlib.h> #include "Pessoa.h" No* criaNo(Pessoa p) { No* n; n=(No*)malloc(sizeof(No)); n->dados = p; n->prox = NULL; return n; } Lista* criaLista() { Lista* l = (Lista*)malloc(sizeof(Lista)); l->cabeca = NULL; l->cauda = NULL; l->tamanho = 0; return l; } void inserir(Lista *l, Pessoa p, int posicao); { //já está pronta, porém não achei necessário colocá-la } void remover(Lista* l, int registro) { //já está pronta, porém não achei necessário colocá-la } void imprimeLista(Lista* l) { //já está pronta, porém não achei necessário colocá-la } void destruirLista(Lista *l) { //já está pronta, porém não achei necessário colocá-la }
-
Pessoal, fiz um código utilizando getline, mas há um problema: quando a string lida possui mais de uma palavra, o programa pula para a próxima pergunta. Deem uma olhada por favor: struct estrutura { string nome, tipo; int num_integrantes, posicao_ranking; }; int main () { int opcao = 1; const int qtde = 3; estrutura bandas[qtde]; for (int i = 0; i < qtde; i++) { cout << "Digite o nome da banda: " ; getline (cin, bandas.nome); cout << "Digite o tipo de musica que ela toca: " ; getline (cin, bandas.tipo) ; cout << "Digite o numero de integrantes: "; cin >> bandas.num_integrantes; cout << "Digite a posicao no ranking: "; cin >> bandas.posicao_ranking; while ( (bandas.posicao_ranking<1) or (bandas.posicao_ranking>5) ) { cout << "Posicao invalida. Digite novamente: "; cin >> bandas.posicao_ranking; } cout << "\n\n"; } for (int i = 0; i < qtde; i++) { cout << "Nome = " << bandas.nome << endl; cout << "Tipo = " << bandas.tipo << endl; cout << "Numero integrantes = " << bandas.num_integrantes << endl; cout << "Posicao no ranking - " << bandas.posicao_ranking << endl; cout << "\n\n"; }