Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: luis456 en 15 Diciembre 2012, 16:55 pm



Título: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 15 Diciembre 2012, 16:55 pm
Tengo este codigo que me combina los numeros que yo pida (gracias a leo :) ) que me  ayudo a hacerlo, bien estoy tratando de que estos resultados me los guarde en un txt pero estoy trabado logro hacer el archivo pero solo me guarda lo que esta en ese momento ? pongo el codigo a ver que hago o que no hago

Código:
///programa de combinaciones numericas
#include <iostream>
#include <cstdlib>
#include <stdlib.h>//Libreria para usar la funcion al final del codigo system();
#include <fstream>
using namespace std;

int main () {
    int total,i,j,k=0,l=0,ver=0,ver_=0,p;
    cout<<"Cuantos numeros desea ingresar?: ";
    cin>>total;
    int numeros[total],n_par[total],n_impar[total];
    cout<<"Cuantos numeros desea ver cada vez?: ";
    cin>>ver;
    int num[ver];
    ver_=ver;
    for( i = 0; i < total; i++){
        cout<<"Ingrese el "<<i+1<<" numero: ";
        cin >> numeros[i];
        for( j = i-1; j >=0 ; j--){
            if(numeros[i] == numeros[j]){
                cout<<"El numero esta repetido ingrese otro\n";
                i--;
                break;
               
            }
        }
    }
   
    p=total-ver;
    for( k = 0; k <=total-ver; k++){
    l=0;
    inicio:
        ver_=ver;
        do{
            cout<< numeros[k]<<"  ";
            for( i = 1+k+l; i < ver-1+k+l; i++){
            cout<< numeros[i]<<"  ";
        }
        cout<< numeros[ver_-1+k+l]<<"  ";
        if (ver_-1+k+l==total-1  ) {
            cout<< "entro  "<< endl;;
            l++;p--;
            if (p<0) {
                l=0;break;
            }
            else goto inicio;
 
        }
        ver_++;system("pause");
        cout<< endl;
        }while (ver_+k<=total);
    }
     //aca estoy tratando de guadar los resultados
     string fichero ("lista.txt");//---ok
     ofstream f_lista (fichero.c_str()); //--ok
     if (!f_lista) { //---ok
     cout << "El fichero " << fichero << " no existe."; //--ok
     exit (0);//----ok
   }
    ///ya aca no se como hacerle para ir guardando cada uno de los resultados como me los muestra la consola
    f_lista <<ver_<< endl;
    //f_lista <<numeros[i] << endl;
   
    /////
    system("pause");
    return 0;
}


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: naderST en 15 Diciembre 2012, 17:05 pm
Así como lo vas imprimiendo en consola, lo imprimes en el archivo, es decir, dentro del mismo for ya que la consola la puedes ver como un archivo.


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 15 Diciembre 2012, 17:33 pm
Osea que seria aca

Código:
do{
            cout<< numeros[k]<<"  ";
            for( i = 1+k+l; i < ver-1+k+l; i++){
            cout<< numeros[i]<<"  ";
            aqui iria no ? <------------------------------------------
           


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 15 Diciembre 2012, 18:55 pm
No lo logro he cambiado por todo el for y nada que hago de mal lo pongo a ver ?

Código:
#include <iostream>
#include <cstdlib>
#include <stdlib.h>//Libreria para usar la funcion al final del codigo system();
#include <fstream>
using namespace std;

int main () {
    int total,i,j,k=0,l=0,ver=0,ver_=0,p;
    cout<<"Cuantos numeros desea ingresar?: ";
    cin>>total;
    int numeros[total],n_par[total],n_impar[total];
    cout<<"Cuantos numeros desea ver cada vez?: ";
    cin>>ver;
    int num[ver];
    ver_=ver;
    ofstream archivo("numeros.txt");//////////////////////////creamos el archivo
    for( i = 0; i < total; i++){
        cout<<"Ingrese el "<<i+1<<" numero: ";
        cin >> numeros[i];
        for( j = i-1; j >=0 ; j--){
            if(numeros[i] == numeros[j]){
                cout<<"El numero esta repetido ingrese otro\n";
               
                i--;
                break;
            }
        }
    }
    p=total-ver;
    for( k = 0; k <=total-ver; k++){
    l=0;
    inicio:
        ver_=ver;
        do{
            cout<< numeros[k]<<"  ";
            for( i = 1+k+l; i < ver-1+k+l; i++){
            cout<< numeros[i]<<"  ";
            archivo<<"Numero: "<<numeros[i] <<endl; /////no doy
           
           
        }
        cout<< numeros[ver_-1+k+l]<<"  ";
       
        if (ver_-1+k+l==total-1  ) {
            cout<< "entro  "<< endl;
             
            l++;p--;
            if (p<0) {
                l=0;break;
            }
            else goto inicio;
 
        }
        ver_++;system("pause");
         
       
        cout<< endl;
        }while (ver_+k<=total);
    }
    archivo.close();//Cerramos el archivo
    system("pause");
    return 0;
}


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: naderST en 15 Diciembre 2012, 19:44 pm
Explícame un poco que quieres hacer o que se supone que debería hacer tu código porque no lo estoy siguiendo del todo


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 15 Diciembre 2012, 20:55 pm
Explícame un poco que quieres hacer o que se supone que debería hacer tu código porque no lo estoy siguiendo del todo

Bien si ejecutas el código veras que hace combinaciones numéricas según le pidas hace combinaciones de los numeros que introduzcas y lo muestra en resultados que le pidas ejemplo : introduces 10 numeros desde 01 hasta el 10 este te los combina de cuatro en cuatro o segun le pidas como lo muestre

ejemplo
1 2 3 4 5 6 7 8 10
10 numeros que introduces y le pides que te los de en resultados de cuatro

1 2 3 4
1 2 3 5
1 2 3 6
1 2 3 7
1 2 3 8
1 2 3 9
despues cambia a:

1 2 3 10
1 3 4 5
1 3 4 6
1 3 4 7
1 3 4 8
1 3 4 9

y asi combina hasta que se acaba el ciclo


saludos luis



Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: flony en 15 Diciembre 2012, 21:39 pm
lo meti al visual c++ lo compile y me fije los errores, no soy muy bueno apenas aprendiz pero veo que los errores indican que a las matrices le  tenes que meter como dato una constante
Código:
error C2057: se esperaba una expresión constante
en la parte
Código:
int numeros[total],n_par[total],n_impar[total]
una solucion tener matrices dinamicas, aca pongo una pagina porque no llegue tan lejos todavia :) http://www.alanchavez.com/matrices-dinamicas-en-c-desmitificadas/ (http://www.alanchavez.com/matrices-dinamicas-en-c-desmitificadas/)
de todas formas la lógica del problema indica que deba ser desde 01 a 10?...no seria desde 00 a 09?


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: naderST en 16 Diciembre 2012, 06:20 am
lo meti al visual c++ lo compile y me fije los errores, no soy muy bueno apenas aprendiz pero veo que los errores indican que a las matrices le  tenes que meter como dato una constante
Código:
error C2057: se esperaba una expresión constante
en la parte
Código:
int numeros[total],n_par[total],n_impar[total]
una solucion tener matrices dinamicas, aca pongo una pagina porque no llegue tan lejos todavia :) http://www.alanchavez.com/matrices-dinamicas-en-c-desmitificadas/ (http://www.alanchavez.com/matrices-dinamicas-en-c-desmitificadas/)
de todas formas la lógica del problema indica que deba ser desde 01 a 10?...no seria desde 00 a 09?

El código compila, en dado casos los errores son lógicos. Ese error que te arroja el compilador de vc++ sucede cuando tratas de declarar el arreglo global de un tamaño variable, si la declaración del arreglo se encuentra dentro de una función, como en este caso, debería compilar.

Error C2057
http://msdn.microsoft.com/en-us/library/eff825eh(v=vs.71).aspx


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 16 Diciembre 2012, 08:49 am
lo que quiero guardar son " los cout los quiero !imprimir en un fichero de texto".

luis


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: leosansan en 16 Diciembre 2012, 14:42 pm
lo que quiero guardar son " los cout los quiero !imprimir en un fichero de texto".

luis
Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <fstream>
  4. using namespace std;
  5.  
  6. int main () {
  7.    int total,i,j,k=0,l=0,ver=0,ver_=0,p;
  8.    char cadena[128];
  9.    ofstream fs("numeros.txt");
  10.    cout<<"Cuantos numeros desea ingresar?: ";
  11.    cin>>total;
  12.    int numeros[total],n_par[total],n_impar[total];
  13.    cout<<"Cuantos numeros desea ver cada vez?: ";
  14.    cin>>ver;
  15.    int num[ver];
  16.    ver_=ver;
  17.    for( i = 0; i < total; i++){
  18.        cout<<"Ingrese el "<<i+1<<" numero: ";
  19.        cin >> numeros[i];
  20.        for( j = i-1; j >=0 ; j--){
  21.            if(numeros[i] == numeros[j]){
  22.                cout<<"El numero esta repetido ingrese otro\n";
  23.                i--;
  24.                break;
  25.            }
  26.        }
  27.    }
  28.    p=total-ver;
  29.    for( k = 0; k <=total-ver; k++){
  30.    l=0;
  31.    inicio:
  32.        ver_=ver;
  33.        do{
  34.            fs<< numeros[k]<<"  ";
  35.            cout<< numeros[k]<<"  ";
  36.            for( i = 1+k+l; i < ver-1+k+l; i++){
  37.                fs<< numeros[i]<<"  ";
  38.                cout<< numeros[i]<<"  ";
  39.            }
  40.        fs<< numeros[ver_-1+k+l]<<"  ";
  41.        cout<< numeros[ver_-1+k+l]<<"  ";
  42.        if (ver_-1+k+l==total-1  ) {
  43.            fs<< "entro  "<< endl;
  44.            cout<< "entro  "<< endl;
  45.            l++;p--;
  46.            if (p<0) {
  47.                l=0;break;
  48.            }
  49.            else goto inicio;
  50.        }
  51.        ver_++;
  52.        fs<< endl;
  53.        cout<< endl;
  54.        }while (ver_+k<=total);
  55.    }
  56.    fs.close();
  57.    ifstream fe("numeros.txt");
  58.    fe.getline(cadena, 128);
  59.   cout << cadena << endl;
  60.    system("pause");
  61.    return 0;
  62. }
Saluditos!.
P.D: Recuerda que sólo va para combinaciones de n elemnetos tomados de tres en tres los otros casos están pendientes de implementar.


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 16 Diciembre 2012, 19:16 pm
Gracias leo lo he probado y me da los resultados de esta manera
Numero: 13
Numero: 14
Numero: 13
Numero: 14
Numero: 13
Numero: 14
Numero: 13
Numero: 14
Numero: 13
Numero: 14
Numero: 13
Numero: 14
Numero: 13
Numero: 14
Numero: 14
Numero: 15
Numero: 14
Numero: 15
Numero: 14
Numero: 15
Numero: 14
Numero: 15
Numero: 14
Numero: 15
Numero: 14
Numero: 15
Numero: 15
Numero: 25
Numero: 15
Numero: 25
Numero: 15
Numero: 25 <---corto aca por lo largo

Introduzco 10 numeros y pido que se vena en cuatro los  resultados lo  que se vería a si, que es como lo muestra la consola

1 2 3 4
1 2 3 5
1 2 3 6

lo he probado pero no los muestra de esa forma a menos que haya yo echo algo mal jeje


Luis








Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: leosansan en 16 Diciembre 2012, 22:11 pm

Saluditos!.
Citar

P.D: Recuerda que sólo va para combinaciones de n elementos tomados de tres en tres los otros casos están pendientes de implementar.




Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 17 Diciembre 2012, 21:09 pm
Bueno esto no serviria para hacer lo que busco ?

Código:
	cout<<"\n\nRESULTADOS COMBINADOS\n";
archivo<<"\nRESULTADOS COMBINADOS\n";//Guardamos en el archivo
for(int i = 0, j = contador - 5; j >= 0; i++, j--){
cout<<resultados[i]<<" "<<resultados[i + 2]<<" "<<resultados[i + 4]<<" ";//Muestro los 3 numeros del lado izquierdo
archivo<<resultados[i]<<" "<<resultados[i + 2]<<" "<<resultados[i + 4]<<" ";//Guardo en el archivo los 3 numeros del lado izquierdo
cout<<resultados[j]<<" "<<resultados[j + 2]<<" "<<resultados[j + 4];//Muestro los 3 numeros del lado derecho
archivo<<resultados[j]<<" "<<resultados[j + 2]<<" "<<resultados[j + 4];//Guardo en el archivo los 3 numeros del lado derecho
cout<<endl;//Bajamos una linea
archivo<<endl;//Guardamos una bajada de linea en el archivo
}
archivo.close();//Cerramos el archivo
system("pause");//Damos una pausa antes de finalizar el programa
return 0;


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: leosansan en 17 Diciembre 2012, 21:36 pm
Bueno esto no serviria para hacer lo que busco ?
Citar
Si lo que buscas es guardar las combinaciones en el fichero "numeros.txt" el código que te puse en el anterior post -un poco más arriba de este- lo hace. El fichero de txt lo encuentras en la carpeta donde tengas guardado el programa.
Saluditos!.


Título: Re: lograr guardar resultados en un txt bucles o for ?
Publicado por: luis456 en 18 Diciembre 2012, 06:10 am



No se en que andaría pensando :)  listo ya funciona como quería " Gracias Leo "
doy este tema acabado....   a por otro jejeje.......

Gracias también a los que participaron

Luis