lograr guardar resultados en un txt bucles o for ?

Iniciado por luis456, 15 Diciembre 2012, 16:55 PM

0 Miembros y 1 Visitante están viendo este tema.

luis456

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

///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;
}
Que tu sabiduria no sea motivo de Humillacion para los demas

naderST

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.

luis456

Osea que seria aca

do{
            cout<< numeros[k]<<"  ";
            for( i = 1+k+l; i < ver-1+k+l; i++){
            cout<< numeros[i]<<"  ";

            aqui iria no ? <------------------------------------------
           
Que tu sabiduria no sea motivo de Humillacion para los demas

luis456

No lo logro he cambiado por todo el for y nada que hago de mal lo pongo a ver ?

#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;
}
Que tu sabiduria no sea motivo de Humillacion para los demas

naderST

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

luis456

Cita de: 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

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

Que tu sabiduria no sea motivo de Humillacion para los demas

flony

#6
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
error C2057: se esperaba una expresión constante
en la parte 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/
de todas formas la lógica del problema indica que deba ser desde 01 a 10?...no seria desde 00 a 09?
si un problema no tiene solucion entonces no es un problema...es algo inevitable

naderST

Cita de: 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
error C2057: se esperaba una expresión constante
en la parte 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/
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

luis456

lo que quiero guardar son " los cout los quiero !imprimir en un fichero de texto".

luis
Que tu sabiduria no sea motivo de Humillacion para los demas

leosansan

#9
Cita de: luis456 en 16 Diciembre 2012, 08:49 AM
lo que quiero guardar son " los cout los quiero !imprimir en un fichero de texto".

luis
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;

int main () {
   int total,i,j,k=0,l=0,ver=0,ver_=0,p;
   char cadena[128];
   ofstream fs("numeros.txt");
   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{
           fs<< numeros[k]<<"  ";
           cout<< numeros[k]<<"  ";
           for( i = 1+k+l; i < ver-1+k+l; i++){
               fs<< numeros[i]<<"  ";
               cout<< numeros[i]<<"  ";
           }
       fs<< numeros[ver_-1+k+l]<<"  ";
       cout<< numeros[ver_-1+k+l]<<"  ";
       if (ver_-1+k+l==total-1  ) {
           fs<< "entro  "<< endl;
           cout<< "entro  "<< endl;
           l++;p--;
           if (p<0) {
               l=0;break;
           }
           else goto inicio;
       }
       ver_++;
       fs<< endl;
       cout<< endl;
       }while (ver_+k<=total);
   }
   fs.close();
   ifstream fe("numeros.txt");
   fe.getline(cadena, 128);
  cout << cadena << endl;
   system("pause");
   return 0;
}

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.