Ir ao conteúdo
  • Cadastre-se

Teclado de t9 codigo em c++


K9xy

Posts recomendados

desculpa, o erro esta dando na função void imprime_linha, na linha onde esta definido gotoxy!

 

 

 

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <cstdlib>
#include <cmath>
#include <windows.h>
#include <conio.h>
#include <algorithm>
#define max 19
#define min 0
using namespace std;
class Elemento{
    public:
    Elemento *p1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9;
    
    vector<string> palavras;

    Elemento(){
        p1=NULL;
        p2=NULL;
        p3=NULL;
        p4=NULL;
        p5=NULL;
        p6=NULL;
        p7=NULL;
        p8=NULL;
        p9=NULL;
        
    }
};
class Arvore {
public:
  Elemento *raiz;
  int tam;
  
  Arvore() {
    raiz = new Elemento(); 
    tam = 0;
  }


void Monta_ramo(string palavra) {
    Elemento *onde = raiz;  
    for(int i=0;i<palavra.size();i++)
            {
        switch(palavra){

        case'a':
        case'b':
        case'c':
                if(onde->p2== NULL){
                   onde->p2 = new Elemento();
                   }
                   onde=onde->p2;
                   break;

        case'd':
        case'e':
        case'f':
                if(onde->p3== NULL){
                   onde->p3 = new Elemento();
                   }
                   onde=onde->p3;
                   break;
        case'g':
        case'h':
        case'i':
                if(onde->p4== NULL){
                   onde->p4 = new Elemento();
                   }
                   onde=onde->p4;
                   break;
        case'j':
        case'k':
        case'l':
                if(onde->p5== NULL){
                   onde->p5 = new Elemento();
                   }
                   onde=onde->p5;
                   break;
        case'm':
        case'n':
        case'o':
               if(onde->p6== NULL){
                  onde->p6 = new Elemento();
                  }
                  onde=onde->p6;
                  break;
        case'p':
        case'q':
        case'r':
        case's':
                if(onde->p7== NULL){
                  onde->p7 = new Elemento();
                   }
                   onde=onde->p7;
                   break;
        case't':
        case'u':
        case'v':
                if(onde->p8== NULL){
                   onde->p8 = new Elemento();
                   }
                   onde=onde->p8;
                   break;
        case'w':
        case'x':
        case'y':
        case'z':
                if(onde->p9== NULL){
                   onde->p9 = new Elemento();
                   }
                   onde=onde->p9;
                   break;
        default:
        if(onde->p1==NULL){
                           onde->p1 = new Elemento();
                           }
                           onde=onde->p1;
                           break;
        }
        onde->palavras.push_back(palavra);
        }
    }
   
void popula_arvore(){
     string palavra;
     ifstream ler;
     ler.open("termos.txt");
     if(!ler.is_open())
        {
        cout<<"Não foi possível abrir arquivo! Programa será terminado!\n";
        ler.clear(); 
        }
    while(ler >> palavra){
            Monta_ramo(palavra);
    }
    return ;
}

vector<string> ler( Elemento *proc ){
        
        vector<string> word;
        for(int i=0;i<fmin(max,proc->palavras.size());i++){
                           word.push_back(proc->palavras);
                           
                }
        return word;
        
}
void imprime_espaco(long int e,int x,int y,bool a){
    for(long int i=0;i<e;i++){
        cout<<" ";
    }
}

 void imprime_linha(long int l,int x,int y,bool a){
    for(long int i=0;i<l;i++){
        if(a==true){
          gotoxy(x+i,y);
          cout <<"_";
    }
    }
    }
void imprime_coluna(int c,int x,int y,bool a){
    for(int i=0;i<c;i++){
        if(a==true){
        gotoxy(x,y); y++;}
        cout<<"|";
    }
    return;
}

void tela(vector<string> palavra,int x,string texto){
    system("cls");
    system ("color 70");
    textcolor(0);
    textbackground(10);
    imprime_espaco(38,0,0,false);
    cout<<"T9";
    imprime_espaco(40,0,0,false);
    imprime_linha(80,0,0,false);
    textbackground(7);
    textcolor(0);
    cout<<"        | Teclado |\n";
    cout<<"  _______________________\n";
    cout<<" |       |       |       |\n";
    cout<<" |   1   |   2   |   3   |\n";
    cout<<" |_______|_______|_______|\n";
    cout<<" |       |       |       |\n";
    cout<<" |       | a b c | d e f |\n";
    cout<<" |_______|_______|_______|\n";
    cout<<" |       |       |       |\n";
    cout<<" |   4   |   5   |   6   |\n";
    cout<<" |_______|_______|_______|\n";
    cout<<" |       |       |       |\n";
    cout<<" | g h i | j k l | m n o |\n";
    cout<<" |_______|_______|_______|\n";
    cout<<" |       |       |       |\n";
    cout<<" |   7   |   8   |   9   |\n";
    cout<<" |_______|_______|_______|\n";
    cout<<" |       |       |       |\n";
    cout<<" |p q r s| t u v |w x y z|\n";
    cout<<" |_______|_______|_______|\n";
    imprime_coluna(21,27,3,true);    
    imprime_coluna(21,54,3,true);
    imprime_linha(81,0,23,true);
    if(palavra.size()>0){
            gotoxy(55,3);
            cout<<"PALAVRA:";
            for(int i=0;i<fmin(max,palavra.size());i++){
            gotoxy(55,i+4);
               cout<<"[";
            }
            for(int i=0;i<fmin(max,palavra.size());i++){
            gotoxy(57,i+4);
            cout<<"]"<<palavra;}
           gotoxy(56,x-5);
           cout<<" ";
           gotoxy(56,x+5);
           cout<<" ";
           gotoxy(56,x+4);
           cout<<"*";
           cout<<"\n";
           if(palavra.size()<max){
            gotoxy(1,25);
            textcolor(12);
            cout<<"\n\n           Alerta: Numero de palavras na Base esta chegando no limite" <<endl;
            textcolor(0);
             }
}
    
    gotoxy(28,3);
    cout<<"Modo de usar:";
    gotoxy(28,5);
    cout<<"-> Digite '0' para confir-";
    gotoxy(28,6);
    cout<<"mar a palavra.";
    gotoxy(28,8);
    cout<<"-> Os carateres '+' e '-'";
    gotoxy(28,9);
    cout<<"selecionam a palavra.";
    gotoxy(28,11);
    cout<<"-> Digite 's' para sair.";
    gotoxy(28,13);
    cout<<"-> Digite 'c' para  cance-";
    gotoxy(28,14);
    cout<<"lar.";
    
}

};
int main(){
    Arvore a;
    char tecla;
    string texto;
    vector <string> palavra;
    int x=min,MAX;
    bool erro;
    
    Elemento *no;
    a.popula_arvore();
    system("mode con:cols=80 lines=28");
    system ("title TECLADO T9");
    no=a.raiz;
      while(tecla!='s')
    {
    //if (palavra.size()>0)
    a.tela(palavra,x,texto);
    gotoxy(1,24);
    cout<<"Texto:"<<texto;
    gotoxy(1,25);
    cout<<"Tecla:";
    tecla=getch();
         switch(tecla){
            palavra.clear();
           case'2':
                   if(no->p2!=NULL){
                    no = no->p2;
                    palavra=a.ler(no);
                    MAX=palavra.size();
                    }
          break;
           
           case '3':
                if(no->p3!=NULL){
                    no = no->p3;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           
           case'4':
                   if(no->p4!=NULL){
                    no = no->p4;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           
           case'5':
                if(no->p5!=NULL){
                    no = no->p5;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           
           case'6':
                if(no->p6!=NULL){
                    no = no->p6;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           
           case'7':
                if(no->p7!=NULL){
                    no = no->p7;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           
           case'8':
                if(no->p8!=NULL){
                    no = no->p8;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           
           case'9':
                if(no->p9!=NULL){
                    no = no->p9;
                    palavra=a.ler(no);
                    MAX=palavra.size();
            }
           break;
           case'0':
                texto=texto+" "+palavra[x];
                palavra.clear();
                no=a.raiz;
            
           break;
           case's':
                
                    system("cls");
                       cout<<"SAIR!!" <<endl;
                       erro=true;
           break;
           case'c':
                
                    system("cls");
                       palavra.clear();
                       no=a.raiz;
           break;
           default:
                  if((tecla=='-')&&(x>min))x--;
         else  if((tecla=='+')&&(x<fmin(max,MAX-1)))x++;
         else {
             
             cout<<"ERRO!!" <<endl;
             Sleep(1000);
         }
            break; 
            
       }
       
    }
    gotoxy(7,24);
    cout<<"\n\n";
    system("PAUSE");
    return EXIT_SUCCESS;
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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!