• Sábado 9 de Noviembre de 2024, 03:32

Autor Tema:  porque se cuelga?¿ se sale de algun vector?¿  (Leído 820 veces)

meana

  • Miembro activo
  • **
  • Mensajes: 36
    • Ver Perfil
porque se cuelga?¿ se sale de algun vector?¿
« en: Sábado 12 de Diciembre de 2009, 23:48 »
0
Código: C++
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <fstream>
  4. #include <vector>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. string conversion_caracter (vector<int> &v2,  int &i){
  10.     string TC;
  11.         if(v2[i]==2){
  12.             TC="abc";
  13.         }
  14.         else if(v2[i]==3){
  15.            TC="def";
  16.         }
  17.         else if(v2[i]==4){
  18.            TC="ghi";
  19.         }
  20.         else if(v2[i]==5){
  21.            TC="jkl";
  22.         }
  23.         else if(v2[i]==6){
  24.            TC="mno";
  25.         }
  26.         else if(v2[i]==7){
  27.            TC="pqrs";
  28.         }
  29.         else if(v2[i]==8){
  30.            TC="tuv";
  31.         }        
  32.         else if(v2[i]==9){
  33.            TC="wxyz";
  34.         }  
  35.    
  36.     return TC;
  37. }
  38. void eliminar (vector <string> &v3,int &p){
  39.   for (int i=p;i<v3.size()-1;i++)
  40.     v3[i]=v3[i+1];
  41.     v3.pop_back();
  42. }
  43. vector<string> funcion_iterativa (vector<string> &v, vector<int> &v1){
  44.     vector<string> CP(v.size());
  45.     for(int i=0; i<v.size(); i++){
  46.             CP[i]=v[i];
  47.         }
  48.     for(int i=0; i<v1.size(); i++){
  49.         string aux=conversion_caracter(v1,i);
  50.         for(int j=0; j<CP.size(); j++){
  51.             for(int k=0; k<CP[j].size();k++){
  52.                 for(int l=0; l<aux.size(); l++){
  53.                     if(CP[j][k]==aux[l])break;
  54.                     else if(l==aux.size()-1){
  55.                         eliminar(CP,j);
  56.                     }
  57.                 }
  58.             }
  59.         }
  60.     }
  61.     return CP;
  62. }
  63. int main (int argc, char* argv[ ]){
  64.     ifstream f1 (argv[1]);
  65.     ofstream f2 (argv[2]);
  66.     int n;
  67.     f1 >> n;
  68.     vector<int>CD(n);
  69.     for (int i=0; i<n; i++){
  70.         f1 >> CD[i];
  71.     }
  72.     string palabra;
  73.     vector<string>diccionario;
  74.     f1 >> palabra;
  75.     while (!f1.eof()){
  76.         diccionario.push_back(palabra);
  77.         f1 >> palabra;
  78.     }
  79.     for(int i=0; i<funcion_iterativa(diccionario, CD).size(); i++){
  80.         f2 << funcion_iterativa(diccionario, CD)[i] << endl;
  81.     }
  82.     f1.close();
  83.     f2.close();
  84.     return 0;
  85. }
  86.  
  87.  
llevo toda la tarde con el programa y no consigo que funcione, se supone que al programa hace lo siguiente:
le paso un fichero con con unos numeros y unas palabras, el primer numero se corresponde a la cantidad de numeros que te dan, y los siguientes numeros es como si fuesen las teclas del telefono movil del 2 al 9, con el programa lo que debo hacer es que se copien en el segundo fichero aquellas palabras que se puedan formar con los digitos que te dan de inicio y en ese orden por ejemplo si te dan un fichero que contiene
4
4 6 5 2
manuel
inka
sistema
operativo
hola
nika
boligrafo
hotmail
pero

el fichero de salida deberia contener las palabras inka y hola.

GRACIAS