Test Foro de elhacker.net SMF 2.1

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:
#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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>

using namespace std;
int main(){
 ifstream archivo2;

 archivo2.open("Archivo2.txt");
 
  int max2 = 0; int var2 = 0;

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

 while(!archivo2.eof()){
   archivo2>>var2;
   if(var2 >= max2){
     max2 = var2;
   }
 }
 cout << "El valor maximo es: " << max2 << endl;
 system ("pause");
}

Archivo2.txt
Código (PoC) [Seleccionar]
7

8

9

10

20

12

Salida:
Código (PoC) [Seleccionar]
Se encontrara el numero mas grande de la lista
El valor maximo es: 20
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 (cpp,8) [Seleccionar]
#include <iostream>
#include <fstream>

using namespace std;
int main(){
 ifstream archivo2;

 archivo2.open("Archivo2.txt");

 int max2 = 0; int var2 = 0;

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

 while(!archivo2.eof()){
   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: 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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>

using namespace std;
int main(){
 ifstream archivo2;

 archivo2.open("Archivo2.txt");
 
 int min1 = 0; int var1 = 0;

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

 archivo2>>min1;
 while(!archivo2.eof()){
   archivo2>>var1;
   if(var1 < min1){
     min1 = var1;
   }
 }
 
 cout << "El valor maximo es: " << min1 << endl;
 system ("pause");
}

Archivo2.txt
Código (PoC) [Seleccionar]
7

8

9

1

10

20

12

Resultado:
Código (PoC) [Seleccionar]
Se encontrara el numero mas grande de la lista
El valor maximo es: 1
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

#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 (cpp) [Seleccionar]
  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;

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.