Seria mejor que usen las librerias estandar de C++
Esta misma pregunta calcada la pregunto en este post
y yo la respondi
Disculpen a los admin, si hago Reanswer, al repost.
pero es Inevitable.

kike si te interesa
Originalmente publicado por
kike5841
Hola panitas, soy novato en el foro y me gustaria con alguien que me ayudara en unos problemitas de c++, veo que tienen mucha experiencia pues otros ejercicios en los que han pedido ayuda los corro en el programa y ejecuta muy bien, les agradeceria mucho su colaboracion.
Estos son los problemas:
Plantear la solución algorítmica y en Lenguaje C ++ a los siguientes problemas:
1. Leer dos números y conocer cual es el mayor
2. Solicitar una cantidad determinada de números, leerlos y mostrar su promedio
3. Crear un vector de 20 posiciones, llenarlos de números y mostrarlos
del último al primero
4. Implementar un algoritmo que tome el vector anteriormente creado y
lo invierta.
Muchachos creo que soy muy malo para programacion y el que va a pagar los platos rotos va a ser mi pc que esta apunto de ser estrellado contra la pared..
..... Osea yo leo estos problemas, y pienso que o es la primera clase o la segunda clase.
Yo no les diria que se desesperen, porque yo no aprendi en un dia, Kryptonyte tampoco seguramente, y dudo mucho que algun programador, viera la luz en el primer dia.
El chiste de estos algoritmos, si uno se da cuenta no tiene utilidad alguna, pero su simpleza, es la guia perfecta para "empesar" a "razonar" como es la logica algoritmica.
La verdad sineceramente, que lenguaje choto que eligio tu profesor para arrancar, porque para arrancar, yo JAMAS usaria C++, con muuuuuucha cautela usaria C.
para mi Javascript, es lo mejor para mostrarle los primeros 10 algoritmos a los novatos.
En fin.
Yo el agoritmo en codigo lo voy a hacer, todo bien entre nosotros.Ahora esto te lo digo de corazon, no copies y pegues y entres al profesor y te quedes satisfecho, esto va a ser tu herramienta para el pan de cada dia, si no la sabes usar, dudo mucho que puedas comer, menos que menos tratar de comprarte un auto, ni hablar de una casa.
Por ellos recomiendo lo siguiente, copialo, compilalo, entregalo, Pero trata de razonarlo, fijate en que tenes dudas, que es lo que no parece "claro", y plantealo a tu profesor o en este foro o mandame un PM.
Bueno comienzo
Antes que nada, aclaro que yo use Borland C++: Te lo podes bajar desde la pagina del autor
pero es el Borland Builder 5 el que te podes bajar, es trial version. Puesto que no es gratuito.
Sin embargo el COMPILADOR (no el BUILDER ) , El compilador es gratuito y de distribucion gratiuita, por una cuestion de licencias, asi que aca tenes.
http://www.megaupload.com/?d=CAMUS1UW
El Builder, no te lo puedo pasar, puesto que como no es gratuito, compartilo seria violar una de las normas del foro.Mas halla de que el builder es muy util, para estos programas que vamos a hacer, es como tratar de usar una Escabadora Mecanica, para hacer un pozo de 5 cm
No te preocupes por el compilador, que es totalmente gratuito. esta bajo la licencia de GNU, asi que no vas a tener problemas
1)Leer dos números y conocer cual es el mayor
Primero, para conocer "cual es el mayor", lo que vamos a hacer es un "PROCESO"
Todo proceso, necesita DATOS, para PROCESARLOS, cuando tenemos un proceso, necesitamos como REGLA INVIOLABLE que tengamos Cuando Menos
Entrada de datos, los libros tambien mencionan que debe existir obligatoriamente, tambien una
Salida, aunque yo podria discutir eso, pero tomemos la definicion de los libros.
ahora para realizar procesos sabemos que debemos tener una entrada y salida de datos.
Los datos que vamos a tener de entrada y fijos son 2 Numeros, los cuales los ingreasa el usuario
La "COMPARACION" sera la Homologacion [Es decir el proceso ] de los 2 datos esos y la Salida sera el MAYOR de ambos.
hasta ahi bien.
Como C, ni C++, tiene Integrados, comandos que me ayudan a trae datos por Teclado, que es lo que usara el usuario para ingresarme numeros, entonces necesito recurrir a un cabezal integrado.
No lo llamo libreria, puesto que tambien hay "Discordias" y tal vez un poco de "polemica" en su implemetacion
Los Cabezales integrados van a ser los Archivos ".h"
la libreria por Defecto en C++ es iostream.h
Que si la desglosamos es `[ I.O.Stream ] que es Input Output Stream, traducido al castellano la traduccion mas correcta es Torrente de Entrada,Salida, (stream = Torrente)
Entonces ya encontramos nuestra libreria como para realizar el ejercicio
Código:
#include <iostream.h>
int main()
{
int Valor1=0,Valor2=0;
cout << "Ingrese el primer valor\n";
cin >>Valor1;
cout << "Ingrese el segundo valor\n";
cin >>Valor2;
if( Valor1 > Valor2 )
{
cout << "El mayor es : " << Valor1;
}
else
{
cout << "El mayor es : " << Valor2;
}
return 0;
}
Con la libreria IOSTREAM, podemos Mostrar datos con "COUT" y Obtener datos con "CIN"
Si tu profesor les da C++ y No C, entonces debes tener un apunte que debe explicar que hace y como funciona esta libreria, puesto que es una libreria Estandar DE C++y solo de C++, en C no funciona.
Con COUT mostramos datos cada serador literal "<<" separa los datos para Su objetivo
"<<" se muestra por pantalla un texto simple, o una variable( el valor de la variable es lo que se muestra ) si le agregamos otro "<<" Concatena el Valor o texto Anterior con el siguiente a ingresado despues del segundo "<<"
Con CIN >> Variable; lo que hacemos es decir que cuando usuario escriba ALGO y PRESIONES "ENTER", ese ALGO que escribio el usuario se guarda la variable.
Los Extensivos como \n , \t , etc que son nativos de C en su libreria estandar Stdio, tambien vienen incluidos en C++
\n [ Salta al reglon de abajo ]
\t [ es como apretar TAB en el notepad, si probas hacer eso veras que deja espacios como si apretaras 2 o 3 veces la barra espaciadora, bueno eso es lo que hace \t ]
hay otros, pero no son necesarios en los ejercicios estos.
Deberias de tener un apunte para esto.
2) Solicitar una cantidad determinada de números, leerlos y mostrar su promedio
Bueno, iostream Seguro vamos a usar por que pedimos datos, es decir tenemos una
entrada ( cantidad de numeros y lo numeros) y mostramos, es decir tenemos una
salida ( su promedio )
con particularidad, que hacemos un "blucle" es decir un cliclo, en donde una instruccion en su cuerpo, la cual designaermos nosotros se repite, En este caso como la cantidad de veces es SABIDA; o se SABRA cuando la cargue el usuario, podemos decir que es un ciclo DETERMINADO, en donde un ciclo de terminado es mejor Manipularlo con un CICLO
FOR , Este Bucle, llamado, FOR.
Me permite realizar X cantidad de veces, un proceso que esta escrito en su cuerpo, En donde X esta Determinado( es decir sé cuantas veces lo voy a hacer ).
[Se podria usar otra instruccion "WHILE" pero en este caso no la usaremos, y al final del algoritmo explicare el "porque" de usar FOR y no WHILE en este caso.Y tambien derrumbare el Mito de que el WHILE es mejor que el FOR, o que el FOR es mejor que el WHILE.]
Código:
#include <iostream.h>
int main()
{
int Limite=0,Numero=0,Suma=0;
float Prom=0;
cout << "Ingrese la cantidad de valores a pedirle a continuacion \n";
cin >>Limite;
for(int i = 1; i <= Limite; i++) // bucle for de 1 a "Limite", donde Limite lo determina el usuario
{
cout << "Ingrese un número\n";
cin >> Numero;
Suma+= Numero;
}
Prom = float(Suma)/ Limite;
cout << "El promedio es \t" << Prom;
return 0;
}
Estem, Antes que nada en "Prom =
float(Suma)/Limite;" Ese Float(variable), se usa para "Engañar al compilador" y hacer una "mascara" para que creea que "Suma" en este casos una variable de tipo FLOTANTE ( float ), entonces, cuando intentes dividir, te va a dar el resultado de punto flontate.
Porque me detengo en este punto.
Simple, Cuando vos queres asingar a una variable Flotante ( prom ) el resultado de una operacion, sea suma, resta, multiplicacion,etc entre 2 ENTEROS ( Suma y Limite ) me Devuelve un ENTERO y los Enteros no tiene "la coma" es decir el PUNTO FLOTANTE. Por lo que si hago 50 / 3 ; me tendria que dar como resultado "16,66666666666666666666666666666..." pero sin embargo, como "la operacion entre 2 enteros da como resultado otro entero" en realidad me devuelve "16" y los , 6666666... Lo tira, Los pierde o los descarta, sea cual sea el caso, No me los muestra y eso podria tomarse como un "error" en un parcial
Para eso usamos "float(variable)" para que Esa variable se combierta por UN INSTANTE en Flotante y asi, como dice la regla "un flotante operando con cualquier flotante o entero da como resultado un Flotante", entonces me Ayudara a que el resutaldo sea flotante, y en ese caso me muestre los 666666..... etc.
Luego de aver pasado por la linea que tiene el "float(variable)" la variable sigue siendo Int o Byte o Long, o lo que haya sido originalmente, y el programa sigue su curso normalmete.
Ahora:
- ¿Por que, FOR y no WHILE?
- Elemental mi querido Watson: Cuando tenes un ciclo que sabes la cantidad de veces que se realizara, es por "buen gusto" USAR FOR, puesto que esta instruccion esta diseñada para la comodida de los ciclos que se realice una cantidad de veces un ciclo en donde que CUANTAS VECES se realiza el ciclo.
- WHILE: Esta instruccion es casi identica al FOR, nada menos que tiene la caracteristica que no termina hasta que NO se cumpla Cierta condicion, en donde si jamas se llega a NO complir dicha condicion. Entonces el programa correra infinitamente o hasta que se agote la memoria virtual o la cache, ( lo que primero ocurra para llegar al overflow )
- ¿Pero... Con el WHILE Puedo Imitar los FOR y hacerlos Correr IGUAL?
- ¿ Entonces es mejor el WHILE? Dado que lo puedo usar en los ciclos no determinados y esima tambien en los ciclos en donde podria poner un FOR
- NO, Es como tratar de usar un Cuchillo como destornillador, posiblemente si la ranura del tornillo este sana, vas a poder desatornillar lo que sea con el cuchillo, pero es mojor usar un destornillador.Aqui es lo mismo, Si tenes un FOR para los ciclos Determinados, No seas caprichoso y usalo, Sino ya va a llegar el dia que te muestren lo que es ASSEMBLER ( Lenguaje de maquina ) y ahi no vas a tener NI FOR, ni WHILE ni casi nada, Y Vas a fanatico usar herramientas tan utiles en los campos que correspondan.

-Igualmente, si el WHILE puede reemplazar el FOR, es mejor el WHILE. Respuesta: NO! y NO! . El while Aveces puede molestar para controlar Vectores y/o Matrices Puesto que para Controlar las posicones del los vectores y/o matrices usamos la posicion del FOR ( ejmeplo
i )
En cambio con el while, vamos a tener que usar un
i++ o algo por el estilo y aveces cuando tenemos que `por ejemplo " intercambiar una posicon de un vector por la posicon de otro vector en donde la posicion la determina el usuario, con el WHILE, se va a poder pero va a ser un DOLOR de cabeza en cambio con el FOR en 3 linea lo haces muy comodamente.
3) Crear un vector de 20 posiciones, llenarlos de números y mostrarlos.
Bueno, en no voy a comentar mucho sobre este ejercicio ya que es obvio lo que hace en su codigo.
Si no lo entendes, deberias pedir que te expliquen vectores desde 0, puesto que lo unico que es "extraño" por asi decirlo, es las posicones y aveces como usamos una variable para detemirnar la posicon, uno se confunde cuando uno hace la prueba "mental" o trata de ver si mas o menos lo que uno hace tiene logica o no.
[Off toppic] Una de las cosas buenas de Visua basic que hacen mierda a C,C++, es que tiene el inspector, que ese laburito cuando tenes matrices de matrices manjeando Listview, te hacen la vida 200% mas facil


[/off toppic]
Lo de offtoppic, no lo tengas en cuenta, me imagino que Jamas viste Visual Basic 6, Mucho menos .Net
Asi que dejalo, ahi, el comentario es mas que nada para algunos otros del foro


Bueno, aca como hablabamos en el mito que WHILE es mejor que FOR, aca manejamos Vectores y la posiocion de la variable que queremos tomar de dicho vector.
Para ello, el Contador del FOR, nos da una Mano.
Código:
#include <iostream.h>
int main()
{
int Numero[20],i=0;
for(i = 0; i <= 19; i++) {
cout << "Ingrese el valor de la posicion " << i << ":\t";
cin >> Numero[i]; //Aca usamos la posicion del FOR, para manejar el vector
}
for(i = 0; i <= 19; i++) {
cout << "El valor de la posicion " << i + 1 << " es : " << Numero[i] << "\n";
}
return 0;
}
Bueno esto es Sencillo, el primer FOR hace de "0" a "19", de 0 a 19 hay 20 posiciones, Igual al tamaño del Arreglo o vector ( array ) , entonces lo va completar y a llenar desde la posicion 0 hasta la 19
¿ Por que el vector no puede ser de 1 a 20 ? bueno esto es 1 problemita de C++ y C, puesto que entros lenguajes como Python, C#, Visual Basic, Faith, Cobol ( de 1997 en adelante ), se puede tranquilamente.
EL IDE, se encarga de hacer una "masacara" pero funciona como de "1 to 20" en fin En C y C++ no se puede
para eso, no hay ningun problema porque si queremos usar las posiciones correctas una vez que tengamos todo el vector lleno ( es decir se completo el primer for ), lo que hacemos es usarlo de la misma manera en el for de 0 a 19 y si queremos decir el LA POSICION del vector SEGUN NUESTRA PERCEPCION hacemos una mascara, en la que le sumamos 1
cout <<
"El valor de la posicion " << i + 1 << " es : " << Numero[i] << "\n";
como veras yo puse + 1
el 4to, te lo dejo a voz, x 2 razones
1. se acaba de largar una tormenta y los truenos de los relampagos estan haciendo sonar el vidrio de la ventana como si alguien les estubiera pegando con la mano,
Si llega a caer 1 rayo en el tendido electrico. ¬¬ Ni hablar como me queda la PC
2. Asi lo practicas, antes que nada te doy una pista.
Es muy similar al 3 nada menos que el segundo for Hace de 19 a 0 en vez de 0 a 19 y el I++ es I--
Suerte!

Si no te sale, postealo, porque algun dia tiene que dejar de llover
Salu T