Ir ao conteúdo
  • Cadastre-se

Velorys

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

Tudo que Velorys postou

  1. O programa compila sem mostrar erro mas, dentro do laço as funções da classe não funcionam corretamente. Comentando o laço e fazendo as seguintes declarações fora dele, o programa faz tudo certinho. int num = 5; lista_encadeada->inserir_inicio(num); lista_encadeada->mostrar(); mas por que com o laço que o programa simplesmente retorna Process returned -1073741819 (0xC0000005) do{ cout << "1. Inserir numero no inicio da lista." << endl; cout << "2. Inserir numero no fim da lista." << endl; cout << "3. Imprimir lista completa." << endl; cout << "0. Sair." << endl; cout << "Opcao: "; cin >> opcao; switch (opcao) { case 1: cout << "Digite um numero: "; cin >> num; lista_encadeada->inserir_inicio(num); cout << "Numero inserido no inicio da lista" << endl; break; case 2: cout << "Digite um numero: "; cin >> num; lista_encadeada->inserir_final(num); cout << "Numero inserido no fim da lista" << endl; break; case 3: lista_encadeada->mostrar(); break; case 0: cout << "Saindo..." << endl; break; default: cout << "Digito Invalido!" << endl; } } while (opcao != 0); Nos dois modos, o codeblocks avisa: codigo completo: #include <iostream> using namespace std; // classe No class No { private: int v; No* prox; public: No(int v) // construtor { this->v = v; this->prox = NULL; } int obterValor() // obtém o valor { return v; } No* obterProx() // obtém o próximo No { return prox; } void setProx(No* p) // seta o próximo No { prox = p; } }; // classe Lista class Lista { private: No* cabeca; // primeiro elemento No* cauda; // último elemento public: Lista() { // se não passar elemento, então cabeca e cauda são NULL cabeca = NULL; cauda = NULL; } Lista(int v) { // se passar elemento, então cria novo No cabeca = new No(v); cauda = cabeca; } virtual ~Lista() // destrutor { delete cabeca; } void mostrar() // mostra todos os elementos da lista { cout << "\nImprimindo todos os elementos...\n"; No* c = cabeca; if(vazia()) cout << "A lista não possui elementos!!\n"; else { while(c) // percorre a lista { cout << c->obterValor() << endl; c = c->obterProx(); } cout << endl; } } bool vazia() // verifica se a lista está vazia { return (cabeca == NULL); } // insere no início (semelhante a push_front da list) void inserir_inicio(int v) { No* novo_no = new No(v); if(vazia()) { cabeca = novo_no; cauda = novo_no; } else { novo_no->setProx(cabeca); cabeca = novo_no; } } // insere no final (semelhante a push_back da list) void inserir_final(int v) { No* novo_no = new No(v); if(vazia()) { cabeca = novo_no; cauda = novo_no; } else { cauda->setProx(novo_no); cauda = novo_no; } } // retorna o tamanho da lista int tamanho() { if(vazia()) // se for vazia, entã retorna 0 return 0; No* c = cabeca; int tam = 0; // percorre a lista do { c = c->obterProx(); tam++; } while(c); return tam; } // verifica se um elemento existe na lista bool existe(int v) { No* c = cabeca; while(c) { if(c->obterValor() == v) return true; c = c->obterProx(); } return false; } // remove da lista, remoção do final (semelhante a pop_back da list) void remover() { if(!vazia()) { // se houver só 1 elemento if(cabeca->obterProx() == NULL) cabeca = NULL; else if(cabeca->obterProx()->obterProx() == NULL) // 2 elementos cabeca->setProx(NULL); else // > 2 elementos { No* ant_ant = cabeca; No* ant = cabeca->obterProx(); No* corrente = cabeca->obterProx()->obterProx(); while(corrente) { No* aux = ant; ant = corrente; ant_ant = aux; corrente = corrente->obterProx(); } delete ant_ant->obterProx(); // libera memória ant_ant->setProx(NULL); // seta o prox como NULL cauda = ant_ant; // atualiza a cauda } } } }; int main() { Lista* lista_encadeada; int opcao; int num; ///lista_encadeada->inserir_inicio(num); ///lista_encadeada->mostrar(); do{ cout << "1. Inserir numero no inicio da lista." << endl; cout << "2. Inserir numero no fim da lista." << endl; cout << "3. Imprimir lista completa." << endl; cout << "0. Sair." << endl; cout << "Opcao: "; cin >> opcao; switch (opcao) { case 1: cout << "Digite um numero: "; cin >> num; lista_encadeada->inserir_inicio(num); cout << "Numero inserido no inicio da lista" << endl; break; case 2: cout << "Digite um numero: "; cin >> num; lista_encadeada->inserir_final(num); cout << "Numero inserido no fim da lista" << endl; break; case 3: lista_encadeada->mostrar(); break; case 0: cout << "Saindo..." << endl; break; default: cout << "Digito Invalido!" << endl; } } while (opcao != 0); return 0; }
  2. Olá, Juliana! Você pode usar vetores do tipo char para salvar o conteúdo do ex3a.txt e ex3b.txt, e concatená-los em um terceiro vetor. Após isso, o algoritmo sort da biblioteca algorithm ordena números ou caracteres de um vetor. Portanto: E em seguida, é só criar/atribuir ao arquivo ex3c.txt.
  3. Das respostas, a do @devair1010 e a do @arfneto foram as que funcionaram. Sobre os comandos: uso o que estou aprendendo no decorrer da matéria Fundamentos de lógica de programação. Os professores da prática e teórica estão ensinando dessa forma, e eu nem sabia que eles estavam "misturando" as coisas. Obrigado pelas dicas e conselhos, vou ter mais atenção quanto à isso. @Midori o wcin só pega a primeira palavra da frase. Não consegui fazê-lo pegar a frase inteira. Os comandos que conheço só pegam se for do tipo char ou string. Testei com uma palavra só mesmo e o problema permaneceu exatamente como no meu programa. Os professores da faculdade escrevem o código de maneira semelhante ao meu. Então, foi reflexo do que aprendi. Quanto ao nome das variáveis e funções, claro, é responsabilidade minha mesmo! Alterei os nomes aqui, ficou mais objetivo agora. Faltou mais atenção minha aqui. Poderia usar um break, mas a professora disse que "não é uma boa prática de programação usar break". O laço ficaria assim no antigo código: for (int i=0; i < tamFrase; i++){ for (int j=0; j < tamComparacao; j++){ if (string[i] == comAcento[j]){ string[i] = semAcento[j]; j = tamComparacao; } } } mas copiei o código de vcs dois. @arfneto tu deu foi uma aula, cara! Ja vi que o programa funciona. Vou procurar entender melhor agora e deixá-lo com a minha cara. Suas explicações facilitaram pra caramba!! OBS.: Nunca tinha visto 'unsigned' e 'auto'. Obrigado a todos pelas respostas!!!
  4. #include <iostream> #include <string.h> #include <cstdio> #include <locale.h> using namespace std; void contador(char string[]){ int cont=0, tamanho = strlen(string); for (int i=0; i < tamanho; i++){ if (isalpha(string[i])) cont++; } cout << "Quantidade de letras digitadas: " << cont << endl; } void removeAcentos (char string[], char comAcento[], char semAcento[]){ int tamanho = strlen(string), tam = strlen(comAcento); for (int i=0; i < tamanho; i++){ for (int j=0; j < tam; j++){ if (string[i] == comAcento[j]){ string[i] = comAcento[j]; } } } cout << "Frase alterada: " << string << endl; } int main(){ char frase[100], alterado[100]; char comAcento[] = "áéíóúâêôãõà"; char semAcento[] = "aeiouaeoaoa"; cout << "Digite uma frase: "; fflush(stdin); cin.getline(frase, 100, '\n'); cout << frase << endl; removeAcentos(frase, comAcento, semAcento); contador(frase); return 0; } Galera, estou com um exercício que tenho que digitar uma frase e contar quantas letras foram digitadas. Quero fazer um programa que permita que as frases sejam digitadas na nossa língua, ou seja, com acentos. O problema é que na contagem das letras o programa não conta as que possuem acentos. Tentei criar uma função que substitua as letras com acento pela mesma sem acento pra contabilizar na contagem (função void contador), mas a frase não se altera. Se não tiver ficado claro, resumindo: Quero alterar vogal com assento pela mesma vogal sem assento em uma string.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!