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");
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.txt
7
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 . . .
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...
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");
}
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?
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.txt
7
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 . . .
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?
jajaja mostrad el codigo, y creo que se podria reducir a 2 bucles.
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");
}
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.
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.