Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: miketru en 11 Septiembre 2010, 02:34 am



Título: Problema con loop while
Publicado por: miketru en 11 Septiembre 2010, 02:34 am
Ok, tengo un codigo, necesito encontrar los numeros mas grandes y mas chicos de un 2 .txt (un numero por linea y un espacio entre cada linea) ej:
1

2

3

Asi estaría el txt, el problema es que en mi codigo siempre muestra el ultimo numero no el mas grande... alguien me puede ayudar?

Aqui está el codigo:
Código:
#include "stdafx.h"
#include <fstream>
#include <iostream>

using namespace System;
using namespace std;

int main(){

ifstream archivo1;
ifstream archivo2;

archivo1.open("texto1.txt");
archivo2.open("texto2.txt");

int max1, max2, min1, min2, var1, var2, n1;

cout << "Se encontrara el numero mas grande de la lista" << endl;

while(!archivo1.eof()){
archivo1>>var1;
if(var1>max1);
max1=n1;}
cout << "El valor maximo es: " << max1 << endl;

while(archivo2>>var1){
archivo2>>var2;
if(var2>max2);
max2=var2;}
cout << "El valor maximo es: " << max2<< endl;


system ("PAUSE");



Título: Re: Problema con loop while
Publicado por: Shell Root en 11 Septiembre 2010, 03:19 am
No se nada de C++, pero por lo menos lo intente... :p
Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. int main(){
  6.  ifstream archivo2;
  7.  
  8.  archivo2.open("Archivo2.txt");
  9.  
  10.  int max2 = 0; int var2 = 0;
  11.  
  12.  cout << "Se encontrara el numero mas grande de la lista" << endl;
  13.  
  14.  while(!archivo2.eof()){
  15.    archivo2>>var2;
  16.    if(var2 >= max2){
  17.      max2 = var2;
  18.    }
  19.  }
  20.  cout << "El valor maximo es: " << max2 << endl;
  21.  system ("pause");
  22. }
Archivo2.txt
Código
  1. 7
  2.  
  3. 8
  4.  
  5. 9
  6.  
  7. 10
  8.  
  9. 20
  10.  
  11. 12
Salida:
Código
  1. Se encontrara el numero mas grande de la lista
  2. El valor maximo es: 20
  3. Presione una tecla para continuar . . .


Título: Re: Problema con loop while
Publicado por: miketru en 11 Septiembre 2010, 03:42 am
Copie tu código en el Vc++ y le agregue #include stdafx.h que es la que te pide a fuerza... y lo ejecuto y se queda en el primer cout... y ahí se atora... y si dices que a ti si te funcionó... entonces está haciendo algo mal el programa? :S porque según yo, mi código también está bien...


Título: Re: Problema con loop while
Publicado por: Shell Root en 11 Septiembre 2010, 03:55 am
mmm fijate bien en la linea, si es el nombre del archivo?
Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. int main(){
  6.  ifstream archivo2;
  7.  
  8.  archivo2.open("Archivo2.txt");
  9.  
  10.  int max2 = 0; int var2 = 0;
  11.  
  12.  cout << "Se encontrara el numero mas grande de la lista" << endl;
  13.  
  14.  while(!archivo2.eof()){
  15.    archivo2>>var2;
  16.    if(var2 >= max2){
  17.      max2 = var2;
  18.    }
  19.  }
  20.  cout << "El valor maximo es: " << max2 << endl;
  21.  system ("pause");
  22. }


Título: Re: Problema con loop while
Publicado por: miketru en 11 Septiembre 2010, 04:13 am
No me habia dado cuenta de que no pusiste el mismo nombre que yo. Gracias.

Y una ultima preugnta, para obtener el numero mas chico, siempre me da cero sabes porque?


Título: Re: Problema con loop while
Publicado por: Shell Root en 11 Septiembre 2010, 04:43 am
Asi,
Código
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. int main(){
  6.  ifstream archivo2;
  7.  
  8.  archivo2.open("Archivo2.txt");
  9.  
  10.  int min1 = 0; int var1 = 0;
  11.  
  12.  cout << "Se encontrara el numero mas grande de la lista" << endl;
  13.  
  14.  archivo2>>min1;
  15.  while(!archivo2.eof()){
  16.    archivo2>>var1;
  17.    if(var1 < min1){
  18.      min1 = var1;
  19.    }
  20.  }
  21.  
  22.  cout << "El valor maximo es: " << min1 << endl;
  23.  system ("pause");
  24. }
Archivo2.txt
Código
  1. 7
  2.  
  3. 8
  4.  
  5. 9
  6.  
  7. 1
  8.  
  9. 10
  10.  
  11. 20
  12.  
  13. 12
Resultado:
Código
  1. Se encontrara el numero mas grande de la lista
  2. El valor maximo es: 1
  3. Presione una tecla para continuar . . .


Título: Re: Problema con loop while
Publicado por: miketru en 11 Septiembre 2010, 05:16 am
Ya vi el problema. es que tengo 4 whiles... y siempre los ultimos 2 me marcan 0... pero por separado los 4 funcionan... saben porque es esto?


Título: Re: Problema con loop while
Publicado por: Shell Root en 11 Septiembre 2010, 05:19 am
jajaja mostrad el codigo, y creo que se podria reducir a 2 bucles.


Título: Re: Problema con loop while
Publicado por: miketru en 11 Septiembre 2010, 05:20 am
Ya decía yo que lo estaba haciendo bien ¬¬ jajajaja

Código:
#include "stdafx.h"
#include <iostream>
#include <fstream>
 
using namespace std;
int main(){
  ifstream archivo2;
  ifstream archivo1;

  archivo2.open("texto2.txt");
  archivo1.open("texto1.txt");
 
  int min2 = 0; int var2 = 0;

 
  archivo2>>min2;
  while(!archivo2.eof()){
    archivo2>>var2;
    if(var2 < min2){
      min2 = var2;
    }
  }
 


   int min1 = 0; int var1 = 0;
 
  
 
  archivo1>>min1;
  while(!archivo1.eof()){
    archivo1>>var1;
    if(var1 < min1){
      min1 = var1;
    }
  }
 

  if(min1<min2)
 cout << "El numero mas chico de los dos archivos es: " << min1 << endl;
  else
 cout << "El numero mas chico de los dos archivos es: " << min2 << endl;




  int max2 = 0; int var3 = 0;
   while(!archivo2.eof()){
    archivo2>>var3;
    if(var3 >= max2){
      max2 = var3;
    }
  }
  
  int max1 = 0; int var4 = 0;

   while(!archivo1.eof()){
    archivo1>>var4;
    if(var4 >= max1){
      max1 = var4;
    }
  }

   if(max1>max2)
 cout << "El numero mas grande de los dos archivos es: " << max1 << endl;
  else
 cout << "El numero mas grande de los dos archivos es: " << max2 << endl;

 
 
  system ("pause");
}


Título: Re: Problema con loop while
Publicado por: Shell Root en 11 Septiembre 2010, 05:29 am
Ahora no tengo cabeza para pensar en como reducir los bucles, pero, puedo decirte esto, estas usando mas variables de las que necesitas. Por ejemplo,
Código
  1.  if(min1<min2)
  2.      cout << "El numero mas chico de los dos archivos es: " << min1 << endl;
  3.  else
  4.      cout << "El numero mas chico de los dos archivos es: " << min2 << endl;
Podrias usar la misma variable para los 2 archivos. Y en este caso, que pasaria si las variables fueran iguales?

Ponedle nombres nemotecnicos a las variables, porque asi como las tienes, es dificil de interpretar a cual bloque de codigo pertenece.


Título: Re: Problema con loop while
Publicado por: miketru en 11 Septiembre 2010, 05:41 am
Ya quedó, en sí todo el código estaba bien, pero no sabía que no se podían poner tantos bucles. Muchas gracias por la ayuda. De verdad.