Ir ao conteúdo
  • Cadastre-se

Mauro Del Gaudio

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

  1. Boa noite galera! Esse algoritmo cria uma lista 'prato' e cada 'prato' tem outra lista 'ingredientes'. Na hora de inserir ta certinho, quando eu removo um prato ele remove certo também, mas quando vou adicionar um outro prato, depois de ter removido ele para de funcionar na hora que pede o ingrediente, o que pode ser isso? -----------------------------lista.h---------------------------------- #include<iostream> #include<string> using namespace std; typedef struct ingredientes { int codIng; string nomeIng; struct ingredientes *pProxIng; }Tingredientes; typedef struct { Tingredientes *pPrimeiroIng,*pUltimoIng; }Ti; typedef struct prato { string nomePrato; int codPrato; Ti *ingredientes; struct prato *pProxPrato; }Tprato; typedef struct { Tprato *pPrimeiroPrato,*pUltimoPrato; }Tp; void TLista_Inicia(Tp *pLista); int TLista_EhVazia(Tp *pLista); int TLista_Insere(Tp *pLista,int cod,string nomep); int TLista_InsereIngrediente(Tp *pLista,int codPrato,string nome,int cod2); Tprato* TLista_RetiraPrato(Tp *pLista,int codPrato); int TLista_Imprime(Tp *pLista); ---------------------------------lista.cpp---------------------------------------------- #include<iostream> #include<string> #include"lista.h" using namespace std; void TLista_Inicia(Tp *pLista) { pLista->pPrimeiroPrato=new Tprato; pLista->pUltimoPrato=pLista->pPrimeiroPrato; pLista->pPrimeiroPrato->pProxPrato=NULL; /////////////////////////////////////////////////////////////////////////////////// pLista->pPrimeiroPrato->ingredientes=new Ti; pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng=new Tingredientes; pLista->pPrimeiroPrato->ingredientes->pUltimoIng=pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng; pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng->pProxIng=NULL; } int TLista_EhVazia(Tp *pLista) { if(pLista->pPrimeiroPrato==pLista->pUltimoPrato) { return 1; } else { return 0; } } int TLista_Insere(Tp *pLista,int cod,string nomep) { pLista->pUltimoPrato->pProxPrato=new Tprato; pLista->pUltimoPrato=pLista->pUltimoPrato->pProxPrato; pLista->pUltimoPrato->codPrato=cod; pLista->pUltimoPrato->nomePrato=nomep; pLista->pUltimoPrato->ingredientes=new Ti; pLista->pUltimoPrato->ingredientes->pPrimeiroIng=new Tingredientes; pLista->pUltimoPrato->ingredientes->pUltimoIng=pLista->pUltimoPrato->ingredientes->pPrimeiroIng; pLista->pUltimoPrato->ingredientes->pUltimoIng->pProxIng=NULL; pLista->pUltimoPrato->pProxPrato=NULL; return 1; } int TLista_InsereIngrediente(Tp *pLista,int codPrato,string nome,int cod2) { Tprato *aux=new Tprato; aux=pLista->pPrimeiroPrato; while(aux->pProxPrato->codPrato!=codPrato) { aux=aux->pProxPrato; } aux=aux->pProxPrato; aux->ingredientes->pUltimoIng->pProxIng=new Tingredientes; aux->ingredientes->pUltimoIng->pProxIng->nomeIng=nome; aux->ingredientes->pUltimoIng->pProxIng->codIng=cod2; aux->ingredientes->pUltimoIng->pProxIng->pProxIng=NULL; aux->ingredientes->pUltimoIng=aux->ingredientes->pUltimoIng->pProxIng; } int TLista_Imprime(Tp *pLista) { if(TLista_EhVazia(pLista)) { cout<<"Lista vazia!\n\n"<<endl; return 0; } Tprato *tmp; Tingredientes *tmp2; tmp = pLista->pPrimeiroPrato->pProxPrato; while(tmp!=NULL) { cout<<"---------------------"<<endl; cout<<"Codigo do prato: "<<tmp->codPrato<<endl; cout<<"Nome do prato: "<<tmp->nomePrato<<endl; cout<<"Ingredientes"<<endl; cout<<"| Cod | Nome "<<endl; tmp2 = tmp->ingredientes->pPrimeiroIng->pProxIng; while(tmp2!=NULL) { cout<<" "<<tmp2->codIng; cout<<" "<<tmp2->nomeIng<<endl; tmp2=tmp2->pProxIng; } tmp=tmp->pProxPrato; } cout<<"---------------------"<<endl; } Tprato* TLista_RetiraPrato(Tp *pLista,int codPrato) { Tprato *aux=new Tprato; Tprato *aux2=new Tprato; aux=pLista->pPrimeiroPrato; aux2=pLista->pPrimeiroPrato->pProxPrato; while(aux->pProxPrato->codPrato!=codPrato) { aux=aux->pProxPrato; } aux=aux->pProxPrato; while(aux->ingredientes->pPrimeiroIng->pProxIng!=NULL) { delete aux->ingredientes->pPrimeiroIng->pProxIng; aux->ingredientes->pPrimeiroIng=aux->ingredientes->pPrimeiroIng->pProxIng; } while(aux->pProxPrato!=NULL) { if(aux->codPrato==codPrato) { break; } else { aux=aux2; aux=aux->pProxPrato; } } aux2->pProxPrato=aux->pProxPrato; delete aux; } ----------------------------------main.cpp------------------------------------- #include<iostream> #include"lista.h" #include<string> using namespace std; int main() { Tp *pLista=new Tp; int codPrato,codIng; string NomeIng,NomePrato; int resp; int op; do { cout<<"1-Fazer lista"<<endl; cout<<"2-Verificar se a lista esta vazia"<<endl; cout<<"3-Inserir prato com ingredientes na lista"<<endl; cout<<"4-Retirar prato e ingredientes da lista"<<endl; cout<<"5-Imprimir"<<endl; cout<<"7-Sair"<<endl; cin>>op; switch(op) { case 1: TLista_Inicia(pLista); break; case 2: if(TLista_EhVazia(pLista)) { cout<<"Lista vazia"<<endl; } else { cout<<"Lista contem itens"<<endl; } break; case 3: cout<<"Digite o codigo do prato"<<endl; cin>>codPrato; cout<<"Digite o nome do prato"<<endl; fflush(stdin); getline(cin,NomePrato); TLista_Insere(pLista,codPrato,NomePrato); resp=1; while(resp==1) { cout<<"Digite o codigo do ingrediente"<<endl; cin>>codIng; cout<<"Digite o nome do ingrediente que deseja adicionar"<<endl; fflush(stdin); getline(cin,NomeIng); TLista_InsereIngrediente(pLista,codPrato,NomeIng,codIng); cout<<"Deseja adicionar mais um ingrediente? 1-sim 0-nao"<<endl; cin>>resp; } fflush(stdin); break; case 4: cout<<endl; cout<<"Digite o codigo do prato a ser apagado"<<endl; cin>>codPrato; TLista_RetiraPrato(pLista,codPrato); cout<<"Item removido da lista"<<endl; break; case 5: cout<<endl; TLista_Imprime(pLista); break; case 7: break; default: cout<<"Valor inválido"<<endl; break; } }while(op!=7); //cout<<pLista->pUltimo->prato->ingredientes.nome<<"<<<<<<<<<<"<<endl; //cout<<pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng->in while(pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng->pProxIng!=NULL) { delete pLista->pPrimeiroPrato->ingredientes; pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng=pLista->pPrimeiroPrato->ingredientes->pPrimeiroIng->pProxIng; } while(pLista->pPrimeiroPrato->pProxPrato!=NULL) { delete pLista->pPrimeiroPrato; pLista->pPrimeiroPrato=pLista->pPrimeiroPrato->pProxPrato; } return 0; }
  2. Boa tarde galera! bom demais? então estou tentando fazer um programa que ordene vetores, usando lista a entrada ficaria 2 //numero de listas 3 // quantidade de itens 4 3 2 // os itens da lista meu codigo ficou assim: ----------.h---------- #include<iostream> #define MAXTAM 100 using namespace std; typedef struct { int chave; }TItem; typedef struct { TItem item[MAXTAM]; int primeiro,ultimo,comparacoes,movimentacoes; }TLista; int menu(); void TLista_FazVazia(TLista **pLista); int TLista_Insere(TLista **pLista ,int n); int TLista_bubblesort(TLista **pLista); void TLista_ImprimeA(TLista **pLista,int n); ---------------------.cpp---------------------------- #include<iostream> #include "ordena.h" using namespace std; void TLista_FazVazia(TLista **pLista) { (*pLista)->primeiro=0; (*pLista)->ultimo=(*pLista)->primeiro; } int TLista_Insere(TLista **pLista,int n) { if((*pLista)->ultimo==MAXTAM) { cout<<"Lista cheia"<<endl; return 0; } else { for(int i=(*pLista)->primeiro;i<n;i++) { cin>>(*pLista)->item[(*pLista)->ultimo++].chave; } return 1; } } int TLista_bubblesort(TLista **pLista) { bool troca=false; (*pLista)->comparacoes=0; (*pLista)->movimentacoes=0; TItem aux; int i,j; for(i=(*pLista)->primeiro;i<=(*pLista)->ultimo;i++) { for(j=(*pLista)->primeiro;j<(*pLista)->ultimo-1;j++) { if((*pLista)->item[j].chave > (*pLista)->item[j+1].chave) { aux.chave =(*pLista)->item[j].chave; (*pLista)->item[j].chave =(*pLista)->item[j+1].chave; (*pLista)->item[j+1].chave=aux.chave; troca=true; (*pLista)->movimentacoes+=3; } (*pLista)->comparacoes++; } if(troca==false) { break; } } } void TLista_ImprimeA(TLista **pLista,int n) { int i,j; for(i=0;i<n;i++) { for(j=(*pLista)->primeiro;j<=(*pLista)->ultimo-1;j++) { cout<<(*pLista)[ i ].item[ j ].chave<<" "; } cout<<endl; } cout<<endl<<(*pLista)->comparacoes<<endl; cout<<(*pLista)->movimentacoes<<endl; cout<<endl; } ------------------------main.cpp--------------------------- #include<iostream> #include "ordena.h" using namespace std; int main() { TLista *pLista=NULL; int n,Qtd_de_vetores; cin>>Qtd_de_vetores; pLista=new TLista[Qtd_de_vetores]; TLista_FazVazia(&pLista); for(int i=0;i<Qtd_de_vetores;i++) { cout<<"Insere "<<i+1<<endl; cin>>n; TLista_Insere(&pLista,n); TLista_bubblesort(&pLista); } TLista_ImprimeA(&pLista,Qtd_de_vetores); delete[] pLista; return 0; } -------------------------------------------------------------------------------------- A saída esta assim 2 Insere 1 3 4 3 2 Insere 2 3 5 6 4 2 3 4 4 5 6 0 0 0 0 0 0 35 6 não estou entendendo por que esta imprimindo tudo junto se eu coloquei 2 for um pra lista e outro para os itens, alguem pode me explicar? hehe abraço!!
  3. Boa noite galera! Estou tomando um coro aqui hehehehe o enunciado é o seguinte Implemente um TAD TJogador. Cada jogador possui os campos: Nome (no maximo 50 caracteres, sem espaços e acentos), Jogos (número de jogos em que atuou), Pontos (número de pontos marcados), Faltas (número de faltas marcadas) e Cartoes (numero de cartões recebidos). Este TAD deverá possuir as seguintes operações: • createTJogador: função que aloca dinamicamente uma variável do tipo TJogador. • getCampo: função que retorna o valor de um campo. Cada campo originará uma função, por exemplo, o campo nome originará a função GetNome, que retornará o valor do campo Nome. • setCampo: função que atribui um valor fornecido como argumento a um campo. Cada campo originará uma função, por exemplo, o campo nome originará a função SetNome(), que atribuirá o valor ao campo Nome. • calculaScore: calcula um score atribuído ao jogador, definido por: 4 ∗ Jogos + 6 ∗ Pontos − 0.5 ∗ Faltas −Cartoes. Implemente outro TAD, TTime. Cada time possui os campos: Nome (nome do time), Jogadores (um vetor de jogadores, a posição no vetor indica o número da camisa do jogador), Vitorias (numero de vitorias do time), Derrotas (numero de derrotas do time), Empates (numero de empates do time). Este TAD deverá possuir as seguintes operações: • createTTime: função que aloca dinamicamente uma variável do tipo TTime. • getCampo e setCampo: funções que retornam, ou atribuem, o valor de um campo. Semelhante aos implemen- tados na TAD TJogador. • calculaScore: calcula um score atribuído ao time em função de seus jogadores. É definido pela média aritmética dos scores dos jogadores. • calculaPontos: calcula os pontos conquistados pelo time, definido por: 3 ∗Vitorias + Empates. Entrada: A entrada começa com quatro inteiros na primeira linha: T , representando o número de times no campeonato; J, representando o número de jogadores inscritos em cada time; N, representando o número de jogadores por partida; e S, representando o número de entradas de súmulas do juiz. A seguir serão definidos os dados de cada um dos T times e seus J jogadores: na primeira linha será definido o Nome do time, e na segunda linha serão definidos os Nome’s dos J jogadores deste time, separados por um espaço. Os campos numéricos do time e dos jogadores deverão ser inicializados com o valor padrão 0 (zero). Os jogadores são definidos na ordem de seus números de camisa e devem ser inseridos no vetor de jogadores do seu respectivo time. O vetor de jogadores também deve ser alocado dinamicamente pela implementação da TAD correspondente. Haverá uma linha em branco separando a definição dos dados de cada um dos times com seus jogadores. Após a definição dos times e jogadores, serão definidas as S entradas da súmula do juiz. Cada linha representa uma entrada da súmula, composta pelo código da entrada e seus respectivos dados, de acordo com o seguinte padrão: Código | Descrição | Dados 1 | Novo jogo | Time1 Time2 | 2 | Escalação | Time Jogador1 Jogador 2 ... Jogador N | 3 | Ponto marcado | Time Jogador | 4 | Falta marcada | Time Jogador | 5 | Cartão aplicado | Time Jogador | 6 | Fim de jogo | - Os times são identificados pela ordem de definição na entrada, iniciando pelo valor 0 (como nos índices de um vetor). Os jogadores são referenciados pelo número da camisa. Veja que, ao interpretar os dados das súmulas, os dados de times e jogadores deverão ser atualizados de acordo com as ações relacionadas a cada código: 1. Iniciar variáveis para manipular corretamente os dois times. 2. Incrementar o número de jogos de cada jogador escalado. 3. Contabilizar os pontos marcados pelo jogador no campeonato e o número de pontos marcados pelo time na partida atual. 4. Contabilizar o número de faltas marcadas pelo jogador. 5. Contabilizar o número de cartões recebidos pelo jogador. 6. Finalizar o jogo, contabilizando as vitórias, derrotas e/ou empates para os dois times envolvidos na partida. O vencedor será o time que marcar mais pontos na partida, e o empate ocorre quando o número de pontos das duas equipes forem iguais. Saída: A saída deve respeitar o seguinte formato: Time campeao: <nome do time> <score do time> <pontos do time> Time 1: <nome do time 1> <score do time 1> <pontos do time 1> Time 2: <nome do time 2> <score do time 2> <pontos do time 2> : Time T: <nome do time T> <score do time T> <pontos do time T> No caso de empate em pontos, o time que obtiver o maior score será o campeão. Ao persistir o empate, o último time cadastrado deverá ser retornado como campeão. Exemplo de entrada e Saída ====================================================================================================================== Entrada | Saida 2 7 5 38 | Time campeao: Flamengo 16.79 4.00 Vasco | Time 1: Vasco 9.36 4.00 Martin_Silva Andre_Rocha Rodrigo Rafael_Vaz | Time 2: Flamengo 16.79 4.00 Guinazu Fellipe_Bastos Bernardo | | Flamengo | Felipe Leo_Moura Chicao Samir Caceres Erazo | Elano | | 1 0 1 | 2 0 0 1 2 4 5 2 1 1 2 3 5 6 3 0 2 3 1 5 3 1 3 3 0 2 3 0 1 4 0 2 4 0 0 4 1 2 4 1 5 5 0 2 5 1 3 6 1 0 1 2 0 2 3 4 5 6 2 1 0 1 3 5 6 3 0 2 3 1 5 3 0 5 3 1 5 4 0 2 4 0 3 4 1 6 4 0 5 5 0 2 6 1 0 1 2 1 0 1 2 4 5 2 1 0 1 3 5 6 3 1 5 3 1 0 4 1 5 4 1 0 5 1 0 6 ====================================================================================================================== OBSERVAÇÕES: A definição dos jogadores é feita em uma única linha no arquivo de entrada. Na representação da entrada acima a linha foi quebrada em duas apenas pela falta de espaço para acomodar o texto. É necessária a implementação do método main, que deve permitir uma interação com os métodos definidos e implementados pelas TADs. fiz os arquivos assim: -------------------------------------------------------jogador.cpp---------------------------------------------------------- #include<iostream> #include"jogador.h" using namespace std; Tjogadores* createTjogador() { Tjogadores* Jogador = new Tjogadores; return Jogador; } void setNome(Tjogadores* J) { string Nome; cout<<"Digite o nome do jogador"<<endl; getline(cin,Nome); (*J).nome=Nome; } /*void setJogos(Tjogadores* J) { int Jogos; cout<<"Digite a quantidade de jogos que atuou"<<endl; cin>>Jogos; (*J).jogos=jogos; } void setPontos(Tjogadores* J) { int Pontos; cout<<"Digite o numero de pontos marcados"<<endl; Pontos=0; Pontos++; (*J).pontos=Pontos; Pontos=0; } void setFaltas(Tjogadores* J) { int Faltas; cout<<"Digite o numero de faltas marcados"<<endl; cin>>Faltas; (*J).faltas=Faltas; } void setCartoes(Tjogadores* J) { int Cartoes; cout<<"Digite o numero de cartoes recebidos"<<endl; cin>>Cartoes; (*J).cartoes=Cartoes; } void getJogos(Tjogadores* J) { cout<<(*J).nome<<endl; } void getPontos(Tjogadores* J); { cout<<(*J).pontos<<endl; } void getFaltas(Tjogadores* J); { cout<<(*J).faltas<<endl; } void getCartoes(Tjogadores* J); { cout<<(*J).cartoes<<endl; } void calculaScore(Tjogadores* J) { float Score; Score=(4*(*J).jogos)+(6*(*J).pontos)-(0.5*(*J).faltas)-(*J).cartoes; (*J).score=Score; }*/ ---------------------------------------------------------jogador.h-------------------------------------------------------- #include<iostream> #include<string> using namespace std; typedef struct { string nome; int jogos,pontos,faltas,cartoes; float score; }Tjogadores; Tjogadores* createTjogador(); string getNome(Tjogadores* J); int getJogos(Tjogadores* J); int getPntos(Tjogadores* J); int getFaltas(Tjogadores* J); int getCartoes(Tjogadores* J); void setNome(Tjogadores* J); void setJogos(Tjogadores* J); void setPontos(Tjogadores* J); void setFaltas(Tjogadores* J); void setCartoes(Tjogadores* J); void calculaScore(Tjogadores* J); ------------------------------------------------------------time.cpp---------------------------------------------------------------- #include<iostream> #include "jogador.h" using namespace std; TTime* createTTime() { Tjogadores J J=createTjogador(); TTime* Time=new TTime; return Time; } void setNomeDoTime(TTime* T) { string Nome_Time; getline(cin,Nome_Time); (*T).nome_time=Nome_Time; } /*void setJogador(TTime* T) { string NomeJ; cout<<"Digite o nome do jogador"<<endl; getline(cin,NomeJ); (*T)->jogador[0].nome=NomeJ; } void setVitorias(TTime* T) { int num; cout<<"Digite o numero de vitorias"<<endl; cin>>num; (*T).vitorias=num; } void setDerrotas(TTime* T) { int num; cout<<"Digite o numero de derrotas"<<endl; cin>>num; (*T).derrotas=num; } void setEmpates(TTime* T) { int num; cout<<"Digite o numero de empates"<<endl; cin>>num; (*T).empates=num; } void calculaScore(TTime* T,int) { float Score=0; int i; for(i=0;i<n;i++) { Score+=(*T)->jogadores.score; } cout<<Score<<endl; } void calculaPontos(TTime* T) { float Pontos; Pontos=(3*(*T).vitorias)+((*J).empates); cout<<Pontos<<endl; } void getNomeDoTime(TTime* T) { string Nome; cout<<"Digite o nome do time que deseja acessar"<<endl; getline(cin,Nome); for(i=0;i<n;i++) { if((*T).nome==Nome") cout<<(*T).nome<<endl; CONSERTA ESSA ***** else cout<<"Time nao encontrado"<<endl; } } void getJogador(TTime* T) { string Nome; cout<<"Digite o nome do time que deseja acessar"<<endl; getline(cin,Nome); for(i=0;i<n;i++) { if((*T)->jogadores.nome==Nome") cout<<(*T)->jogadores.nome<<endl; else cout<<"Nome nao encontrado"<<endl; } } void getVitorias(TTime* T) { string nomeT; int i; getline(cin,nomeT); for(i=0;i<n;i++) { if((*T).nome_time==nomeT) { cout<<(*T).vitorias<<endl; } else { cout<<"Time não encontrado"; } } } void getDerrotas(TTime* T) { string nomeT; int i; getline(cin,nomeT); for(i=0;i<n;i++) { if((*T).nome_time==nomeT) { cout<<(*T).derrotas<<endl; } else { cout<<"Time não encontrado"; } } } void getEmpates(TTime* T) { string nomeT; int i; getline(cin,nomeT); for(i=0;i<n;i++) { if((*T).nome_time==nomeT) { cout<<(*T).empates<<endl; } else { cout<<"Time não encontrado"; } } }*/ void libera(TTime *T) { Delete T; } ----------------------------------------------------------------Time.h------------------------------------------------------ #include<iostream> #include "jogador.h" #include<string> using namespace std; typedef struct { string nome_time; Tjogadores *jogador; int vitorias,derrotas,empates; }TTime; TTime* createTTime(); string setNomeDoTime(TTime* T); /*void getJogador(TTime* T); void getVitorias(TTime* T); void getDerrotas(TTime* T); void getEmpates(TTime* T); string getNomeDoTime(TTime* T); void setJogador(TTime* T); void setVitorias(TTime* T); void setDerrotas(TTime* T); void setEmpates(TTime* T); void calculaScore(TTime* T); void calculaPontos(TTime* T);*/ void libera(TTime *T) ---------------------------------------------------------------main.cpp----------------------------------------------------------- #include<iostream> #include "jogador.h" #include "time.h" using namespace std; int main() { TTime T; T=createTTime(); setNomeDoTime(T); /*getJogador(T); getVitorias(T); getDerrotas(T); getEmpates(T); getNomeDoTime(T); setJogador(T); setVitorias(T); setDerrotas(T); setEmpates(T); calculaScore(T); calculaPontos(T); */ libera(T) return 0; } ------------------------------------------------------------------------------------------------------------------------------------ No caso estou testando apenas as funções T=createTTime(); setNomeDoTime(T); E esta dando o seguinte erro: In file included from time.h:2:0, from main.cpp:3: jogador.h:10:2: erro: conflicting declaration ‘typedef struct Tjogadores Tjogadores’ jogador.h:10:2: erro: ‘Tjogadores’ has a previous declaration as ‘typedef struct Tjogadores Tjogadores’ main.cpp:4:1: erro: expected initializer before ‘using’ main.cpp: Na função ‘int main()’: main.cpp:9:16: erro: no match for ‘operator=’ in ‘T = createTTime()’ main.cpp:9:16: nota: candidato é: time.h:11:2: nota: TTime& TTime::operator=(const TTime&) time.h:11:2: nota: nenhuma conversão para o argumento 1 de ‘TTime*’ para ‘const TTime&’ main.cpp:10:17: erro: cannot convert ‘TTime’ to ‘TTime*’ for argument ‘1’ to ‘std::string setNomeDoTime(TTime*)’ main.cpp:23:10: erro: ‘libera’ was not declared in this scope main.cpp:24:2: erro: expected ‘;’ before ‘return’ time.cpp:5:1: erro: ‘TTime’ does not name a type time.cpp:12:20: erro: variable or field ‘setNomeDoTime’ declared void time.cpp:12:20: erro: ‘TTime’ was not declared in this scope time.cpp:12:27: erro: ‘T’ was not declared in this scope time.cpp:139:13: erro: variable or field ‘libera’ declared void time.cpp:139:13: erro: ‘TTime’ was not declared in this scope time.cpp:139:20: erro: ‘T’ was not declared in this scope alguem poderia me ajudar, não sei o por que do conflito "typedef struct Tjogadores Tjogadores" e o resto também hahahaha mas nem olhei o resto direito, vou olhando aqui e atualizando desde já obrigado! dei uma atualizada nos arquivos mas ta dando biziu ainda e o erro que eu não sei o que é -------------------------------------------------jogador.cpp---------------------------------------------------- #include<iostream> #include"jogador.h" using namespace std; Tjogadores createTjogador(int n) { Tjogadores Jogador = new Tjogadores*[n]; return *Jogador; } void setNome(Tjogadores* J) { string Nome; cout<<"Digite o nome do jogador"<<endl; getline(cin,Nome); (*J).nome=Nome; } /*void setJogos(Tjogadores* J) { int Jogos; cout<<"Digite a quantidade de jogos que atuou"<<endl; cin>>Jogos; (*J).jogos=jogos; } void setPontos(Tjogadores* J) { int Pontos; cout<<"Digite o numero de pontos marcados"<<endl; Pontos=0; Pontos++; (*J).pontos=Pontos; Pontos=0; } void setFaltas(Tjogadores* J) { int Faltas; cout<<"Digite o numero de faltas marcados"<<endl; cin>>Faltas; (*J).faltas=Faltas; } void setCartoes(Tjogadores* J) { int Cartoes; cout<<"Digite o numero de cartoes recebidos"<<endl; cin>>Cartoes; (*J).cartoes=Cartoes; } void getJogos(Tjogadores* J) { cout<<(*J).nome<<endl; } void getPontos(Tjogadores* J); { cout<<(*J).pontos<<endl; } void getFaltas(Tjogadores* J); { cout<<(*J).faltas<<endl; } void getCartoes(Tjogadores* J); { cout<<(*J).cartoes<<endl; } void calculaScore(Tjogadores* J) { float Score; Score=(4*(*J).jogos)+(6*(*J).pontos)-(0.5*(*J).faltas)-(*J).cartoes; (*J).score=Score; }*/ ---------------------------------------------------jogador.h------------------------------------------------------------------- #include<iostream> #include<string> using namespace std; typedef struct { string nome; int jogos,pontos,faltas,cartoes; float score; }Tjogadores; Tjogadores createTjogador(); string getNome(Tjogadores* J); int getJogos(Tjogadores* J); int getPntos(Tjogadores* J); int getFaltas(Tjogadores* J); int getCartoes(Tjogadores* J); void setNome(Tjogadores* J); void setJogos(Tjogadores* J); void setPontos(Tjogadores* J); void setFaltas(Tjogadores* J); void setCartoes(Tjogadores* J); void calculaScore(Tjogadores* J); --------------------------------------------------------time.cpp----------------------------------------------- #include<iostream> #include "jogador.h" #include "time.h" using namespace std; TTime createTime(int n,int m) { cin>>n>>m; Tjogadores J; J=createTjogador(m); TTime Time=new TTime*[n]; return *Time; } string setNomeDoTime(TTime* T) { string Nome_Time; getline(cin,Nome_Time); (*T).nome_time=Nome_Time; } /*void setJogador(TTime* T) { string NomeJ; cout<<"Digite o nome do jogador"<<endl; getline(cin,NomeJ); (*T)->jogador[0].nome=NomeJ; } void setVitorias(TTime* T) { int num; cout<<"Digite o numero de vitorias"<<endl; cin>>num; (*T).vitorias=num; } void setDerrotas(TTime* T) { int num; cout<<"Digite o numero de derrotas"<<endl; cin>>num; (*T).derrotas=num; } void setEmpates(TTime* T) { int num; cout<<"Digite o numero de empates"<<endl; cin>>num; (*T).empates=num; } void calculaScore(TTime* T,int) { float Score=0; int i; for(i=0;i<n;i++) { Score+=(*T)->jogadores.score; } cout<<Score<<endl; } void calculaPontos(TTime* T) { float Pontos; Pontos=(3*(*T).vitorias)+((*J).empates); cout<<Pontos<<endl; } void getNomeDoTime(TTime* T) { string Nome; cout<<"Digite o nome do time que deseja acessar"<<endl; getline(cin,Nome); for(i=0;i<n;i++) { if((*T).nome==Nome") cout<<(*T).nome<<endl; else cout<<"Time nao encontrado"<<endl; } } void getJogador(TTime* T) { string Nome; cout<<"Digite o nome do time que deseja acessar"<<endl; getline(cin,Nome); for(i=0;i<n;i++) { if((*T)->jogadores.nome==Nome") cout<<(*T)->jogadores.nome<<endl; else cout<<"Nome nao encontrado"<<endl; } } void getVitorias(TTime* T) { string nomeT; int i; getline(cin,nomeT); for(i=0;i<n;i++) { if((*T).nome_time==nomeT) { cout<<(*T).vitorias<<endl; } else { cout<<"Time não encontrado"; } } } void getDerrotas(TTime* T) { string nomeT; int i; getline(cin,nomeT); for(i=0;i<n;i++) { if((*T).nome_time==nomeT) { cout<<(*T).derrotas<<endl; } else { cout<<"Time não encontrado"; } } } void getEmpates(TTime* T) { string nomeT; int i; getline(cin,nomeT); for(i=0;i<n;i++) { if((*T).nome_time==nomeT) { cout<<(*T).empates<<endl; } else { cout<<"Time não encontrado"; } } }*/ void libera(TTime *T) { delete T; } -----------------------------------------------------------time.h------------------------------------------------------ #include<iostream> #include "jogador.h" #include<string> using namespace std; typedef struct { string nome_time; Tjogadores *jogador; int vitorias,derrotas,empates; }TTime; TTime createTime(int,int); string setNomeDoTime(TTime*); /*void getJogador(TTime* T); void getVitorias(TTime* T); void getDerrotas(TTime* T); void getEmpates(TTime* T); string getNomeDoTime(TTime* T); void setJogador(TTime* T); void setVitorias(TTime* T); void setDerrotas(TTime* T); void setEmpates(TTime* T); void calculaScore(TTime* T); void calculaPontos(TTime* T);*/ void libera(TTime *T); -------------------------------------------------------------main.cpp-------------------------------------------- #include<iostream> #include "jogador.h" #include "time.h" using namespace std; int main() { int n,m; TTime T; cin>>n>>m; T=createTime(n,m); setNomeDoTime(&T); /*getJogador(T); getVitorias(T); getDerrotas(T); getEmpates(T); getNomeDoTime(T); setJogador(T); setVitorias(T); setDerrotas(T); setEmpates(T); calculaScore(T); calculaPontos(T); */ libera(&T); return 0; }
  4. nooooo essa do main foi tensa hein kkkkkkkkkkkkkkkkk valeu ai vou testar os outros la hehe consegui, tava colocando errado na verdade é void LiberaMemoria(Agenda **a) { delete[] (*a)->C; delete[] (*a); } tava Contato HAHA agora adicionei uma função de busca void Busca(Agenda** a,int n,string name) { int i; for(i=0;i<n;i++) { if((**a)->C.nome=name) { cout<<(**a)->C.nome<<endl; } } } só que alem de ta errada, hehehe , ta dando esse erro: contato.cpp: Na função ‘void Busca(Agenda**, int, std::string)’: contato.cpp:23:11: erro: base operand of ‘->’ has non-pointer type ‘Agenda’ contato.cpp:25:15: erro: base operand of ‘->’ has non-pointer type ‘Agenda’ quando tiro o '->' da outro erro de ponteiro
  5. Boa noite galera!! ta dando um erro na hora de liberar a memoria, provavelmente estou errando nos ponteiros e alocando memoria hehe, mas não consigo ver o que é o código é o seguinte: ==========contato.h=========== #ifndef circulo_h #define circulo_h #include<string> using namespace std; typedef struct { string email_pessoal,email_profissional; }Email; typedef struct { int codigo; int numero; string operadora; string classificacao; }Telefone; typedef struct { string nome; Email E; Telefone Tel; }Contato; typedef struct { Contato* C; }Agenda; Contato* CriarContato(); Agenda* CriarAgenda(int); //void InserirContato(Agenda*,Contato*); //Contato* buscarContatoPorNome(Agenda* a,string* nome) //int getQuantidadeContatos(Agenda* a); //int getCapacidadeAgenda (Agenda* a); void LiberaMemoria(Agenda* a); #endif =========contato.cpp============ #include<iostream> #include "contato.h" using namespace std; Contato* CriarContato() { string nome2; Contato* C=new Contato(); getline(cin,nome2); (*C).nome=nome2; } Agenda* CriarAgenda(int n) { Agenda* A; A=new Agenda[n]; return A; } /*void InserirContato(Agenda* a,Contato* C) { string nome2; (*a)->Contato=C; cout<<"Digite o nome do contato"<<endl; getline(cin,nome2); (*a)->Contato.nome=nome2; cout<<(*a)->Contato.nome<<endl; }*/ void LiberaMemoria(Agenda* a) { delete[] (*a)->Contato; delete[] *a; } =========main.cpp========== #include<iostream> #include "contato.h" using namespace std; int main() { Contato* C=new Contato; Agenda* A=new Agenda; C=CriarContato(); A=CriarAgenda(2); //void InserirContato(Agenda* A,Contato* C); void LiberaMemoria(Agenda* A); return 0; } esta dando os seguintes erros: contato.cpp: Na função ‘void LiberaMemoria(Agenda*)’: contato.cpp:29:15: erro: base operand of ‘->’ has non-pointer type ‘Agenda’ contato.cpp:30:12: erro: type ‘struct Agenda’ argument given to ‘delete’, expected pointer não sei se ele não ta alocando memoria pro ponteiro, por isso fala que não tem ponteiro tipo 'Agenda', ou se é outra coisa... abraço!!
  6. Acabou que fiz de outro jeito mesmo hahaha mas valeu ai galera!!
  7. ainda ta dando o erro, coloquei um break la no adicionar elemento caso a operação seja invalida, mas o de acessar nao ta em um loop então n tem como colocar break,e tambem mudei o if, tirei o || e coloquei &&. ainda ta dando falha de segmentação acho q esta alocando errado por que quando procuro v na posição 2 da 0 e era pra conter um numero que foi digitado. mas n estou conseguindo ver o que pode ser hehehehe #include<iostream> #include "matriz.h" using namespace std; Mat* CriarMatriz() { int lin,col,i; cout<<"Entre com o numero de linhas"<<endl; cin>>lin; cout<<"Entre com o numero de colunas"<<endl; cin>>col; Mat *M= new Mat(); M->linhas=lin; M->colunas=col; M->v=new int [lin*col]; return M; } void AdicionarElemento(Mat **M) { int elemento,i,j,k,n,l; n=((*M)->linhas)*((*M)->colunas); for(l=0;l<n;l++) { cout<<"Digite qual o numero voce deseja adicionar"<<endl; cin>>elemento; cout<<"Digite a coordenada em que deseja adicionar o numero"<<endl; cin>>i>>j; if(i<0 && i>(*M)->linhas && j<0 && j>(*M)->colunas) { cout<<"Acesso invalido"<<endl; break; } k=(i-1)*(*M)->colunas+j-1; (*M)->v[k]=elemento; cout<<(*M)->v[k]<<endl; } } void AcessarElemento(Mat **M) { int i,j,k; cout<<"Digite a coordenada"<<endl; cin>>i>>j; if(i<0 && i>(*M)->linhas && j<0 && j>(*M)->colunas) { cout<<"Acesso invalido"<<endl; } k=(i-1)*(*M)->colunas+j-1; cout<<"O elemento é:"<<(*M)->v[k]<<endl; } void getNumeroLinhas(Mat **M) { cout<<"Numero de linhas: "<<(*M)->linhas<<endl; } void getNumeroColunas(Mat **M) { cout<<"Numero de linhas: "<<(*M)->colunas<<endl; } void LiberarMemoria(Mat** M) { cout<<(*M)->v[2]<<"!!!!!!!!!"<<endl; delete[] (*M)->v; cout<<"!!!!!!!!!!"<<endl; delete *M; }
  8. ==================matriz.h============================= #ifndef matriz_h #define matriz_h typedef struct { int linhas,colunas,*v; }Mat; Mat* CriarMatriz(); void AdicionarElemento(Mat **); void AcessarElemento(Mat **); void getNumeroLinhas(Mat **); void getNumeroColunas(Mat **); void LiberarMemoria(Mat **); #endif ================matriz.cpp============================= #include<iostream> #include "matriz.h" using namespace std; Mat* CriarMatriz() { int lin,col,i; cout<<"Entre com o numero de linhas"<<endl; cin>>lin; cout<<"Entre com o numero de colunas"<<endl; cin>>col; Mat *M= new Mat [lin]; M->linhas=lin; M->colunas=col; M->v=new int [lin*col]; return M; } void AdicionarElemento(Mat **M) { int elemento,i,j,k,n,l; n=((*M)->linhas)*((*M)->colunas); for(l=0;l<n;l++) { cout<<"Digite qual o numero voce deseja adicionar"<<endl; cin>>elemento; cout<<"Digite a coordenada em que deseja adicionar o numero"<<endl; cin>>i>>j; if(i<0 || i>=(*M)->linhas || j<0 || j>=(*M)->colunas) { cout<<"Acesso invalido"<<endl; } k=(i-1)*(*M)->colunas+j-1; (*M)->v[k]=elemento; } } void AcessarElemento(Mat **M) { int i,j,k; cout<<"Digite a coordenada"<<endl; cin>>i>>j; if(i<0 || i>=(*M)->linhas || j<0 || j>=(*M)->colunas) { cout<<"Acesso invalido"<<endl; } k=(i-1)*(*M)->colunas+j-1; cout<<"O elemento é:"<<(*M)->v[k]<<endl; } void getNumeroLinhas(Mat **M) { cout<<"Numero de linhas: "<<(*M)->linhas<<endl; } void getNumeroColunas(Mat **M) { cout<<"Numero de linhas: "<<(*M)->colunas<<endl; } void LiberarMemoria(Mat** M) { delete[] (*M)->v; cout<<"!!!!!!!!!!"<<endl; delete M; } =========================main.cpp==================================== #include<iostream> #include "matriz.h" using namespace std; int main() { Mat *M; M=CriarMatriz(); AdicionarElemento(&M); AcessarElemento(&M); getNumeroLinhas(&M); getNumeroColunas(&M); LiberarMemoria(&M); return 0; }
  9. Deu certo aqui faltava o Mat* hehehe valeu ai galera! agora na função liberar memoria ta dando falha de segmentação void LiberarMemoria(Mat **M) { delete[](*M)->v; delete *M; }
  10. Boa noite galera! estou com problemas no seguinte código //matriz.h #ifndef matriz_h #define matriz_h typedef struct { int linhas,colunas,*v; }Mat; Mat CriarMatriz(); void AdicionarElemento(Mat **); void AcessarElemento(Mat **); void getNumeroLinhas(Mat **); void getNumeroColunas(Mat **); void LiberarMemoria(Mat **); #endif //matriz.cpp #include<iostream> #include "matriz.h" using namespace std; Mat CriarMatriz() { int lin,col,i; cout<<"Entre com o numero de linhas"<<endl; cin>>lin; cout<<"Entre com o numero de colunas"<<endl; cin>>col; Mat *M= new Mat [lin]; M->linhas=lin; M->colunas=col; M->v=new int [lin*col]; return *M; } //main.cpp #include<iostream> #include "matriz.h" using namespace std; int main() { Mat *M; *M=CriarMatriz(); AdicionarElemento(&M); AcessarElemento(&M); getNumeroLinhas(&M); getNumeroColunas(&M); LiberarMemoria(&M); return 0; } ele não esta retornando M na função CriarMatriz(), pelo menos eu acho q é isso alguem pode me ajudar eu consigo colocar a linha e a coluna, mas depois disso da falha de segmentação desde já obrigado!
  11. Boa tarde galera!! estou aprendendo a usar essa ferramenta para automatizar um teste de cenario, então fiz um script apenas para testar a ferramenta #!/bin/bash xdotool exec gedit sleep 3 xdotool type "Texto dentro do arquivo" sleep 2 xdotool key "ctrl+s" sleep 2 xdotool type "Texto" sleep 2 xdotool <<<<<<<<<<<<<<< sleep 2 xdotool key "alt+s" só que na parte de escolher a pasta a qual o arquivo irá ser salvo que esta destacada com "<<<<<<<<<<<<<<<", eu não consegui achar um comando, tentei varios mas nenhum deu certo, alguem sabe como escolher a pasta sem ter que usar "xdotool Down..." para usar as setas do teclado??
  12. boa tarde galera! estou implementando um jogo de damas, por enquanto quero apenas imprimir o tabuleiro mas estou tendo problemas com o struct, porque coloquei uma matriz dentro dele fiz tres arquivos tabuleiro.h tabuleiro.cpp main.cpp tabuleiro.h typedef struct tabuleiro { char T[8][8]; }Ttabuleiro; void tab(Ttabuleiro* t[8][8]); ---------------------------------------------------------------------------------------------------- tabuleiro.cpp #include"tabuleiro.h" #include<iostream> using namespace std; void tab(Ttabuleiro* t[8][8]) { int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) { *t[j]=' '; } } cout<<" 0 1 2 3 4 5 6 7"<<endl; for(i=0;i<8;i++) { cout<<i<<" "; for(j=0;j<8;j++) { cout<<"| "<<*t[j]<<" "; } cout<<"|"<<endl; } cout<<endl<<endl<<endl; } ------------------------------------------------------------------------------------------------- main.cpp #include"tabuleiro.h" #include<iostream> using namespace std; int main(void) { Ttabuleiro T; tab(T); return 0; } só que dá um erro bruto porque eu n to sabendo declara a matriz , eu acho alguem ´pode me da uma ajuda ai?
  13. desconsiderem, o arquivo esta certo, quando executo ele no terminal instala o terrame, mas quando dou o comando no script nao funciona da o seguinte: usage: sudo -h | -K | -k | -V usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command] usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] [VAR=value] [-i|-s] [<command>] usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-u user] file ...
  14. Boa tarde aproveitando o topico, preciso fazer download de um arquivo executavel pelo terminal, mas o que deveria ser "terrame-1.3.0-setup-x64", ele faz download disso "fetch.php?media=software:terrame-1.3.0-setup-x64". o comando q estou usando é: sudo wget install http://terrame.org/lib/exe/fetch.php?media=software:terrame-1.3.0-setup-x64 copiei o link de download do arquivo na verdade eu preciso instala esse arquivo, mas tenho q baixar ele por algum comando e então dar o comando para instalar ele
  15. consegui! muito obrigado olliver! abraço

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