Autor
|
Tema: Problema con loop while (Leído 6,346 veces)
|
miketru
Desconectado
Mensajes: 235
|
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");
|
|
|
En línea
|
|
|
|
Shell Root
|
No se nada de C++, pero por lo menos lo intente... :p #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.txt7 8 9 10 20 12
Salida:Se encontrara el numero mas grande de la lista El valor maximo es: 20 Presione una tecla para continuar . . .
|
|
« Última modificación: 11 Septiembre 2010, 03:23 am por Shell Root »
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
miketru
Desconectado
Mensajes: 235
|
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...
|
|
|
En línea
|
|
|
|
Shell Root
|
mmm fijate bien en la linea, si es el nombre del archivo? #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"); }
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
miketru
Desconectado
Mensajes: 235
|
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?
|
|
|
En línea
|
|
|
|
Shell Root
|
Asi, #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.txt7 8 9 1 10 20 12
Resultado:Se encontrara el numero mas grande de la lista El valor maximo es: 1 Presione una tecla para continuar . . .
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
miketru
Desconectado
Mensajes: 235
|
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?
|
|
|
En línea
|
|
|
|
Shell Root
|
jajaja mostrad el codigo, y creo que se podria reducir a 2 bucles.
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
miketru
Desconectado
Mensajes: 235
|
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"); }
|
|
|
En línea
|
|
|
|
Shell Root
|
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, 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.
|
|
|
En línea
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
modprobe loop en Fedora7
GNU/Linux
|
liveya1234
|
0
|
2,000
|
18 Marzo 2011, 08:23 am
por liveya1234
|
|
|
Ayuda con For Loop y un TextBox
.NET (C#, VB.NET, ASP)
|
GonzaFz
|
7
|
4,755
|
24 Mayo 2012, 23:52 pm
por $Edu$
|
|
|
Problema con loop
Programación C/C++
|
jaxoR
|
7
|
3,581
|
2 Marzo 2014, 21:30 pm
por jaxoR
|
|
|
[Resuelto] Problema con while (Loop)
Programación C/C++
|
jaxoR
|
7
|
3,360
|
28 Abril 2014, 03:27 am
por jaxoR
|
|
|
problema con el do while loop
Programación C/C++
|
josephb401
|
3
|
2,121
|
4 Abril 2016, 19:03 pm
por crack81
|
|