Ir ao conteúdo
  • Cadastre-se

Diego Dreossi

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

Reputação

1
  1. Boa tarde import 'dart:math'; import 'package:flutter/material.dart'; import '../barra.dart'; class ContasSimples { List<String> _contas = [ 'Adição', 'Subtração', 'Multiplicação', 'Divisão', 'Raiz Quadrada', 'Elevação', 'Porcentagem', ]; List<String> get Contas { return _contas; } String calcularOp(String op, double p1, double p2) { if (!Contas.contains(op)) { return ''; } switch (op) { case 'Porcentagem': return ((p1 / 100) * p2).toString(); case 'Divisão': if (p2 == 0) { return 'Divisão por 0 impossivel'; } else { return (p1 / p2).toString(); } case 'Multiplicação': return (p1 * p2).toString(); case 'Subtração': return (p1 - p2).toString(); case 'Adição': return (p1 + p2).toString(); case 'Elevação': return pow(p1, p2).toString(); case 'Raiz Quadrada': return sqrt(p1).toString(); default: return 'Houve erro'; } } String simbolo(String op) { if (!Contas.contains(op)) { return ''; } switch (op) { case 'Porcentagem': return '% de'; case 'Divisão': return '/'; case 'Multiplicação': return 'x'; case 'Subtração': return '-'; case 'Adição': return '+'; case 'Elevação': return '^'; case 'Raiz Quadrada': return 'rq'; default: return ''; } } } List<String> _contas = [ 'Adição', 'Subtração', 'Multiplicação', 'Divisão', 'Raiz Quadrada', 'Elevação', 'Porcentagem', ]; Widget BotaoContasBasicas() { return Row( children: [ Expanded( child: ElevatedButton( style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.green)), onPressed: () {}, child: Text('Contas Básicas')), ) ], ); } class ContasBasicas extends StatefulWidget { @override _ContasBasicasState createState() => _ContasBasicasState(); } class _ContasBasicasState extends State<ContasBasicas> { late String? itemEscolhido; late bool contaSelecionada; @override void initState() { // TODO: implement initState super.initState(); itemEscolhido = _contas[0]; contaSelecionada = false; } Widget estadoCalculo() { setState(() { //itemEscolhido = itemEscolhido; //calculoCorpo(itemEscolhido, contaSelecionada); }); return calculoCorpo(itemEscolhido, contaSelecionada); } @override Widget build(BuildContext context) { return Scaffold( appBar: Barra( titulo: 'Contas Básicas', ), body: ListView( children: [ Padding( padding: EdgeInsets.all(20), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ DropdownButton<String>( hint: Text("Selecione conta"), //value: itemEscolhido, underline: Container(height: 1, color: Colors.green[200]), items: _contas .map( (c) => DropdownMenuItem(value: c, child: Text(c))) .toList(), onChanged: (String? conta) { setState(() { contaSelecionada = true; itemEscolhido = conta; }); }, ), ], ), SizedBox( height: 20, ), //Text(itemEscolhido!), //estadoCalculo(), calculoCorpo(itemEscolhido, contaSelecionada), //Calculo(conta: itemEscolhido), ], ), ), ], ), ); } } Widget calculoCorpo(String? conta, bool selecionado) { //Porcentagem e raiz quadrada precisam ser feitos widgets separados if (!selecionado) { //conta: return Container(); } else { if (conta == _contas[0]) { return Calculo(conta); } else if (conta == _contas[1]) { return Calculo(conta); } else if (conta == _contas[2]) { return Calculo(conta); } else if (conta == _contas[3]) { return Calculo(conta); } else if (conta == _contas[4]) { return Calculo(conta); } else if (conta == _contas[5]) { return Calculo( conta); } else if (conta == _contas[6]) { return Calculo(conta); } else { return Container(); } } } Widget mostrarResultado(String resultado, bool calculado) { return Column(children: [ calculado ? Text( 'Resultado =', style: TextStyle(fontSize: 25, color: Colors.red), ): Text( '', style: TextStyle(fontSize: 25, color: Colors.red), ) , calculado ? Text( resultado, style: TextStyle(fontSize: 25), ): Text( '', style: TextStyle(fontSize: 25, color: Colors.red), ) , ]); } //String resultado = ''; //bool calculado = false; class Calculo extends StatefulWidget { final String? conta; Calculo(this.conta); @override _CalculoState createState() => _CalculoState(conta: conta); } class _CalculoState extends State<Calculo> { final String? conta; String resultado = ''; bool calculado = false; _CalculoState({required this.conta}); @override void initState() { super.initState(); resultado = ''; calculado = false; } @override Widget build(BuildContext context) { TextEditingController parcela1 = TextEditingController(); TextEditingController parcela2 = TextEditingController(); return Container( color: Colors.grey[200], child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( conta!, style: TextStyle(fontSize: 25), ), ], ), SizedBox( height: 10, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( height: 40, width: 150, child: TextField( controller: parcela1, onChanged: (text) {}, decoration: InputDecoration( border: OutlineInputBorder(), ), ), ), Container( child: Text( ' ${ContasSimples().simbolo(conta!)} ', style: TextStyle(fontSize: 25), )), Container( height: 40, width: 150, child: TextField( controller: parcela2, onChanged: (text) {}, decoration: InputDecoration( border: OutlineInputBorder(), ), ), ), ], ), SizedBox( height: 30, ), Row(mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Column( mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox( width: 150, height: 40, child: ElevatedButton( onPressed: () { setState(() { calculado = true; double par1 = double.tryParse(parcela1.text) ?? 0; double par2 = double.tryParse(parcela2.text) ?? 0; //if (parcela1.text != '' && parcela2.text != '') { resultado = ContasSimples().calcularOp(conta!, par1, par2); //} }); }, child: Text('Calcular'), style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.green[600])), ), ), ], ), SizedBox( width: 10, ), Column( mainAxisAlignment: MainAxisAlignment.end, children: [ SizedBox( width: 150, height: 40, child: ElevatedButton( onPressed: () { setState(() { parcela1.text = ''; parcela2.text = ''; calculado = false; }); }, child: Text('Limpar'), style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.green[600])), ), ), ], ), ]), SizedBox( height: 30, ), mostrarResultado(resultado, calculado), ], )); } } , estou desenvolvendo um programa de resolução de contas em flutter. Na parte da op basicas (adição, etc), eu fiz a tela um stateful widget, que tem um dropdown button, e ao mudar o valor dele a tela precisa mudar de conta, eu fiz um outro sw com todo o corpo, mas não está mudando, fica preso na primeira op escolhida ao iniciar. alguém tem alguma ideia de por que isso pode estar acontecendo e como consertar?
  2. Boa noite, estou fazendo um pequeno aplicativo de jogo da forca, e em uma das paginas eu coloquei um TextField para o usuario escrever qual palavra ele acha que é. (Tem uma parte em que o usuario vai clicando em letra por letra também). Funciona, eu acionando o botão preparado para checar o texto ou clicando enter verifica se o usuario acertou a palavra, mas tem esse aviso no prompt: D/InputConnectionAdaptor( 2645): The input method toggled cursor monitoring on W/TextInputPlugin( 2645): Changing the content within the the composing region may cause the input method to behave strangely, and is therefore discouraged. See https://github.com/flutter/flutter/issues/78827 for more details Alguem sabe porque aparece e como consertar ?
  3. Boa noite, consegui terminar, muito obrigado pela sua ajuda, tirei os list mesmo e substitui por vetores. #include <iostream> #include <exception> #include "Fila.cpp" #include "Fila.h" using namespace std; int main() { int fazer,el,removido,pri,ult,pesquisa; Fila *principal = new Fila(); Fila *inter = new Fila(); Fila *uni = new Fila(); Fila *teste = new Fila(); teste->inserir(1);teste->inserir(4);teste->inserir(20);teste->inserir(8); teste->inserir(100);teste->inserir(223);teste->inserir(1000);teste->inserir(12); do{ cout << "Tarefa D Estrutura de dados\n" << endl; cout << "Menu*******\n\n"; cout << "O que deseja fazer?\n"; cout << "1 - Inserir elementos na fila\n"; cout << "2 - Remover elementos da fila\n"; cout << "3 - Ver primeiro elemento da fila\n"; cout << "4 - Ver ultimo elemento da fila\n"; cout << "5 - Esvaziar toda fila\n"; cout << "6 - Ver tamanho da fila\n"; cout << "7 - Inverter ordem da fila\n"; cout << "8 - Listar elementos da fila\n"; cout << "9 - Pesquisar valor\n"; cout << "10 - Interseccao lista\n"; cout << "11 - Uniao lista\n"; cout << "12 - Sair\n\n"; cin >> fazer; if(fazer < 1||fazer > 11){fazer = 12;} switch(fazer){ case 1: { cout << "\n\nInserir elemento: "; cin >> el; try{ if(principal->inserir(el)){ cout << "Elemento " << el << " inserido\n\n"; }else{cout << "Elemento " << el<< " nao inserido\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 8:{//Mostar fila principal cout << "\nFila principal:\n"; try{ if(!principal->vazia()){ cout << principal->listar(); cout << endl << endl; }else{cout << "\nLista principal vazia\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 2: { try{ if(!principal->vazia()){ if(principal->remover(removido)){ cout << "\n\nElemento " << removido << " removido com sucesso\n\n"; }else{cout << "\n\nElemento" << removido << " nao removido\n\n";} }else{ cout << "\nFila vazia!\n\n"; } }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 3: {//Primeiro elemento try{ if(!principal->vazia()){ if(principal->primeiro(pri)){ cout << "\n\nPrimeiro elemento e " << pri << endl << endl; }else{cout << "\n\nHouve erro\n\n";} }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 4: {//Ultimo elemento try{ if(!principal->vazia()){ if(principal->ultimo(ult)){ cout << "\n\nUltimo elemento e " << ult << endl << endl; }else{cout << "\n\nHouve erro\n\n";} }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 5: {//Esvaziar fila try{ if(!principal->vazia()) { if(principal->esvaziar()){cout << "\n\nFila esvaziada\n\n";} else{cout << "\n\nHouve erro\n\n";} }else{cout << "\nFila ja Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 6: {//Ver tamanho da fila try{ int tam = principal->tamanho(); cout << "\n\nLista tem " << tam << " elementos\n\n"; }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 7: {//Inverter ordem try{ if(!principal->vazia()){ //principal->inverter(); if (principal->inverter()){ cout << "\nOrdem invertida da fila\n"; //principal->listar(); } }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 9: {//Pesquisar valor try{ switch(!principal->vazia()){ case true:{ cout << "\n\nPesquisar qual valor inteiro: ";cin >> pesquisa; if(principal->estaNaFila(pesquisa)){ cout << "\n\nElemento " << pesquisa << " se encontra na fila\n\n"; }else{ cout << "\n\nNao se encontra na fila\n\n"; } system("pause"); break; } case false:{ cout << "\nFila Vazia!\n\n"; system("pause"); break; } } }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } //system("pause"); break; } case 10: {//Intersecção string filainter; try{ if(!principal->vazia()){ inter = principal->interseccao(teste); if(inter == NULL){cout << "\n\nNao ha interseccao nas filas\n\n";} else{ cout << "\n\nInterseccao\n" << endl; cout << inter->listar(); cout << endl << endl; } }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 11: {//União try{ if(!principal->vazia()){ string filauniao; uni = principal->uniao(teste); cout << "\n\nUniao das listas: " << endl; cout << uni->listar() << endl << endl; cout << endl<< endl; }else{ cout << "\n\nFila auxiliar: " << endl; cout << teste->listar() << endl << endl; cout << endl; } }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } } system("cls"); }while(fazer != 12); return 0; } #ifndef FILA_H_INCLUDED #define FILA_H_INCLUDED #include <list> #define MAX 20 using namespace std; class Fila { private: struct elemento { int valor; elemento *proximoElemento; }; typedef elemento *PonteiroElemento; PonteiroElemento inicio; PonteiroElemento fim; int tamfila; int listafila[MAX],listafilacopia[MAX]; public: Fila(); bool vazia(); bool cheia(); bool inserir(int x); bool remover(int &x); //implementar: bool primeiro(int &x); bool ultimo(int &x); bool esvaziar(); int tamanho(); bool inverter(); string listar(); //void listar(); bool estaNaFila(int x); Fila* interseccao(Fila* auxFila); Fila* uniao(Fila* auxFila); }; #endif // FILA_H_INCLUDED #include <list> #include "Fila.h" Fila::Fila() { inicio = NULL; fim = NULL; tamfila = 0; } bool Fila::vazia() { return (inicio == NULL); } bool Fila::cheia() { return false; } bool Fila::inserir(int x) { PonteiroElemento p; p = new elemento; p->valor = x; if (vazia()) { inicio = p; fim = p; } else { fim->proximoElemento = p; fim = p; } tamfila++; p->proximoElemento = NULL; //listafila[tamfila-1] = x; return true; } bool Fila::remover(int &x) { PonteiroElemento p; if (vazia()) return false; x = inicio->valor; p = inicio; inicio = inicio->proximoElemento; delete p; tamfila--; //listafila.pop_front(); if (inicio == NULL) fim = NULL; return true; } bool Fila::primeiro(int &x) { // caso a lista esteja vazia retornar falso // retornar em x o valor do primeiro elemento da lista // seu código aqui: x = inicio->valor; return true; } bool Fila::ultimo(int &x) { // caso a lista esteja vazia retornar falso // retornar em x o valor do último elemento da lista // seu código aqui: x = fim->valor; return true; } bool Fila::esvaziar() { // caso a lista esteja vazia retornar falso // remover todos os elementos da lista // seu código aqui: PonteiroElemento p,e; if (vazia()) return false; p = inicio; while(p != NULL){ e = p; p = p->proximoElemento; inicio = inicio->proximoElemento; delete e; tamfila--; //listafila.pop_front(); } return true; } int Fila::tamanho() { // retornar o tamanho da lista, 0 se estiver vazia // seu código aqui: return tamfila; } bool Fila::inverter() { // caso a lista esteja vazia retornar falso // inverter a ordem dos elementos da lista // seu código aqui: PonteiroElemento p = inicio; //listafilacopia = listafila; int y = 0,nelementos = tamfila; for(int z = 0; z < tamfila; z++){ listafila[z] = p->valor; p = p->proximoElemento; } for(int z = tamfila-1; z >= 0;z--){ listafilacopia[z] = listafila[y]; y++; } esvaziar(); for(int z = 0; z < nelementos;z++){ inserir(listafilacopia[z]); listafila[z] = listafilacopia[z]; } return true; } string Fila::listar() { // retornar string com todos os elementos da lista separados por ; // exemplo: 1 ; 3 ; 5 // string vazia se a lista estiver vazia // seu código aqui: PonteiroElemento p; p = inicio; string aux = ""; while(p != NULL){ aux = aux + to_string(p->valor) + " ; "; p = p->proximoElemento; } return aux; } bool Fila::estaNaFila(int x) { // retornar verdadeiro caso o valor x seja localizado na fila // seu código aqui: PonteiroElemento aux; aux = inicio; bool achou = false; while(aux != NULL){ if(aux->valor == x){ achou = true; } aux = aux->proximoElemento; } return achou; } Fila* Fila::interseccao(Fila* auxFila) { // retornar objeto Fila contendo a intersecção com a lista atual // elementos em comum com as 2 listas // sem repetição de elementos // seu código aqui: //listafilacopia = listafila; Fila *intersec = new Fila(); PonteiroElemento in = auxFila->inicio; PonteiroElemento aux = inicio; while(in != NULL){ while(aux != NULL){ if(aux->valor == in->valor){ intersec->inserir(aux->valor); } aux = aux->proximoElemento; } in = in->proximoElemento; aux = inicio; } return intersec; } Fila* Fila::uniao(Fila* auxFila) { // retornar objeto Fila contendo a união com a lista atual // elementos das 2 listas // sem repetição de elementos // seu código aqui: Fila *uniao = new Fila(); PonteiroElemento un = inicio; while(un != NULL){ uniao->inserir(un->valor); un = un->proximoElemento; } PonteiroElemento af = auxFila->inicio; while(af != NULL){ uniao->inserir(af->valor); af = af->proximoElemento; } return uniao; }
  4. bool Fila::estaNaFila(int x) { // retornar verdadeiro caso o valor x seja localizado na fila // seu código aqui: PonteiroElemento aux; aux = inicio; bool achou = false; while(aux != NULL || achou != true){ if(aux->valor == x){ achou = true; } aux = aux->proximoElemento; } if(achou){return true;}else{return false;} } case 9: {//Pesquisar valor try{ if(!principal->vazia()){ cout << "\n\nPesquisar qual valor inteiro: ";cin >> pesquisa; if(principal->estaNaFila(pesquisa)){ cout << "\n\nElemento " << pesquisa << " se encontra na fila\n\n"; }else{ cout << "\n\nNao se encontra na fila\n\n"; } }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } Nessa parte de pesquisar valor quando um determinado valor não se encontra na fila ele encerra automaticamente o programa em vez de escrever cout << "\n\nNao se encontra na fila\n\n";, voce consegue enxergar o problema?
  5. Eu estou fazendo o exercicio pro meu curso, eu coloquei list para facilitar a inversão dos elementos na fila. Eu recorrigi conforme o seu comentario, está dando algum erro no listar(), cuja finalidade é mostrar os elementos, quando a função é chamada no switch o cursor trava na tela, ele pisca mas fica travado, voce tem ideia de como consertar?
  6. Boa tarde, estou tentando fazer esse exercicio , mas estou tendo dificuldade, tem funções que travam o programa de vez e outras que o encerram abruptamente, poderiam me dizer o que está errado por favor, não consigo enxergam o que seja. Colei os 3 arquivos que estou usando. #ifndef FILA_H_INCLUDED #define FILA_H_INCLUDED #include <list> using namespace std; class Fila { private: struct elemento { int valor; elemento *proximoElemento; }; typedef elemento *PonteiroElemento; PonteiroElemento inicio; PonteiroElemento fim; int tamfila; public: list <int> listafila,listafilacopia; Fila(); bool vazia(); bool cheia(); bool inserir(int x); bool remover(int &x); //implementar: bool primeiro(int &x); bool ultimo(int &x); bool esvaziar(); int tamanho(); bool inverter(); //string listar(); void listar(); bool estaNaFila(int x); Fila* interseccao(Fila* auxFila); Fila* uniao(Fila* auxFila); }; #include <cstdlib> #include "Fila.h" #include <list> Fila::Fila() { inicio = NULL; fim = NULL; tamfila = 0; } bool Fila::vazia() { return (inicio == NULL); } bool Fila::cheia() { return false; } bool Fila::inserir(int x) { PonteiroElemento p; p = new elemento; p->valor = x; if (vazia()) { inicio = p; fim = p; } else { fim->proximoElemento = p; fim = p; } tamfila++; p->proximoElemento = NULL; listafila.push_back(x); return true; } bool Fila::remover(int &x) { PonteiroElemento p; if (vazia()) return false; x = inicio->valor; p = inicio; inicio = inicio->proximoElemento; delete p; tamfila--; if (inicio == NULL) fim = NULL; return true; } bool Fila::primeiro(int &x) { // caso a lista esteja vazia retornar falso // retornar em x o valor do primeiro elemento da lista // seu código aqui: x = inicio->valor; return true; } bool Fila::ultimo(int &x) { // caso a lista esteja vazia retornar falso // retornar em x o valor do último elemento da lista // seu código aqui: x = fim->valor; return true; } bool Fila::esvaziar() { // caso a lista esteja vazia retornar falso // remover todos os elementos da lista // seu código aqui: PonteiroElemento p; if (vazia()) return false; p = inicio; while(p != NULL){ p = inicio; inicio = inicio->proximoElemento; delete p; } while(!listafila.empty()){ listafila.pop_front(); } if (inicio == NULL) fim = NULL; return true; } int Fila::tamanho() { // retornar o tamanho da lista, 0 se estiver vazia // seu código aqui: return tamfila; } bool Fila::inverter() { // caso a lista esteja vazia retornar falso // inverter a ordem dos elementos da lista // seu código aqui: listafilacopia = listafila; if(vazia()){return false;} else{ Fila* reverter = new Fila(); while(!listafilacopia.empty()){ reverter->inserir(listafilacopia.back()); } esvaziar(); PonteiroElemento r = reverter->inicio; while(r != NULL){ inserir(r->valor); r = r->proximoElemento; } return true; } } //string void Fila::listar() { // retornar string com todos os elementos da lista separados por ; // exemplo: 1 ; 3 ; 5 // string vazia se a lista estiver vazia // seu código aqui: string aux = ""; //if(vazia()){ // aux = "Fila Vazia"; //}else{ PonteiroElemento p; p = inicio; while(p != NULL){ aux = aux + to_string(p->valor) + " ; "; } cout << aux; // } //return aux; } bool Fila::estaNaFila(int x) { // retornar verdadeiro caso o valor x seja localizado na fila // seu código aqui: PonteiroElemento aux; aux = inicio; bool achou = false; while(aux != NULL || achou != true){ if(aux->valor == x){ achou = true; } aux = aux->proximoElemento; } if(achou){return true;}else{return false;} } Fila* Fila::interseccao(Fila* auxFila) { // retornar objeto Fila contendo a intersecção com a lista atual // elementos em comum com as 2 listas // sem repetição de elementos // seu código aqui: listafilacopia = listafila; Fila *intersec = new Fila(); PonteiroElemento in = auxFila->inicio; PonteiroElemento aux = inicio; while(in != NULL){ while(aux != NULL){ if(aux->valor == in->valor){ while(!listafilacopia.empty()){ if(aux->valor != listafilacopia.front()){ intersec->inserir(aux->valor); } listafilacopia.pop_front(); } } aux = aux->proximoElemento; } in = in->proximoElemento; } return intersec; } Fila* Fila::uniao(Fila* auxFila) { // retornar objeto Fila contendo a união com a lista atual // elementos das 2 listas // sem repetição de elementos // seu código aqui: Fila *uniao = new Fila(); PonteiroElemento un = inicio; while(un != NULL){ uniao->inserir(un->valor); un = un->proximoElemento; } PonteiroElemento af = auxFila->inicio; while(af != NULL){ uniao->inserir(af->valor); af = af->proximoElemento; } return uniao; } #include <iostream> #include "Fila.cpp" #include <exception> using namespace std; int main() { int fazer,el,removido,pri,ult,pesquisa; Fila *principal = new Fila(); Fila *inter = new Fila(); Fila *uni = new Fila(); Fila *teste = new Fila(); teste->inserir(1);teste->inserir(4);teste->inserir(20);teste->inserir(8); teste->inserir(100);teste->inserir(223);teste->inserir(1000);teste->inserir(12); do{ cout << "Tarefa D Estrutura de dados\n" << endl; cout << "Menu*******\n\n"; cout << "O que deseja fazer?\n"; cout << "1 - Inserir elementos na fila\n"; cout << "2 - Remover elementos da fila\n"; cout << "3 - Ver primeiro elemento da fila\n"; cout << "4 - Ver ultimo elemento da fila\n"; cout << "5 - Esvaziar toda fila\n"; cout << "6 - Ver tamanho da fila\n"; cout << "7 - Inverter ordem da fila\n"; cout << "8 - Listar elementos da fila\n"; cout << "9 - Pesquisar valor\n"; cout << "10 - Interseccao lista\n"; cout << "11 - Uniao lista\n"; cout << "12 - Mostrar fila principal\n"; cout << "13 - Sair\n\n"; cin >> fazer; if(fazer < 1||fazer > 12){fazer = 13;} switch(fazer){ case 1: { cout << "\n\nInserir elemento: "; cin >> el; try{ if(principal->inserir(el)){ cout << "Elemento " << el << " inserido\n\n"; }else{cout << "Elemento " << el<< " nao inserido\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 12:{//Mostar fila principal cout << "\nFila principal:\n"; try{ if(!principal->vazia()){ principal->listar(); cout << endl << endl; }else{cout << "\nLista principal vazia\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 2: { try{ if(!principal->vazia()){ if(principal->remover(removido)){ cout << "\n\nElemento " << removido << " removido com sucesso\n\n"; }else{cout << "\n\nElemento" << removido << " nao removido\n\n";} }else{ cout << "\nFila vazia!\n\n"; } }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 3: {//Primeiro elemento try{ if(!principal->vazia()){ if(principal->primeiro(pri)){ cout << "\n\nPrimeiro elemento e " << pri << endl << endl; }else{cout << "\n\nHouve erro\n\n";} }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 4: {//Ultimo elemento try{ if(!principal->vazia()){ if(principal->ultimo(ult)){ cout << "\n\nUltimo elemento e " << ult << endl << endl; }else{cout << "\n\nHouve erro\n\n";} }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 5: {//Esvaziar fila try{ if(!principal->vazia()) { if(principal->esvaziar()){cout << "\n\nFila esvaziada\n\n";} else{cout << "\n\nHouve erro\n\n";} }else{cout << "\nFila ja Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 6: {//Ver tamanho da fila try{ int tam = principal->tamanho(); cout << "\n\nLista tem " << tam << " elementos\n\n"; }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 7: {//Inverter ordem try{ if(!principal->vazia()){ principal->inverter(); if (principal->inverter()){ cout << "\nOrdem invertida da fila\n"; principal->listar(); } }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 8: {//Listar elementos try{ cout << "\n\nElementos da fila\n"; principal->listar(); }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 9: {//Pesquisar valor try{ if(!principal->vazia()){ cout << "\n\nPesquisar qual valor inteiro: ";cin >> pesquisa; if(principal->estaNaFila(pesquisa)){ cout << "\n\nElemento " << pesquisa << " se encontra na fila\n\n"; }else{ cout << "\n\nNao se encontra na fila\n\n"; } }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 10: {//Intersecção string filainter; try{ if(!principal->vazia()){ inter = principal->interseccao(teste); cout << "\n\nInterseccao\n" << endl; inter->listar(); cout << endl; }else{cout << "\nFila Vazia!\n\n";} }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } case 11: {//União try{ if(!principal->vazia()){ string filauniao; uni = principal->uniao(teste); cout << "\n\nUniao das listas: " << endl; uni->listar(); cout << endl<< endl; }else{ cout << "\n\nFila auxiliar: " << endl; teste->listar(); cout << endl; } }catch(exception& excp){ cout << "\nErro: " << excp.what() << endl; } system("pause"); break; } } system("cls"); }while(fazer != 13); return 0; }
  7. Boa noite, estou tentando aprender Dart. Num video eu vi que se consegue mexer com arquivos dart via terminar, escrevendo dentro do filder dart (nome arquivo).dart. Eu tava conseguindo mexer ate q me deparei com a situação de se inserir numeros pelo terminal, e não consegui fazer funcionar mesmo seguindo certinho as instruções, alguem sabe me dizer como consertar? E meu VS Code não danto todo o suporte para linguagem dart, antes estava, mas agora parou de dar as dicas e erro da linguagem, pouco antes por exemplo as variaveis estavam sendo sublinhadas de azul pois as variaveis ainda não estavam sendo usadas. Alguem sabe me dizer isso tambem? (N sei mexer no VS Code) import 'dart:io'; main() { var input = stdin.readLineSync(); var idade = int.parse(input); if (idade >= 18) { print("Pessoa maior de idade!"); } else { print("Pessoa menor de idade!"); } } No terminal aparece isso: primeiroalgoritmo.dart:5:25: Error: The argument type 'String?' can't be assigned to the parameter type 'String' because 'String?' is nullable and 'String' isn't. var idade = int.parse(input);
  8. Ola arfneto, muito obrigado pelas dicas , eu consegui fazer o jogo com as funcionalidades que queria, provavelmente está mais complicado do que devia e vou tentando simplificar com o tempo conforme for aprendendo mais, obrigado de novo.
  9. #include <iostream> #include <stdlib.h> #include <string> #include <list> #include <fstream> #include <stdlib.h> #include <ctime> #include <locale> #include <conio.h> using namespace std; void vencer_ou_perder(int f_acertos, int f_tam, string fpalavra, list <char> fletrastentadas); void forca(string fpalavra, char fletra, string fsecret, int ftam,int fchances, int facertos, bool facertob); bool Repetida(list<char>fletras_tentadas, char frletra); void Letras_erradasF(list<char>fletraserradas); int main() { //palavra ira armazenar a palavra a ser descoberta //letras as alternativas, secreta ira conter a palavra a // medida q ela vai sendo desvendada //tam tamanho, n de chances, //char palavra[30], letra[1],secreta[30]; setlocale(LC_ALL,"Portuguese"); string palavra, secreta,linhas; char letra; int tam,chances,acertos,p,tlista;//res; bool acertob = false;//verifica se a letra esta na palavra ou n fstream arqpalavras; list <string> palavras_possiveis; list <string>::iterator it; arqpalavras.open("Palavras do jogo da forca.txt",ios::in); if(arqpalavras.is_open()){ while(getline(arqpalavras,linhas)){ palavras_possiveis.push_front(linhas); } } tlista = palavras_possiveis.size(); it = palavras_possiveis.begin(); srand(time(NULL));//Usa a hora do pc como semente para a função numero aleatorio p = rand() % tlista;//Busca numero aleatorio até certo numero if(p == 0){p = 1;} advance(it,p-1); chances = 6; tam = 0; acertob = false; acertos = 0; palavra = *it; secreta = palavra;// = tlista[rand()% tlista.size()]; //Se esquecer como estava no comentario aparece: //error: request for member 'size' in tlista, which is of non-class type 'int' forca(palavra, letra, secreta, tam, chances, acertos, acertob); system("cls"); return 0; } void vencer_ou_perder(int f_acertos, int f_tam,string fpalavra, list<char>fletrastentadas){ if(f_acertos == f_tam){ cout << "voce ACERTOU!\n"; cout << "Palavra: " << fpalavra << "\n\n"; while(!fletrastentadas.empty()){ cout << fletrastentadas.front() << " "; fletrastentadas.pop_front(); } cout<<endl; }else{ cout << "voce PERDEU!\n"; cout << "Palavra: " << fpalavra << "\n\n"; while(!fletrastentadas.empty()){ cout << fletrastentadas.front() << " "; fletrastentadas.pop_front(); } cout<<endl; } system("pause"); } void Letras_erradasF(list<char>fletraserradas){ while(!fletraserradas.empty()){ cout << fletraserradas.front() << " "; fletraserradas.pop_front(); } } bool Repetida(list<char>fletras_tentadas, char frletra){ bool rep; if(!fletras_tentadas.empty()){ while(!fletras_tentadas.empty()){ fletras_tentadas.front(); if(frletra == fletras_tentadas.front()){ rep = true; }else rep = false; if(rep){ return true; fletras_tentadas.clear(); }else{ fletras_tentadas.pop_front(); } } }else return false; return rep; } void forca(string fpalavra, char fletra, string fsecreta, int ftam, int fchances, int facertos, bool facertob){ list <char> letras_tentadas,letras_erradas2; int LR;//letras repetidas int findice = 0; while(fpalavra[findice] != '\0'){ findice++;//contador ftam++;//descobre tamanho da palavra secreta } for(findice = 0; findice < ftam; findice++){ if(fpalavra[findice] == ' '){ fsecreta[findice] == ' '; facertos++; }else fsecreta[findice] = '-';//visual do jogo da forca } while((fchances > 0)&&(facertos < ftam)){ cout << "**** JOGO DA FORCA *****" << endl<<endl<< endl; cout << "\n\nChances restantes: " << fchances << "\n\n"; cout << "Letras: "; Letras_erradasF(letras_erradas2); cout << "\n\nPalavra secreta: "; for(findice = 0;findice < ftam;findice++){ cout << fsecreta[findice]; } cout << "\n\nDigite uma letra: "; cin >> fletra; letras_tentadas.push_back(fletra); cout << endl<<endl; LR = Repetida(letras_tentadas,fletra); if(LR){ fchances--; facertob = false; system("cls"); } else{ for(findice = 0;findice < ftam; findice++){ if(fpalavra[findice] == fletra){ facertob = true; fsecreta[findice] = fpalavra[findice]; facertos++; } } if(!facertob){ letras_erradas2.push_back(fletra); fchances--; } facertob = false; //Nao funciona clrscr(); system("cls"); } } vencer_ou_perder(facertos,ftam,fpalavra,letras_tentadas); } Boa tarde, sobre a definição da palavra eu tentei a sua sugestão e deu erro. Eu coloquei o arquivo no diretorio do codigo, eu vou deixar o system p n achei alternativa para limpar a tela, mas eu ouvi essa sugestão e o do void, por enquanto vou deixar porque esta funcionando e ainda sou novato , é um programa para estudo, e quanto a ele, só faltava uma queira das funcionalidades que queria: se o usuario digitar outra letra já digitada, perde-se uma chance, mas não estou conseguindo fazer essa, é algum problema na função Repetida, porque se eu tirar ela e tudo ligado a ela o programa funciona,mas se ela continua eu digito as letras, seja qual for e o programa só diminue as chances, você sabe o que pode estar acontecendo? heroi computador revista tigre tartaruga hamburguer mae pai informaçao verde vilao princesa lesbica filme video pizza vampiro inglaterra casa vida gay concerto filosofia monitoramento morcego processador peninsula mar visao ferradura divindade cristianismo serie sim nao assexual vidro microfone transsexual paternidade exame colmeia urso irmão irma veiculo bicicleta luz prova meio ambiente ambiente metade maça maca massa chuva chuveiro sexo fofura fofo sensacional maravilhoso potencial potente poder montanha russa montanha relevo geografia analise desenvolvimento sistema plural singular versao tigre branco cao cachorro cachorro quente seriado filmografia bebado alcool cerveja bonito talentoso ornitorinco rico pobre politica pandemia burrice milhao numero um jogo forca força regua mouse inglês portugues codigo programa linguagem programaçao traiçao merecer terminar ver morrer viver desaparecer jogar forçar cantar dançar homenagem masturbaçao celular telefone corretagem foto fotografia camera fotografar papear papo falar trote escola faculdade universidade propaganda ligar deslgar esperar pagar propagandear caucasiano negro comunidade pardo indigena asiatico pais consulado canada brasil estados unidos escocia eu mim baixo alto carregar baixar mensagem palavra india paquistao emirados arabes unidos china japao digital criptografia cripto moeda moeda dinheiro ouro prata bronze diamante dia noite tarde madrugada verdade contar mentira feiçao roubar loucura falencia pirar atuar soneto escrever livro revista historia em quadrinho maravilha mulher homem garota garoto menino menina superior inferior diversidade curso site hard drive entrada saida casamento namoro morar alma morte vida fa idolo viajar lanterna flash agua oceano marte fogo ar raio relampago trovao clima diretor roteirista desenhista streaming claridade definir incluir excluir familia pequeno grande invençao branco azul azul marinho verde claro vermelho laranja fruta geladeira comida chamada inicializaçao ano tempo tempestade ciclope texugo xicara pantera incrivel fonte marremoto moto veiculo exclamaçao vencer perder final fim começo começar queer remanescer renascimento historia conto cançao poema sal tempero temperatura moderação veneno arabe pagina sinal medo bravura tormenta tornado capitao capital caneca cone candido rodovia rodo nave navegaçao veridico coluna linha arvore Palavras possiveis do programa
  10. #include <iostream> #include <stdlib.h> #include <vector> #include <list> #include <fstream> #include <stdlib.h> #include <ctime> #include <locale> using namespace std; //Jogo da forca simples void vencer_ou_perder(int f_acertos, int f_tam, string fpalavra, list <char> fletrastentadas); void forca(string fpalavra, char fletra[1], string fsecret, int ftam,int fchances, int facertos, bool facertob); int main() { //palavra ira armazenar a palavra a ser descoberta //letras as alternativas, secreta ira conter a palavra a // medida q ela vai sendo desvendada //tam tamanho, n de chances, //char palavra[30], letra[1],secreta[30]; setlocale(LC_ALL,"Portuguese"); string palavra, secreta; char letra[1]; int tam,chances,acertos; bool acertob = false;//verifica se a letra esta na palavra ou n fstream arqpalavras; list <string> palavras_possiveis; string linhas; int p,tlista; list <string>::iterator it; int res; do{ arqpalavras.open("C:\\Users\\Iara\\Desktop\\Diego Dreossi\\CURSO DIEGO\\Palavras do jogo da forca.txt",ios::in); if(arqpalavras.is_open()){ while(getline(arqpalavras,linhas)){ palavras_possiveis.push_front(linhas); } } tlista = palavras_possiveis.size(); it = palavras_possiveis.begin(); srand(time(NULL));//Usa a hora do pc como semente para a função numero aleatorio p = rand() % tlista;//Busca numero aleatorio até certo numero if(p == 0){p = 1;} advance(it,p-1); chances = 6; tam = 0; acertob = false; acertos = 0; palavra = *it; secreta = palavra; forca(palavra, letra, secreta, tam, chances, acertos, acertob); cout<<"\n\nJogar de novo? 1 - S/ 2 - N: "; cin >> res; cin.ignore(); system("cls"); }while(res != 2); return 0; } void vencer_ou_perder(int f_acertos, int f_tam,string fpalavra, list<char>fletrastentadas){ if(f_acertos == f_tam){ cout << "voce ACERTOU!\n"; cout << "Palavra: " << fpalavra << "\n\n"; while(!fletrastentadas.empty()){ cout << fletrastentadas.front() << " "; fletrastentadas.pop_front(); } cout<<endl; }else{ cout << "voce PERDEU!\n"; cout << "Palavra: " << fpalavra << "\n\n"; while(!fletrastentadas.empty()){ cout << fletrastentadas.front() << " "; fletrastentadas.pop_front(); } cout<<endl; } system("pause"); } void forca(string fpalavra, char fletra[1], string fsecreta, int ftam, int fchances, int facertos, bool facertob){ list <char> letras_tentadas,letras_erradas; list <char> ::iterator it2,it3; int le;//letras erradas //int lt;//letras tentadas int findice = 0; while(fpalavra[findice] != '\0'){ findice++;//contador ftam++;//descobre tamanho da palavra secreta } for(findice = 0; findice < ftam; findice++){ if(fpalavra[findice] == ' '){ fsecreta[findice] == ' '; facertos++; }else fsecreta[findice] = '-';//visual do jogo da forca } while((fchances > 0)&&(facertos < ftam)){ cout << "**** JOGO DA FORCA *****" << endl<<endl<< endl; cout << "\n\nChances restantes: " << fchances << "\n\n"; cout << "Letras erradas: "; le = letras_erradas.size(); it2 = letras_erradas.begin(); if(le>0){ int y = 0; while(y < le){ advance(it2,y); cout << *it2 << " "; y++; } } cout << "\n\nPalavra secreta: "; for(findice = 0;findice < ftam;findice++){ cout << fsecreta[findice]; } cout << "\n\nDigite uma letra: "; cin >> fletra[0]; letras_tentadas.push_back(fletra[0]); cout << endl<<endl; /*lt = letras_tentadas.size(); it3 = letras_tentadas.begin();*/ for(findice = 0;findice < ftam; findice++){ if(fpalavra[findice] == fletra[0]){ facertob = true; fsecreta[findice] = fpalavra[findice]; facertos++; } } if(!facertob){ letras_erradas.push_back(fletra[0]); fchances--; } facertob = false; system("cls"); } vencer_ou_perder(facertos,ftam,fpalavra,letras_tentadas); }
  11. Bom dia, estou criando um jogo da forca em c++, e uma das funcionalidades que quero implementar é mostrar as letras digitadas erradas, eu consegui fazer isso, mas ocorreu um problema: a terceira letra errada, independente de qual ela seja , imprime um outro caractere (parece ser um coração), mas quando uma outra letra errada esta tudo certo, até o caractere anterior, que é impresso certo, e não faço ideia de qual é o problema, alguem saberia me dizer? Jogo da forca codigo.txt

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!