Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''c++''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. Olá amigos, eu me chamo Daniel e sou aluno de ADS, alguns dias atrás eu encontrei um código pela internet de um jogo da velha simples, o código funciona perfeita mente, porèm, eu queria adaptar o programa para executar novamente, e é ai que està o problema, eu não consigo fazer o programa zerar e reiniciar novamente a partida, vou inserir o código logo abaixo, desde já agradeço sua ajuda. P.S 1 Já tentei colocar system("cls") em quase todos os lugares possiveis do código, mas não resolveu. #include <iostream> #include <stdlib.h> using namespace std; char matriz[3][3] = {'1','2','3','4','5','6','7','8','9'}; int n; char jog = 'X'; char sair = 's'; bool s = true; void Jogo(){ system("cls"); cout << "\n JOGO DA VELHA\n\n"; for (int a=0;a<3;a++){ cout << "\t"; for (int j=0;j<3;j++){ cout << matriz[a][j] << " "; } cout << "\n"; } cout << "\n"; } void Entrada(){ int p; cout << "Digite um numero: "; cin >> p; if (p==1){ if(matriz[0][0] == '1'){ matriz[0][0] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==2){ if(matriz[0][1] == '2'){ matriz[0][1] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==3){ if(matriz[0][2] == '3'){ matriz[0][2] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==4){ if(matriz[1][0] == '4'){ matriz[1][0] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==5){ if(matriz[1][1] == '5'){ matriz[1][1] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==6){ if(matriz[1][2] == '6'){ matriz[1][2] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==7){ if(matriz[2][0] == '7'){ matriz[2][0] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==8){ if(matriz[2][1] == '8'){ matriz[2][1] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } else if(p==9){ if(matriz[2][2] == '9'){ matriz[2][2] = jog; } else{ cout << "\nJogada invalida! Tente novamente.\n\n"; Entrada(); } } } void Alterna(){ if (jog == 'X') jog = 'O'; else jog = 'X'; } char Vencedor(){ // Jogador 1 if (matriz[0][0] == 'X' && matriz[0][1] == 'X' && matriz[0][2] == 'X') return 'X'; if (matriz[1][0] == 'X' && matriz[1][1] == 'X' && matriz[1][2] == 'X') return 'X'; if (matriz[2][0] == 'X' && matriz[2][1] == 'X' && matriz[2][2] == 'X') return 'X'; if (matriz[0][0] == 'X' && matriz[1][0] == 'X' && matriz[2][0] == 'X') return 'X'; if (matriz[0][1] == 'X' && matriz[1][1] == 'X' && matriz[2][1] == 'X') return 'X'; if (matriz[0][2] == 'X' && matriz[1][2] == 'X' && matriz[2][2] == 'X') return 'X'; if (matriz[0][0] == 'X' && matriz[1][1] == 'X' && matriz[2][2] == 'X') return 'X'; if (matriz[0][2] == 'X' && matriz[1][1] == 'X' && matriz[2][0] == 'X') return 'X'; //Jogador2 if (matriz[0][0] == 'O' && matriz[0][1] == 'O' && matriz[0][2] == 'O') return 'O'; if (matriz[1][0] == 'O' && matriz[1][1] == 'O' && matriz[1][2] == 'O') return 'O'; if (matriz[2][0] == 'O' && matriz[2][1] == 'O' && matriz[2][2] == 'O') return 'O'; if (matriz[0][0] == 'O' && matriz[1][0] == 'O' && matriz[2][0] == 'O') return 'O'; if (matriz[0][1] == 'O' && matriz[1][1] == 'O' && matriz[2][1] == 'O') return 'O'; if (matriz[0][2] == 'O' && matriz[1][2] == 'O' && matriz[2][2] == 'O') return 'O'; if (matriz[0][0] == 'O' && matriz[1][1] == 'O' && matriz[2][2] == 'O') return 'O'; if (matriz[0][2] == 'O' && matriz[1][1] == 'O' && matriz[2][0] == 'O') return 'O'; return 'e'; } int main(){ while (s == true){ Jogo(); while (true){ n++; Entrada(); Jogo(); if (Vencedor() == 'X'){ cout << "Jogador X Venceu!\n\n"; break; } else if(Vencedor() == 'O'){ cout << "Jogador O Venceu!\n\n"; break; } else if(Vencedor() == 'e' && n == 9){ cout << "Deu empate!\n\n"; break; } Alterna(); } cout << "Jogar novamente?\n(s/n): "; cin >> sair; if(sair == 's' || sair == 'S'){ s = true; } else if(sair == 'n' || sair == 'N'){ s = false; break; } } system("pause"); }
  2. Estou usando o code block e tenho que fazer um jogo para um trabalho da faculdade! O jogo é a Torre de Hanoi; Porém não sei por onde começar!!! queria fazer o jogo usando o ( if, while, vetor) pois é sobre isso que estamos aprendendo!
  3. para que ela serve? qual a sua função? o que é?
  4. Qual a importância da manipulação de arquivos C/C++? Em que ela irá me ajudar?
  5. Tenho instalado o g++ e o Code::Blocks (Linux-Ubuntu) e criei um projeto e utilizei o código teste do file (main.cpp) do Code::Blocks, quando dou run aparece uma aba escrito: "It seems that this project has not been built yet.Do you want to build it now?" Se clico em "yes" aparece no build log: g++ -Wall -fexceptions -g -c "/home/gabriel/Área de Trabalho/caramba/main.cpp" -o obj/Debug/main.o g++ -o bin/Debug/caramba obj/Debug/main.o g++: error: obj/Debug/main.o: Arquivo ou diretório não encontrado g++: fatal error: no input files compilation terminated. Process terminated with status 1 (0 minute(s), 0 second(s)) 0 error(s), 0 warning(s) (0 minute(s), 0 second(s)) Se aperto em "no" aparece uma aba (preta) escrito Process returned 0 (0x0) execution time: 0.001s Press enter to continue Como posso resolver? Grato desde já!
  6. estou com uma duvida, to fazendo um algorítimo que pegue a frase do usuário que não tenha sentido, como se fosse um código, para resolver tem um chave que é as letras que mais sai do alfabeto português, para resolver eu tenho que associar cada letra do texto com a letra que mais usada no português, EX c =a, z=o e assim por diante, eu fiz o código só que ele não muda fica sempre a mesma letra que o usuário digitou. alguém poderia me dar umas dicas. #include <stdio.h> #include <string.h> main() { char chave[20],texto[20],frase[20]; int size,i; printf("Digite o texto para ser alterado: "); scanf("%s",chave); size=strlen(chave); strcpy(texto,chave); for(i=0;i<size;i++) { if (frase[i]=='c') frase[i]='a'; else if (texto[i]=='b') frase[i]='s'; else if (texto[i]=='d') frase[i]='e'; else if (texto[i]=='e') frase[i]='d'; } printf("Texto original:\n%s\n Novo texto:\n%s\n",chave,texto); }
  7. E ae pessoal, então, estou criando um projeto para aprender algumas linguagens de programação mais rápido, por meio de um servidor Discord. Por agora queria algumas pessoas para me ajudar a organizar e modular a ideia, caso tenha interesse segue o link do convite limitado ao servidor: https://discord.gg/DCmkAcg
  8. Olá, preciso de ajuda para separar uma string em outras 3 strings. Ex: tenho uma string data em que o usuário insere a data no formato DD/MM/YY. Quero dividir em Dia, mês e ano. Tentei da seguinte maneira sem sucesso.
  9. Olá membros e equipe, Me chamo William, conhecido como Splinter, talvez por ser um rato da informática... (Estou sempre fuçando em tudo). tenho 19 anos, moro no Sul e atualmente desempregado e com bastante tempo para fóruns hahahaha. Estudo C++ entre outras linguagens, e gostaria de compartilhar e absorver conhecimento. Um dia pretendo ganhar dinheiro com isso, e ser um bom contribuidor nas comunidades de programação! Obrigado pela atenção. Até algum post.
  10. Alguém pode me ajudar com esses 2 exercícios em C++ usando a estrutura STRUCT. grato
  11. #include <iostream> using namespace std; int main() { int n; cout << "Digite o numero de elementos do vetor: "; cin >> n; int u[n]; cout << "Digite os elementos do vetor: "; for(int i = 0; i < n; i++){ cin >> u; } int v[n]; int nv = 0; for(int i = 0; i < n; i++){ int rep = 0; for(int j = 0; j < nv; j++){ if(v[j] == u){ rep = 1; } } if(rep == 0){ v[nv] = u; nv++; } } for(int i = 0; i < nv; i++){ cout << v << " "; } return 0; }
  12. Pessoal eu tenho esse código que esta compilando mas quando vou executar alguma das funções ele trava, alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> typedef struct lista{ int info; struct lista *prox; }Lista; Lista *cria(){ return NULL; } Lista* insere_ordenado (Lista*l, int v){ Lista* novo = cria (); Lista* ant = NULL; Lista* p = l; while (p!=NULL && p->info < v){ ant=p; p=p->prox; } if(ant==NULL){ novo->prox=l; l=novo; } else { novo->prox= ant->prox; ant->prox=novo; } return l; } Lista *conecta(Lista* l1, Lista *l2){ lista*p,*q; if(l1=NULL) return l2; p=l1; do{q=p; p=p->prox; } while(p!=NULL); q->prox=l2; return l1; } Lista *separa(Lista*l,int n){ lista *p, *q; for(p=l;p!=NULL;p=p->prox) if(p->info==n){ q=p->prox=NULL; } return q; } Lista* constroi (int n,int* v){ Lista*p; Lista*q; int i; q=NULL; for(i=n-1;i<=0;i--) {p=(Lista*)malloc(sizeof(Lista)); p->prox=q; p->info=v[i]; q=p; } return q; } Lista* retira_prefixo (Lista* l, int n) { Lista* p; Lista* q; int m=1; p=l; while (p != NULL && m<=n) { m=m+1; q=p->prox; free(p); p=q; } return p; } void opcoes (){ printf ("Escolha a opcao\n"); printf ("1 - Inserir um dado\n"); printf ("2 - Conecta listas \n"); printf ("3 - Separa listas\n "); printf ("4 - Retirar um Elemento\n"); printf ("5 - Insere Ordenado\n"); printf ("6 - Sair\n"); printf ("Digite um valor fora da lista para repetir o menu\n"); } main () { Lista *l,*l1,*l2=NULL, *ret; int op, a, x, v; opcoes (); scanf ("%d",&op); while (op!=6){ switch (op){ case 1: printf ("Digite o valor\n"); scanf ("%d",&a); l=insere_ordenado(l,a); break; case 2:printf ("Digite o valor da lista 1\n"); scanf ("%d",&a); l1=insere_ordenado(l,a); printf ("Digite o valor da lista 2 \n"); scanf ("%d",&a); l2=insere_ordenado(l,a); l=conecta (l1,l2); break; case 3: printf ("Digite o valor aonde voce quer separar a lista\n"); scanf ("%d",&a); l=separa (l,a); break; case 4: printf ("Informe o valor para remover da lista\n"); scanf ("%d",&v); ret=retira_prefixo (l,v);break; case 5:printf ("Informe o valor para remover da lista\n"); scanf ("%d",&v); l=insere_ordenado (l,v);break; default: printf ("\nOpcao invalida\n\n"); opcoes(); } printf ("\nInforme a opcao\n"); scanf ("%d",&op); } system ("pause"); }
  13. Pessoal eu tenho esse código que esta compilando mas quando vou executar alguma das funções ele trava, alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> typedef struct lista{ int info; struct lista *prox; }Lista; Lista *cria(){ return NULL; } Lista* insere_ordenado (Lista*l, int v){ Lista* novo = cria (); Lista* ant = NULL; Lista* p = l; while (p!=NULL && p->info < v){ ant=p; p=p->prox; } if(ant==NULL){ novo->prox=l; l=novo; } else { novo->prox= ant->prox; ant->prox=novo; } return l; } Lista *conecta(Lista* l1, Lista *l2){ lista*p,*q; if(l1=NULL) return l2; p=l1; do{q=p; p=p->prox; } while(p!=NULL); q->prox=l2; return l1; } Lista *separa(Lista*l,int n){ lista *p, *q; for(p=l;p!=NULL;p=p->prox) if(p->info==n){ q=p->prox=NULL; } return q; } Lista* constroi (int n,int* v){ Lista*p; Lista*q; int i; q=NULL; for(i=n-1;i<=0;i--) {p=(Lista*)malloc(sizeof(Lista)); p->prox=q; p->info=v[i]; q=p; } return q; } Lista* retira_prefixo (Lista* l, int n) { Lista* p; Lista* q; int m=1; p=l; while (p != NULL && m<=n) { m=m+1; q=p->prox; free(p); p=q; } return p; } void opcoes (){ printf ("Escolha a opcao\n"); printf ("1 - Inserir um dado\n"); printf ("2 - Conecta listas \n"); printf ("3 - Separa listas\n "); printf ("4 - Retirar um Elemento\n"); printf ("5 - Insere Ordenado\n"); printf ("6 - Sair\n"); printf ("Digite um valor fora da lista para repetir o menu\n"); } main () { Lista *l,*l1,*l2=NULL, *ret; int op, a, x, v; opcoes (); scanf ("%d",&op); while (op!=6){ switch (op){ case 1: printf ("Digite o valor\n"); scanf ("%d",&a); l=insere_ordenado(l,a); break; case 2:printf ("Digite o valor da lista 1\n"); scanf ("%d",&a); l1=insere_ordenado(l,a); printf ("Digite o valor da lista 2 \n"); scanf ("%d",&a); l2=insere_ordenado(l,a); l=conecta (l1,l2); break; case 3: printf ("Digite o valor aonde voce quer separar a lista\n"); scanf ("%d",&a); l=separa (l,a); break; case 4: printf ("Informe o valor para remover da lista\n"); scanf ("%d",&v); ret=retira_prefixo (l,v);break; case 5:printf ("Informe o valor para remover da lista\n"); scanf ("%d",&v); l=insere_ordenado (l,v);break; default: printf ("\nOpcao invalida\n\n"); opcoes(); } printf ("\nInforme a opcao\n"); scanf ("%d",&op); } system ("pause"); }
  14. #include <iostream> #include <fstream> using namespace std; int main(){ ofstream output("Myfile.txt"); output << "Stephen Davis is a nice guy" << endl; output.close(); ifstream input("Myfile.txt"); while(input.good()){ cout << input.get(); } cout << endl; input.close(); return 0; } Boa tarde a todos. Estou com dificuldades para fazer meu programa imprimir uma frase gravada em arquivo. Em vez de imprimir a frase o programa está imprimindo os valores ASCII. Estou usando o método get() para ler os caracteres, o S.O. é o Ubuntu e o compilador é g++ versão 6.3.0.
  15. Olá! Sou iniciante na linguagem C++. Minha duvida é: Como posso sortear posições de um vetor[100] e, após isso, inserir o valor 1 ou 0.
  16. Ola bom dia pessoal, eu so novo aqui grupo de estudo e no Forum, gostaria que me ajudacem me dar algumas dicas desde trabalho abaixo em c++
  17. Eae pessoal, então... Estou criando um algoritmo em C++ e comecei a mexer com vector agora, e estou precisando de alguma função que imite o indexOf do java, tenho um elemento do vector que preciso saber o índice para aplicar a outros vector's e depois até mesmo pesquisar esses elementos, ou alterar seus valores. Seria mais ou menos assim: vector<int> num; num.push_back(1); num.push_back(145); num.push_back(78); num.push_back(15); //aqui eu preciso usar o 145, mas como teoricamente eu não sei o índice dele eu não posso prosseguir. Em java ficaria: ArrayList<Integer> num = new ArrayList<Integer>(); int index; num.add(5); num.add(55); num.add(455); num.add(5653); index=num.indexOf(455); e aí ele diria que a posição do numero 455 no ArrayList é 2. Agradeço desde já pessoal, obrigado.
  18. Olá gente, gostava que ajudassem com isto... o meu professor meteu este código... e ele perguntou quem é que sabe o que isto faz e nós não sabemos, nós somos alunos de 10 ano e ainda não percebemos bem isto, agradecia a vossa ajuda. (Digam-me o que faz e expliquem os passos) #include <stdio.h> #include <string.h> int main(void) { char *Codifica(char *strOut, char *strIn) { strcpy(strOut, strIn); char *strAux = strOut; while(*strAux){ *strAux = (*strAux)+1; *strAux++; } return strOut; } }
  19. gente, estou com uma duvida muito pertinente e gostaria da ajuda de vocês!!! alguém poderia me explicar a diferença entre as bibliotecas deque, array, list e vector ?
  20. Estou em duvida na função insereAVN que está sempre dando erro de segmetação quando chaves ordenadas, não passando do valor de 7939. /* * File: main.cpp * Author: bruno * * Created on 27 de Outubro de 2017, 11:58 */ #include <cstdlib> #include <stdlib.h> #include <iostream> #include <fstream> #include <time.h> #include <sstream> #include <string> #include <cstring> #include <string.h> using namespace std; // Cria-se as structs responsáeis por armazenar os dados, ligar uma struct ? // outra e por fim uma a qual aponta para o primeiro e último termo typedef long int tipoChave; struct dados { tipoChave chave; long int dado1; char dado2[1000]; }; struct Elemento { dados info; Elemento *anterior, *proximo; }; typedef struct { Elemento *primeiro, *ultimo; } ListaEncadeada; typedef struct TipoNo *aponta; typedef struct TipoNo { dados registro; int alturaEsq, alturaDir, FB; aponta esq, dir; } TipoNo; // Funções void criarLista(ListaEncadeada &lista); void inserirElemento(ListaEncadeada &lista, dados dado); void exibeLista(ListaEncadeada lista); void gerarchaves(ListaEncadeada &lista, int quant, int op); bool verificar(ListaEncadeada &lista, tipoChave chave); void escrevearquivo(ListaEncadeada &lista, int quant, string tipo); void lerarquivo(ListaEncadeada &lista, string nome); void iniciarArvore(aponta *s); void insereAVL(dados dado, aponta *r); void insereAVN(dados dado, aponta *p); int AVLAltura(aponta *r); void rotacionaEsq(aponta *r); void rotacionaDir(aponta *r); void balancear(aponta *r); void atualizar(aponta * r); void exibirEmOrdem(aponta *p); void menubusca(ListaEncadeada lista, aponta *p); void buscaSeq(ListaEncadeada &lista, dados &dado); bool verifOrd(ListaEncadeada lista); void buscaAVN(dados *dado, aponta *p); void menu(); int main(); // Função para inicializar a lista void criarLista(ListaEncadeada &lista) { // Aloca memóia para a lista e a declara vazia, definindo que ponteiros // de primeiro e último apontam para o mesmo elemento null lista.primeiro = NULL; lista.ultimo = lista.primeiro; } // Função para inserir na lista void inserirElemento(ListaEncadeada &lista, dados dado) { // Aloca memória para o dado a ser inserido Elemento *elemento = (Elemento *) malloc(sizeof (Elemento)); // Insere o elemento ao final da lista, e este mesmo ao final é atualizado // como o último dado inserido elemento->info = dado; elemento->proximo = NULL; elemento->anterior = NULL; // Se a lista estiver vazia, o dado inserido será o primeiro e o último da lista. if (lista.primeiro == NULL) { lista.primeiro = elemento; lista.ultimo = elemento; }// Senão, a inserção é realizada ao final da lista. else { lista.ultimo->proximo = elemento; elemento->anterior = lista.ultimo; lista.ultimo = elemento; } } // Função para exibir dados da lista void exibeLista(ListaEncadeada lista, int escolha) { // Cria uma variável struct dinamica para receber o primeiro elemento da lista Elemento *elemento = lista.primeiro; // Verifica o lista presente armazenada e exibe ao usuário switch (escolha) { case 1: cout << "\nLista Aleatória gerada:\n"; break; case 2: cout << "\nLista Ordenada gerada:\n"; break; case 3: cout << "\nLista contida no arquivo:\n"; break; default: cout << "\nLista Inválida ou vazia!\n"; menu(); break; } // Realiza a exibição dos dados na tela do usuário enquanto houver dados a ser inseridos while (elemento != NULL) { cout << "\nChave: " << elemento->info.chave; cout << " Dado1: " << elemento->info.dado1; cout << " Dado2: " << elemento->info.dado2; elemento = elemento->proximo; } // Libera espaço alocado na criação da variável dinâmica free(elemento); } // Função para escrever no arquivo os dados gerados void escrevearquivo(ListaEncadeada &lista, int quant, string tipo) { // Cria uma variável struct dinâmica para receber o primeiro elemento da lista Elemento *elemento = lista.primeiro; // Verifica se a lista está vazia. Se sim, retorna ao menu. if (elemento == NULL) { cout << "\nLista Vazia!\nArquivo não escrito!\n"; menu(); } // Declara o arquivo de saida a ser gerado, definindo o nome ofstream arquivo; // Converte inteiro em string stringstream result; result << quant; // Concatena o tipo de chave geradas, com a quantidade e o extensão txt do // arquivo a ser gerado. string nome = (tipo.c_str() + result.str() + ".txt"); arquivo.open(nome.c_str()); // Teste de verificação se o arquivo foi gerado com sucesso if (arquivo.fail()) { cout << "Error ao criar o arquivo."; menu(); } // Realiza a escrita no arquivo enquanto houver dados a ser inseridos while (elemento != NULL) { arquivo << elemento->info.chave << " " << elemento->info.dado1 << " "; arquivo << elemento->info.dado2; // Se o próximo elemento a ser escrito for diferente de NULL, realiza uma quebra de linha if (elemento->proximo != NULL){ arquivo << endl; } elemento = elemento->proximo; } // Fecha o arquivo arquivo.close(); // Libera espaço alocado na criação da variável dinâmica free(elemento); } // Função para ler o arquivo e armazenar os dados na lista void lerarquivo(ListaEncadeada &lista, string nome) { // Declara um arquivo de entrada ifstream arquivo; // Concatena o nome com a extensão txt nome = nome + ".txt"; // Verifica se há repetição do nome da extensão if (nome.substr(nome.length() - 8, nome.length()) == (".txt.txt")) { nome = nome.substr(0, nome.length() - 4); cout << nome; } // Realiza sua abertura arquivo.open(nome.c_str()); // Caso falha ao abrir ou arquivo não exitir if (arquivo.fail()) { cout << "\nArquivo não encontrado!\n"; menu(); } // Declara uma variável struct dados para receber os parametros de dentro // do arquivo dados dado; // Enquanto não encontrar sinal de final de arquivo, realizará a leitura e // a inserção na lista while (!arquivo.eof()) { arquivo >> dado.chave >> dado.dado1 >> dado.dado2; if (lista.ultimo != NULL) { if (dado.chave == lista.ultimo->info.chave) { goto fim; } } // Chama a função de inserção na lista, passando o dado e a lista como parametros inserirElemento(lista, dado); } fim: // Mensagem de leitura completa do arquivo cout << "\nLeitura completa do arquivo " << nome << "!\n"; // Fecha o arquivo arquivo.close(); } // Função para verificar se a chave aleatória gerada já existe na lista bool verificar(ListaEncadeada &lista, tipoChave chave) { // Realiza o laço para verificação de existência de valores iguais. // Caso sim, retorna então verdadeiro(true). // Admite como limite a posição do elemento atualmente sendo inserido. Elemento *elementoP = lista.primeiro, *elementoU = lista.ultimo; // Enquanto elementoP for diferente de elementoU realiza o laço de verificação while (elementoP != elementoU) { // Caso a chave do elemento seja igual a chave gerada retorna verdade if (elementoP->info.chave == chave || elementoU->info.chave == chave) { return true; } elementoP = elementoP->proximo; elementoU = elementoU->anterior; } // Caso ponteiros de apontem para o mesmo endereço e a chave do elemento seja igual a chave gerada if (elementoP == elementoU && elementoP->info.chave == chave) { return true; } // Caso contrário, retorna falso. return false; } // Função para gerar os dados e chaves referentes ao mesmos void gerarchaves(ListaEncadeada &lista, int quant, int op) { // Declaração de variáveis tipoChave chave; long int dado1; int TAM; dados dado; // Toda vez que executar o programa será gerado um aleatória diferente srand(time(NULL)); // Laço para gerar a quantidade informada de estrutura com os dados for (int i = 0; i < quant; i++) { // Define um tamanho aleatório para a sequencia de caracteres TAM = 1 + (rand() % 10); // Aloca dinamicamente um vetor de char dado2 char *dado2 = new char[TAM]; // Verifica qual op?o selecionada: 1.Aleatória ou 2.Ordenada if (op == 1) { // 1 até 10: chave = 1 + (rand() % quant); // Verificação se há uma repetição no laço. Caso sim, gerará um novo // número aleatório e atribuirá a este como sendo o novo valor e então, // a variável j recebe 0 para que possa realizar todas checagens possíveis // e corrigindo caso haja repeti?o. Ao fim, o valor é atribuido às // referentes variáveis while (verificar(lista, chave)) { chave = 1 + (rand() % quant); } } else if (op == 2) { // Crescente a partir do 1: chave = i + 1; } // Gera dado1 sem limite superior: dado1 = 1 + (rand()); // Exibe a sequencia de caracteres alphanúmericos for (int j = 0; j < TAM; j++) { // Converte para char o número inteiro dado2[j] = ('a' + (rand() % 26)); } // Cria-se uma estrutura com os dados gerados dado.chave = chave; dado.dado1 = dado1; for (int j = 0; j < TAM; j++) { dado.dado2[j] = dado2[j]; } // Insere os elementos gerados em uma Lista Encadeada inserirElemento(lista, dado); // Libera espaço alocado na criação da variável dinâmica delete dado2; } // Informa ao final do laço que a lista foi preenchida cout << "\nLista Preenchida!"; } // Função para realizar a pesquisa sequencial void buscaSeq(ListaEncadeada &lista, dados &dado) { // Declaração de variáveis Elemento *elemento = lista.primeiro; // Contador de comparações int i = 0; // Enquanto elemento não for nulo ou vazio while (elemento != NULL) { // Verifica se a chave do elemento corresponde a chave pesquisada i++; if (elemento->info.chave == dado.chave) { // Informa a posição do registro e atribui o restante dos dados ao dados dado cout << "\nPosição encontrada: " << (i + 1) << "? termo\n"; dado = elemento->info; cout << "\nComparações " << i; return; } elemento = elemento->proximo; } // Libera espaço alocado na criação da variável dinâmica free(elemento); // Caso não encontre, exibe a mensagem na tela do usuário. Declara chave como -1. cout << "\nRegistro não encontrado."; cout << "\nComparações " << i++; dado.chave = -1; return; } // Função recursiva para encontra a chave pesquisada na lista Crescente int binariaC(dados *v, int inicio, int final, dados &dado) { int meio; if (inicio < final) { meio = (inicio + final) / 2; if (v[meio].chave == dado.chave) { return meio; } else if (v[meio].chave < dado.chave) { return binariaC(v, meio + 1, final, dado); } else if (v[meio].chave > dado.chave) { return binariaC(v, inicio, meio - 1, dado); } } else { return -1; } } // Função recursiva para encontra a chave pesquisada na lista Decrescente int binariaD(dados *v, int inicio, int final, dados &dado) { int meio; if (inicio < final) { meio = (inicio + final) / 2; if (v[meio].chave == dado.chave) { return meio; } else if (v[meio].chave > dado.chave) { return binariaD(v, meio + 1, final, dado); } else if (v[meio].chave < dado.chave) { return binariaD(v, inicio, meio - 1, dado); } } else { return -1; } } // Função de pesquisa sequencial recursiva void buscaSeqRec(ListaEncadeada &lista, dados &dado) { // Cria variáveis para manipulação na pesquisa sequencial recursiva Elemento *elemento = lista.primeiro; int i = 0, tam, t, op; // Analisa se a lista esta ordenada ou desordenada e declara o tamanho do vetor corretamente if (elemento->info.chave < elemento->proximo->info.chave){ tam = lista.ultimo->info.chave; op = 1; } else if (elemento->info.chave > elemento->proximo->info.chave){ tam = lista.primeiro->info.chave; op = 2; } // Aloca dinamicamente um vetor de dados para armazena a lista e realizar assim, a pesquisa sequencial recursiva dados * v = new dados[tam]; while (elemento != NULL) { v[i] = elemento->info; elemento = elemento->proximo; i++; } // Analisa se a lista esta ordenada ou desordenada e invoca a função certa if (op == 1){ int t = binariaC(v, 0, tam, dado); } else if (op == 2){ int t = binariaD(v, 0, tam, dado); } // Exibe o resultado da pesquisa if (t == -1) { cout << "\nRegistro não encotrado."; } else { cout << "\nChave: " << v[t].chave; cout << " Dado1: " << v[t].dado1; cout << " Dado2: " << v[t].dado2; } // Libera espaço alocado na criação da variável dinâmica delete v; } // Função para incializar a árvore void iniciarArvore(aponta *s) { (*s) = NULL; } // Função que retorna a altura da árvore ou nó int AVLAltura(aponta *r) { if ((*r) == NULL) { return 0; } int esq = AVLAltura(&(*r)->esq); int dir = AVLAltura(&(*r)->dir); if (esq > dir) { return esq + 1; } return dir + 1; } // Função da AVL de rotação para a esquerda void rotacionaEsq(aponta *r) { aponta *aux = (aponta *) malloc(sizeof (TipoNo)); (*aux) = (*r)->dir; (*r)->dir = (*aux)->esq; (*aux)->esq = (*r); (*r) = (*aux); free(aux); } // Função da AVL de rotação para a Direita void rotacionaDir(aponta *r) { aponta *aux = (aponta *) malloc(sizeof (TipoNo)); (*aux) = (*r)->esq; (*r)->esq = (*aux)->dir; (*aux)->dir = (*r); (*r) = (*aux); free(aux); } // Função da AVL para analisar em qual caso encontra-se se o nó estiver desbalanceado void balancear(aponta *r) { if ((*r) == NULL) { return; } balancear(&(*r)->esq); balancear(&(*r)->dir); int pai = (*r)->FB; if (pai == 2) { int filho = (*r)->dir->FB; if (filho == 1 || filho == 0) { rotacionaEsq(&(*r)); } else if (filho == -1) { rotacionaDir(&(*r)->dir); rotacionaEsq(&(*r)); } } if (pai == -2) { int filho = (*r)->esq->FB; if (filho == -1 || filho == 0) { rotacionaDir(&(*r)); } else if (filho == 1) { rotacionaEsq(&(*r)->esq); rotacionaDir(&(*r)); } } } // Função da AVL para atualizar a altura direita,esquerda e Fator de balanceamento de cada nó da árvore. void atualizar(aponta * r) { if ((*r) == NULL) { return; } (*r)->alturaDir = AVLAltura(&(*r)->dir); (*r)->alturaEsq = AVLAltura(&(*r)->esq); (*r)->FB = AVLAltura(&(*r)->dir) - AVLAltura(&(*r)->esq); atualizar(&(*r)->esq); atualizar(&(*r)->dir); } // Função de inserção da AVL void insereAVL(dados dado, aponta * r) { if ((*r) == NULL) { *r = (aponta) malloc(sizeof (TipoNo)); (*r)->registro = dado; (*r)->esq = NULL; (*r)->dir = NULL; (*r)->FB = 0; (*r)->alturaEsq = 0; (*r)->alturaDir = 0; return; } if (dado.chave < (*r)->registro.chave) { insereAVL(dado, &(*r)->esq); (*r)->alturaEsq = AVLAltura(&(*r)->esq); (*r)->alturaDir = AVLAltura (&(*r)->dir); (*r)->FB = (*r)->alturaDir - (*r)->alturaEsq; return; } if (dado.chave > (*r)->registro.chave) { insereAVL(dado, &(*r)->dir); (*r)->alturaEsq = AVLAltura(&(*r)->esq); (*r)->alturaDir = AVLAltura (&(*r)->dir); (*r)->FB = (*r)->alturaDir - (*r)->alturaEsq; } else { cout << "\nError: O registro já existe!\n"; } } //Função de inserção da AVN void insereAVN(dados dado, aponta * p) { if ((*p) == NULL) { *p = (aponta) malloc(sizeof (TipoNo)); (*p)->registro = dado; (*p)->esq = NULL; (*p)->dir = NULL; (*p)->FB = 0; (*p)->alturaEsq = 0; (*p)->alturaDir = 0; return; } if (dado.chave < (*p)->registro.chave) { insereAVN(dado, &(*p)->esq); return; } if (dado.chave > (*p)->registro.chave) { insereAVN(dado, &(*p)->dir); } else { cout << "\nError: O registro já existe!\n"; } } // Função de busca na estrutura de árvore void buscaAV(dados *dado, aponta * p, int i) { if ((*p) == NULL) { i++; cout << "\nError: Registro não está presente na árvore!\n"; cout << "\nComparações " << i; dado->chave = -1; return; } if (dado->chave < (*p)->registro.chave) { i++; buscaAV(dado, &(*p)->esq, i); return; } if (dado->chave > (*p)->registro.chave) { i++; buscaAV(dado, &(*p)->dir, i); } else { i++; cout << "\nComparações " << i; *dado = (*p)->registro; } } // Função para exibir os dados presentes na árvore de maneira ordenada void exibirEmOrdem(aponta * p) { if ((*p) != NULL) { exibirEmOrdem(&(*p)->esq); cout << "\nChave: " << (*p)->registro.chave; cout << " Fator Balanceamento: " << (*p)->FB; cout << " Altura Direita . . ." << (*p)->alturaDir; cout << " Altura Esquerda . . ." << (*p)->alturaEsq; exibirEmOrdem(&(*p)->dir); } } // Função para verificar se a árvore está ordenada (Crescente ou Decrescente) bool verifOrd(ListaEncadeada lista) { Elemento *elemento = lista.primeiro; // Verifica se a lista está ordenada if (elemento->proximo != NULL) { if (elemento->info.chave < elemento->proximo->info.chave) { while (elemento != NULL && elemento->proximo != NULL) { if (elemento->proximo->info.chave < elemento->info.chave) { return true; } elemento = elemento->proximo; } } else if (elemento->info.chave > elemento->proximo->info.chave) { while (elemento != NULL && elemento->proximo != NULL) { if (elemento->proximo->info.chave > elemento->info.chave) { return true; } elemento = elemento->proximo; } } } return false; } // Função menu busca (Exibe ao usuário opções de métodos de busca) do programa void menubusca(ListaEncadeada lista, aponta *p, aponta * r) { // Solicita ao usuário que informe uma chave. Atribui este valor // recebido a variável declarada aqui dados *dado = (dados *) malloc(sizeof (dados)); int metodo, chave = 0; clock_t tempof, tempo; pesquisa: cout << "\n\nInforme a chave a ser pesquisada: "; cin >> chave; dado->chave = chave; metodo: cout << "\nEscolha um metodo de pesquisa:\n "; cout << "\n1. Pesquisa Sequencial"; cout << "\n2. Arvore Não Balanceada"; cout << "\n3. Arvore Balanceada"; cout << "\n4. Pesquisa Binária Recursiva"; cout << "\n\nEscolha: "; cin >> metodo; switch (metodo) { case 1: tempo = clock(); buscaSeq(lista, *dado); tempof = clock() - tempo; break; case 2: tempo = clock(); buscaAV(&(*dado), &(*p), 0); tempof = clock() - tempo; break; case 3: tempo = clock(); buscaAV(&(*dado), &(*r), 0); tempof = clock() - tempo; break; case 4: if (verifOrd(lista)) { cout << "\nA Pesquisa Binária Recursiva funciona somente com lista ordenadas!\n"; cout << "\nSelecione outro metodo de busca:\n"; goto metodo; } tempo = clock(); buscaSeqRec(lista, *dado); tempof = clock() - tempo; break; default: cout << "\nOpção Inválida!\n"; goto metodo; break; } if (metodo >= 1 && metodo <= 3 && dado->chave != -1) { cout << "\nChave: " << dado->chave; cout << " Dado1: " << dado->dado1; cout << " Dado2: " << dado->dado2; } // Exibe ao usuário o tempo gasto no algoritmo de busca cout << "\n\nTempo gasto: " << ((tempof * 1000000) / CLOCKS_PER_SEC) << "ns.\n"; char op; cout << "\nRealizar outra pesquisa? S/N \n"; cin >> op; if (op == 'S' || op == 's') { goto pesquisa; } // Libera espaço alocado na criação da variável dinâmica free(dado); } // Função menu principal do programa void menu() { // Declara uma variável que receberá a opção desejada pelo usuário int op, quant, escolha; string tipo, nome; // Cria e inicializa a variável lista ListaEncadeada lista; criarLista(lista); // Cria variável árvore Não Balanceada e Balanceada, respectivamente aponta p, r; // Cria variável dinâmica elemento para manipulação de dados Elemento *elemento = (Elemento *) malloc(sizeof (Elemento)); inicio: // Exibe um menu com opções e pede para que o usuário informe uma escolha do { cout << "\n\nInforme uma escolha:\n"; cout << "\n1. Gerar chaves de entrada aleat?ias"; cout << "\n2. Gerar chaves de entrada ordenada."; cout << "\n3. Exibir chaves geradas."; cout << "\n4. Escrever um arquivo com as chaves geradas."; cout << "\n5. Ler arquivo de entrada com chaves"; cout << "\n6. Realizar uma pesquisa"; cout << "\n0. Sair do programa."; cout << "\n\nEscolha: "; cin >> op; // Limpar tela ap? selecionar a escolha // Linux: // system("clear"); // Windows system("cls"); switch (op) { // Gerar chaves Aleatórias case 1: // Inicializa-se uma Lista Encadeada criarLista(lista); cout << "\nInforme a quantidade de chaves a ser geradas: "; cin >> quant; if (quant <= 0) { cout << "\nQuantidade informada inv?ida!\n"; goto inicio; } gerarchaves(lista, quant, op); tipo = ("Aleatorio-"); escolha = 1; break; // Gerar chaves Ordenadas case 2: // Inicializa-se uma Lista Encadeada criarLista(lista); cout << "\nInforme a quantidade de chaves a ser geradas: "; cin >> quant; if (quant <= 0) { cout << "\nQuantidade informada inv?ida!\n"; goto inicio; } gerarchaves(lista, quant, op); tipo = ("Ordenado-"); escolha = 2; break; // Exibe ao usuário os dados armazenados case 3: // Exibe ao usu?io a lista atualmente em manuseio exibeLista(lista, escolha); break; // Escrever no arquivo os dados gerados case 4: escrevearquivo(lista, quant, tipo); // Ao final, exibe uma mensagem escrita concluida. E ent?, fecha-se o arquivo. cout << "\nArquivo escrito!"; break; // Ler do arquivo os dados gerados case 5: // Inicializa-se uma Lista Encadeada criarLista(lista); cout << "\nInforme o nome do arquivo: "; cin.ignore(); getline(cin, nome); lerarquivo(lista, nome); escolha = 3; break; // Realizar pesquisa no dados armazenados case 6: elemento = lista.primeiro; if (lista.primeiro == NULL) { cout << "\nLista Inv?ida!\n"; goto inicio; } else { cout << "\nInicializando . . ."; iniciarArvore(&(p)); iniciarArvore(&(r)); // Cria variável Elemento dinâmica cout << "\nArvore Iniciada!"; while (elemento != NULL) { insereAVN(elemento->info, &(p)); insereAVL(elemento->info, &(r)); //atualizar(&(r)); balancear(&(r)); atualizar(&(r)); elemento = elemento->proximo; } cout << "\nRaiz da AVN: " << p->registro.chave; cout << "\nRaiz da AVL: " << r->registro.chave; // Ir?deslocar o usu?io para a fun?o de busca menubusca(lista, &p, &r); // exibirEmOrdem(&(r)); } break; // Sair do programa case 0: // Finaliza?o do programa cout << "\n\n"; break; default: // Caso nenhuma das anteriores, ?informado ao usu?io que houve sele?o de alternativa inv?ida. // Retorna ao menu principal cout << "\nOpçãoo informada inválida!\n"; goto inicio; break; } } while (op != 0); // Libera espaço alocado na criação da variável dinâmica free(elemento); } // Função principal para início do programa int main() { // Invoca a função menu para fornecer ao usuário opções menu(); // Mensagem exibida na tela do usuário quando o programa é finalizado com sucesso cout << "\nSaída com sucesso!\n\n\n"; return 0; }
  21. Estou criando um sistema bancário em c++ (é um trabalho do meu curso, que exige que eu use essa linguagem) na última etapa, preciso que o programa mostre um extrato com todas as movimentações da conta, mas quando eu faço os depósitos na conta, ocorre um erro. por exemplo, o saldo inicial era 0 depositei 10 em seguida mais 20 no extrato aparece: depósitos feitos: 2 Valor dos depósitos: 20 20 ou seja, preciso de alguma forma imprimir o primeiro e segundo valor, e ele só está reconhecendo o segundo. alguém pode me ajudar?
  22. Olá pessoal beleza ? Estou com um problema em meu código, na parte em que ele tem que mostrar o menor número digitado da matriz, ele sempre mostra como zero, já mudei o código várias vezes porém ainda não consegui resolver este problema, alguém ai pode me ajudar por favor ? O código é este: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { int lin,col; int mat[3][3]; int menor=0; int pos1=0, pos2=0; setlocale(LC_ALL,"portuguese"); for(lin=0; lin<=2; lin++){ for(col=0; col<=2; col++){ printf("Digite um número para linha [%d] e um para coluna [%d]: ", lin+1, col+1); scanf("%d", &mat[lin][col]); } printf("\n"); } printf("\n Matriz\n\n"); for(lin=0; lin<=2; lin++){ for(col=0; col<=2; col++){ printf("%d\t ", mat[lin][col]); } printf("\n\n"); } for(lin=0; lin<=2; lin++){ for(col=0; col<=2; col++){ if(mat[lin][col] < menor){ menor = mat[lin][col]; pos1=lin; pos2=col; } } } printf("\n O número menor é: [%d]", menor); printf("\n\n A posição do menor número será: [%d][%d]", pos1+1,pos2+1); printf("\n\n"); system("pause"); return 0; }
  23. Tenho conhecimento básico em C++ e preciso entregar um programa na escola de cadastro de um petshop com conexão ao banco de dados, com cadastro de novos clientes, estoque, estoque de remédios, consultas, aplicações e roupas e acessórios meu professor me ajuda com uma parte do programa mas n estou conseguindo finalizar alguém pode me ajudar ? pf entrem em contato 13 974014395
  24. n votefavorite Estou usando o sdk dahua para conectar-me a um DVR. Até então. Estou tendo problemas para obter os bytes retornados de uma câmera. e exportar em formato de imagem. Sou iniciante e não tenho ideia. como. // real-time monitoring method g_lRealHandle = CLIENT_RealPlayEx(g_lLoginHandle, command_options.dvr_channel, NULL, emRealPlayType); //set-callback CLIENT_SetRealDataCallBackEx(g_lRealHandle, &RealDataCallBackEx, NULL, dwFlag) //bytes de retorno da camera void CALLBACK RealDataCallBackEx(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LONG param, LDWORD dwUser) { // if more than one real-time monitoring use same data callback, we can judge by parameter lRealHandle. //NESTA PARTE RECEBO OS BYTES QUERIA SABER COMO SALVAR EM FORTAMO DE IMAGEM OS FRAMES DESSE BYTE fwrite (pBuffer, 1, dwBufSize, file); fflush(file); //original A/V hybrid data //printf("receive real data, param: lRealHandle[%ld], dwDataType[%u], pBuffer[%p], dwBufSize[%u], param[%d], dwUser[%ld] - [%d]\n", lRealHandle, dwDataType, pBuffer, dwBufSize, param, dwUser, bInput); }
×
×
  • Criar Novo...