Ir ao conteúdo
  • Cadastre-se

Kleber Lauton

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

  1. (Mudei de perfil) @rallisson Opa, obrigado pela resposta. Não sei como encontrou esse tópico, mas temo que esteja uns 6 anos atrasado kkkkkkkkk Lembro que eu estava desesperado por uma resposta na época, já hoje eu trabalho na área e finalmente (ufa!) puder entender a lógica do bubble sort. Vamos deixar a resposta para nossos novos futuros programadores.
  2. Boa noite a todos. Bom, em 2013 eu joguei bioshock infinite com as mesmas configurações abaixo. Jogava com gráficos no "high" sem nenhum problema com FPS e até consegui zerar. Cooler: Corsair 430w Atlhon x2 Dual Core Ram: 4 GB Placa de vídeo: NVIDIA GeForce GT 630 DirectX: 11.0 Microsoft Windows 7 Professional 64-bit Ao chegar próximo do fim do jogo, sempre que passava 10 ou 20 minutos de jogatina no High uma tela preta surgia no monitor (igual a quando desligo e ligo a tela) e 5 segundos depois o áudio do jogo travava. Logo após o PC reiniciava. A solução foi jogar com gráficos no médio, e isso resolveu meu problema na época. Hoje, tenho um i5-3570. Usei os mesmos arquivos de antes para instalar o jogo, mas com menos de 5 minutos de jogo ele apresenta os mesmos problemas de antes, mesmo jogando no low. Os drivers estão atualizados, e não sei o que fazer. Antes funcionava e o problema era de vez em quando, agora é frequente. Qual pode ser o problema? Grato.
  3. Cara, não sei muito bem como você vai querer fazer isso. Não daria certo criar uma estrutura mais ou menos assim? struct recorde{ char nome[15]; int tempo; int posicao;} Aí na main você declara a struct como "rec", por exemplo. Onde ''i'' é a quantidade de pessoas que vai armazenar.
  4. Por exemplo, caso eu defina o valor da variável ele retorna a casa decimal. float x; x = 0.5; cout << x; Mas caso eu realize uma conta, não retorna. float x; x = 1/2; cout << x; Por que?
  5. Sinceramente, não sei por que diabos usei sizeof kkkkk' Deu certo! Obrigado.
  6. Estou cadastrando informações de 2 livros neste código e preciso utilizar ponteiros para alocar os chars. O programa está pronto e só possui este problema. Na main, quando eu cadastro mais que 7 caracteres em uma variável char da struct livros o programa fecha. Menos que isso funciona perfeitamente, creio que fiz o uso correto do malloc. Início #include <cstdlib>#include <iostream>#include <string.h>#include <stdio.h>#define n 2using namespace std;struct livros{ int codigo[n]; char doacao[n]; // s/n char *obra[n]; char *autor[n]; char *editora[n]; int area[n]; //1 - exatas, 2 - humanas, 3 - biológicas char *key1[n]; char *key2[n]; char *key3[n];}; main int main(int argc, char *argv[]){ livros x; bool pesq = false; char *busca2; int codigo,i,busca,resul,escolha; int exatas=0, humanas=0, biologicas=0; for (i=0;i<n;i++){ //le os códigos dos livros cout << "---------" << i+1 << "o Livro " << " ---------\n"; cout <<"\nEntre com o codigo da obra: "; cin >> x.codigo[i];fflush(stdin); cout << endl; } //ordena os códigos quick(x.codigo,0,n-1); for (i=0;i<n;i++){ cout << "\n"; cout << "--------- Livro " << x.codigo[i] << " ---------\n"; do{ cout <<"\nA obra e uma doacao? <s> SIM <n> NAO: "; cin >> x.doacao[i];fflush(stdin); }while(x.doacao[i] != 's' && x.doacao[i] != 'n'); cout <<"\nQual o nome da obra?: "; x.obra[i] = (char *) malloc(sizeof(60)); cin >> x.obra[i];fflush(stdin); cout <<"\nInsira o nome do autor: "; x.autor[i] = (char *) malloc(sizeof(60)); cin >> x.autor[i];fflush(stdin); cout <<"\nDigite o nome da editora: "; x.editora[i] = (char *) malloc(sizeof(60)); cin >> x.editora[i];fflush(stdin); do { cout <<"\nQual a area do livro? <1> EXATAS <2> HUMANAS <3> BIOLOGICAS: "; cin >> x.area[i];fflush(stdin); if (x.area[i] == 1) exatas++; if (x.area[i] == 2) humanas++; if (x.area[i] == 3) biologicas++; if (x.area[i] < 1 || x.area[i] > 3) cout << "\nArea invalida. Digite novamente."; }while(x.area[i] < 1 || x.area[i] > 3); cout <<"\nDigite a 1a palavra chave da obra: "; x.key1[i] = (char *) malloc(sizeof(60)); cin >> x.key1[i];fflush(stdin); cout <<"\nDigite a 2a palavra chave da obra: "; x.key2[i] = (char *) malloc(sizeof(60)); cin >> x.key2[i];fflush(stdin); cout <<"\nDigite a 3a palavra chave da obra: "; x.key3[i] = (char *) malloc(sizeof(60)); cin >> x.key3[i];fflush(stdin); cout << "\n"; } cout << "\n\n"; system("pause"); return 0;}
  7. Cara, obrigado mesmo! Só precisei utilizar "char *obra[n];" tanto na struct quanto na lista. Descobri que precisaria usar o malloc. Deste jeito eu consigo usar a quantidade que eu quiser. x.obra[i] = (char *) malloc(sizeof(60));cin >> x.obra[i]; Funciona perfeitamente quando cadastro as informações de um livro na struct. Mas quando minha struct tem 2 livros ou mais, o programa trava na hora de cadastrar. Há 6 variáveis que uso o malloc igual ao exemplo acima. Eu preciso esvaziar a memória alocada toda vez que eu utilizar o malloc?
  8. Boa tarde. Meu código está quase funcionando 100%, só há um problema. Tenho que cadastrar varias informações de alguns livros em uma struct e depois passá-las para uma lista duplamente encadeada (estou deixando só algumas variáveis para ficar menos bagunçado). O PROBLEMA: Consigo inserir valores na lista e imprimi-los. Mas só consigo fazer isto com números e char (apenas uma letra). Quando tento inserir na lista uma string com 2 letras ou mais sem os ponteiros ele me retorna apenas a primeira letra. ENTRADA obra: Divindade RETORNO obra: D Pelo que eu li, devo usar ponteiros NO CHAR para inserir quantos caracteres eu quiser, mas sinceramente não consigo. Eu ainda não domino o uso de ponteiros muito bem, achei o código da lista pronto e modifiquei para meu código. #define n 2 //numero de livrosusing namespace std;struct livros{ int codigo[n]; char doacao[n]; // s/n char *obra[n]; char autor[n];};struct Tipo_Lista{ int cod; char doacao; char *obra; char autor; struct Tipo_Lista *Prox; struct Tipo_Lista *Ant;};struct Tipo_Lista *Primeiro;struct Tipo_Lista *Ultimo;void FLVazia(){ //cria lista vazia struct Tipo_Lista *aux; aux = (struct Tipo_Lista*)malloc(sizeof(struct Tipo_Lista)); Primeiro = aux; Ultimo = Primeiro; Primeiro->Ant = NULL;} Como vocês viram acima, tentei utilizar um ponteiro em "obra", e neste código abaixo também (que é o valor b ) . void Insere(int x,char a, char *b, char c){ //inserir valores struct Tipo_Lista *aux; aux = (struct Tipo_Lista*)malloc(sizeof(struct Tipo_Lista)); aux->cod = x; aux->doacao = a; aux->obra = b; aux->autor = c; Ultimo->Prox = aux; aux->Ant = Ultimo; Ultimo = Ultimo->Prox; aux->Prox = NULL;}void Imprime(){ //imprime valores struct Tipo_Lista *aux; aux = Primeiro->Prox; while(aux !=NULL){ cout << "\nCod = " << aux->cod; cout << "\nDoa = " << aux->doacao; cout << "\nObra = " << aux->obra; cout << "\nAutor = " << aux->autor; aux = aux->Prox; }} Aqui na main, todos os dados da estrutura ''livros'' já estão armazenados em. x.codigo, x.doacao,x.obra... Após ter todos os dados, eu os insiro para a lista com esse laço for e tenho meu retorno com a função Imprime. livros x; int codigo,i; FLVazia(); for (i=0;i<n;i++){ Insere(x.codigo[i],x.doacao[i],x.obra[i],x.autor[i]); } Imprime(); Só preciso conseguir passar dados de string, int e char de uma struct para uma lista duplamente encadeada. Alguém pode me mostrar como colocar os ponteiros corretamente ou se tem modo mais fácil? Código completo: #include <cstdlib>#include <iostream>#include <string.h>#include <windows.h>#include <conio.h>#include <string>#define n 1using namespace std;struct livros{ int codigo[n]; char doacao[n]; // s/n char obra[n]; char autor[n]; char editora[n]; int area[n]; //1 - exatas, 2 - humanas, 3 - biológicas char key1[n]; char key2[n]; char key3[n];};struct Tipo_Lista{ int cod; char doacao; char obra; char autor; char editora; int area; char key1; char key2; char key3; struct Tipo_Lista *Prox; struct Tipo_Lista *Ant;};struct Tipo_Lista *Primeiro;struct Tipo_Lista *Ultimo;void FLVazia(){ struct Tipo_Lista *aux; aux = (struct Tipo_Lista*)malloc(sizeof(struct Tipo_Lista)); Primeiro = aux; Ultimo = Primeiro; Primeiro->Ant = NULL;}void Insere(int x,char a,char b,char c,char d,int e,char f,char g, char h){ struct Tipo_Lista *aux; aux = (struct Tipo_Lista*)malloc(sizeof(struct Tipo_Lista)); aux->cod = x; aux->doacao = a; aux->obra = b; aux->autor = c; aux->editora = d; aux->area = e; aux->key1 = f; aux->key2 = g; aux->key3 = h; Ultimo->Prox = aux; aux->Ant = Ultimo; Ultimo = Ultimo->Prox; aux->Prox = NULL;}void Imprime(){ struct Tipo_Lista *aux; aux = Primeiro->Prox; while(aux !=NULL){ cout << "\nCod = " << aux->cod; cout << "\nDoa = " << aux->doacao; cout << "\nObra = " << aux->obra; cout << "\nAutor = " << aux->autor; cout << "\nEditora = " << aux->editora; cout << "\nArea = " << aux->area; cout << "\nKey1 = " << aux->key1; cout << "\nKey2 = " << aux->key3; cout << "\nKey3 = " << aux->key3; aux = aux->Prox; }}void quick(int v[], int esquerda, int direita){ int i, j, x, y; // y é auxiliar i = esquerda; j = direita; x = v[(esquerda + direita) / 2]; // O "x" também é chamado de "pivo" while(i <= j) { while(v[i] < x && i < direita){ i++; } while(v[j] > x && j > esquerda){ j--; } if(i <= j){ y = v[i]; v[i] = v[j]; v[j] = y; i++; j--; } } if(j > esquerda){ quick(v, esquerda, j); } if(i < direita){ quick(v, i, direita); } }int main(int argc, char *argv[]){ livros x; int codigo,i; //le os códigos dos livros e organiza for (i=0;i<n;i++){ cout << "--------- Livro " << i+1 << " ---------\n"; cout <<"\nEntre com o codigo da obra: "; cin >> x.codigo[i]; cout << endl; } quick(x.codigo,0,n-1); // v (vetor), 0 (início do vetor), fim (tamanho do vetor -1) for (i=0;i<n;i++){ cout << "\nUTILIZE PONTOS EM VEZ DE ESPACO PARA SEPARAR AS PALAVRAS!\nExemplo: o.dia.em.que.a.terra.parou\n\n"; cout << "--------- Livro " << i+1 << " ---------\n"; cout <<"\nA obra e uma doacao? <s> SIM <n> NAO: "; cin >> x.doacao[i]; cout <<"\nQual o nome da obra?: "; cin >> x.obra[i]; cout <<"\nInsira o nome do autor: "; cin >> x.autor[i]; cout <<"\nDigite o nome da editora: "; cin >> x.editora[i]; cout <<"\nQual a area do livro? <1> EXATAS <2> HUMANAS <3> BIOLOGICAS: "; cin >> x.area[i]; cout <<"\nDigite a 1a palavra chave da obra: "; cin >> x.key1[i]; cout <<"\nDigite a 2a palavra chave da obra: "; cin >> x.key2[i]; cout <<"\nDigite a 3a palavra chave da obra: "; cin >> x.key3[i]; cout << "\n"; } FLVazia(); //inicia pilha vazia //inseri na pilha todos os dados for (i=0;i<n;i++){ Insere(x.codigo[i],x.doacao[i],x.obra[i],x.autor[i],x.editora[i],x.area[i],x.key1[i],x.key2[i],x.key3[i]); } Imprime(); /* for (i=0;i<n;i++){ cout << endl << "codigo " << i <<" = " << x.codigo[i]; cout << endl << "doacao " << i <<" = " << x.doacao[i]; cout << endl << x.obra[i]; cout << endl << x.autor[i]; cout << endl << x.editora[i]; cout << endl << x.area[i]; cout << endl << x.key1[i]; cout << endl << x.key2[i]; cout << endl << x.key3[i]; } */ // getch(); cout << "\n\n"; system("pause"); return 0;}

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