Ir al contenido

publicidad

Foto

mis dudas en c++


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
100 respuestas en este tema

  • Xinef

  • HARENA TIGRIS

  • vida restante: 100%
  • Registrado: 15 oct 2002
  • Mensajes: 7.003
#31

Escrito 12 diciembre 2008 - 19:37

El ejercicio te dice que debes usar un array, creo que la cosa seria así:

[code:1]#include
#include

using namespace std;

int main(int argc, char *argv[])
{
float j,l,m;
j=l=m=0;
float *array;
array = new float[10];
cout << "escribe 10 de los cuales quieras sber la suma el promedio el mayor y el menor:\n";
for (int i = 0; i<10; i++){
cint >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
}
m = l / 10;
cout << "la suma de todos sus numeros es\n" << l << " \n";
cout << "el promedio de los numeros es\n" << m << " \n";

system("PAUSE");
return EXIT_SUCCESS;
}[/code]


Te has olvidado liberar la memoria solicitada... Todo new tiene asociado un delete. En este caso, al ser un array hay que hacer un:

[code:1]
delete[] array;
[/code]

Como aún no has visto punteros, lo mejor que puedes hacer es declarar un array estático. Como sabes el número de elementos sólo tienes que hacer:

[code:1]
float numeros[10];
[/code]

Para el mayor número no necesitas ordenarlo. Aunque si lo haces, ya lo tendrás para los demás ejercicios.

Lo único que tienes que hacer es llevar una variable que contenga el mayor número introducido. Cuando salgas del bucle de entrada, esa variable contendrá el número mayor. (Sólo necesitas una nueva variable y un if).

  • Gagle

  • Midna

  • vida restante: 100%
  • Registrado: 22 mar 2008
  • Mensajes: 9.856
#32

Escrito 12 diciembre 2008 - 19:51

Para saber el menor y el mayor no es necesario ordenar el array.

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#33

Escrito 12 diciembre 2008 - 20:07

Para saber el menor y el mayor no es necesario ordenar el array.

si lo se pero nos e como hacerlo, en la pagina no te dicen como hacerlo solot e dice para que vale cada cosa y ya y por eso no me entero

[code:1]for (int i = 0; i<10; i++){
int >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
} [/code]

esto que vendria a signicar
seria algo tal y como:
int inicialmente 0 si i es menor de 10 sumarle uno. array i =j cada vez la i seria una mas por lo que la j tambien
inicialemente i es 0 sumarlo 1 mas asta 10. l seria igual a i
no??
pero que tiene que ver la j hay???

#34

Escrito 12 diciembre 2008 - 20:19

Para saber el menor y el mayor no es necesario ordenar el array.

si lo se pero nos e como hacerlo, en la pagina no te dicen como hacerlo solot e dice para que vale cada cosa y ya y por eso no me entero

[code:1]for (int i = 0; i<10; i++){
int >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
} [/code]

esto que vendria a signicar
seria algo tal y como:
int inicialmente 0 si i es menor de 10 sumarle uno. array i =j cada vez la i seria una mas por lo que la j tambien
inicialemente i es 0 sumarlo 1 mas asta 10. l seria igual a i
no??
pero que tiene que ver la j hay???


Te lo explico, la i es un indicador de la posicion actual del array. Por ejemplo, si tenemos este array [1,2,5,76,1,4,7,2,8,0] y la i fuera 3, el numero seria 76 (tengamos en cuenta que empiezan de 0 hasta n-1, donde n es el tamaño del array).

Entonces, lo que en el primer bucle es ir añadiendo numeros al array hasta que llegue a 10.

PD. ahora que me fijo, el primer bucle esta mal, el teclado se me ha ido de las manos, queria hacer un cin >> j en vez de int >> j.

Bueno, pues una vez llenado el array con los valores que le hemos metido, en el segundo array lo que hago es sumar todos los numeros, y l guarda la suma total. Eso equivale a:

l = l+array[i];

sin bucle sería algo así:

l = array[0] + array[1] + ... + array[9];

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#35

Escrito 12 diciembre 2008 - 20:34

Para saber el menor y el mayor no es necesario ordenar el array.

si lo se pero nos e como hacerlo, en la pagina no te dicen como hacerlo solot e dice para que vale cada cosa y ya y por eso no me entero

[code:1]for (int i = 0; i<10; i++){
int >> j;
array[i]=j;
}
for(int i=0; i<10; i++){
l+=array[i];
} [/code]

esto que vendria a signicar
seria algo tal y como:
int inicialmente 0 si i es menor de 10 sumarle uno. array i =j cada vez la i seria una mas por lo que la j tambien
inicialemente i es 0 sumarlo 1 mas asta 10. l seria igual a i
no??
pero que tiene que ver la j hay???


Te lo explico, la i es un indicador de la posicion actual del array. Por ejemplo, si tenemos este array [1,2,5,76,1,4,7,2,8,0] y la i fuera 3, el numero seria 76 (tengamos en cuenta que empiezan de 0 hasta n-1, donde n es el tamaño del array).

Entonces, lo que en el primer bucle es ir añadiendo numeros al array hasta que llegue a 10.

PD. ahora que me fijo, el primer bucle esta mal, el teclado se me ha ido de las manos, queria hacer un cin >> j en vez de int >> j.

Bueno, pues una vez llenado el array con los valores que le hemos metido, en el segundo array lo que hago es sumar todos los numeros, y l guarda la suma total. Eso equivale a:

l = l+array[i];

sin bucle sería algo así:

l = array[0] + array[1] + ... + array[9];

aja ya pillo por donde vas :-D :-D vamos que as echo lo que e echo yo pero resumido xd

  • Gagle

  • Midna

  • vida restante: 100%
  • Registrado: 22 mar 2008
  • Mensajes: 9.856
#36

Escrito 12 diciembre 2008 - 20:48

Para saber el menor y el mayor no es necesario ordenar el array.

si lo se pero nos e como hacerlo, en la pagina no te dicen como hacerlo solot e dice para que vale cada cosa y ya y por eso no me entero


Declaras 2 enteros, uno para el menor y otro para el mayor.

Una vez tienes todos los elementos en el array (tambien podrias hacer la suma, saber el menor y el mayor a la vez que te van entrando los numeros, pruebalo) inicializa menor y mayor con el primer elemento.

Recorres todo el array con un indice, vas comparando la variable mayor y menor con la casilla del array que te marca el indice y vas actualizando las variables.

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#37

Escrito 12 diciembre 2008 - 21:30

Para saber el menor y el mayor no es necesario ordenar el array.

si lo se pero nos e como hacerlo, en la pagina no te dicen como hacerlo solot e dice para que vale cada cosa y ya y por eso no me entero


Declaras 2 enteros, uno para el menor y otro para el mayor.

Una vez tienes todos los elementos en el array (tambien podrias hacer la suma, saber el menor y el mayor a la vez que te van entrando los numeros, pruebalo) inicializa menor y mayor con el primer elemento.

Recorres todo el array con un indice, vas comparando la variable mayor y menor con la casilla del array que te marca el indice y vas actualizando las variables.

:s si es que no te entiendo a que te refieres con lo de enteros

pd. es mas dificil de lo que pensaba :((
pd2. null debe estar algo mal por que lo e pasado al compilador y despues ejecuto el proyect y me sale como una cosa asi:
1.576785.e1.869

  • Gagle

  • Midna

  • vida restante: 100%
  • Registrado: 22 mar 2008
  • Mensajes: 9.856
#38

Escrito 12 diciembre 2008 - 22:38

[code:1]int i, mayor, menor;
//A es el array
mayor=A[0];
menor=A[0];
for (i=1; i<10; i++){
if (A[i]>mayor){
mayor=A[i];
}else if (A[i] menor=A[i];
}
}[/code]

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#39

Escrito 12 diciembre 2008 - 22:48

[code:1]int i, mayor, menor;
//A es el array
mayor=A[0];
menor=A[0];
for (i=1; i<10; i++){
if (A[i]>mayor){
mayor=A[i];
}else if (A[i] menor=A[i];
}
}[/code]


asi mejor o eso creo xd

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#40

Escrito 13 diciembre 2008 - 15:29

bien ya entendi perfectamente este ejercicio
dentro de nada are el segundo ^^

-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!pag 6 & 8 actualizacion]

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#41

Escrito 13 diciembre 2008 - 17:25

Hacer un programa que lea diez valores enteros en un array y los muestre en pantalla. Después que los ordene de menor a mayor y los vuelva a mostrar. Y finalmente que los ordene de mayor a menor y los muestre por tercera vez. Para ordenar la lista usar una función que implemente el método de la burbuja y que tenga como parámetro de entrada el tipo de ordenación, de mayor a menor o de menor a mayor. Para el array usar una variable global.

wenas no entiendo que quiere decir con esto :S

-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!pag 6 & 8 actualizacion]

  • Xinef

  • HARENA TIGRIS

  • vida restante: 100%
  • Registrado: 15 oct 2002
  • Mensajes: 7.003
#42

Escrito 13 diciembre 2008 - 17:45

Para el array usar una variable global.

wenas no entiendo que quiere decir con esto :S



Usar un número directamente en el código como tamaño de un array está "mal visto".

Extendiendo la idea, es lo que se llama: número mágico. Un número que en algún momento de la codificación tuvo significado, pero que pasado el tiempo podría dejar de tenerlo.

Lo normal es indicar ese tamaño mediante una constante (C++) o con una directiva del preprocesador ©.

Un ejemplo con constantes:

[code:1]
#include

const int MAX_NUM = 10;

int main(int narg, char **argv) {

int array[MAX_NUM];

for (int i=0; i std::cout << "array[" << i << "] --> " << array[i] << std::endl;
}

return 0;
}
[/code]


La ventaja de hacerlo así, a parte de la claridad del código, es que si cambias el tamaño del array sólo tienes que hacerlo en un sitio.

  • davidlie

  • IGNIS EXCUBITOR

  • vida restante: 100%
  • Registrado: 25 feb 2007
  • Mensajes: 27.026
#43

Escrito 13 diciembre 2008 - 18:56

aja eso lo di pero no lo entendi bien jeje
otra cosa como ago para que en la pantalla me muestre todos los números que contiene el array??
hice esto pero se ve que no funciona ^^

[code:1]#include
#include

const int NumMax = 10;
using namespace std;

int main(int argc, char *argv[])
{
int array[NumMax];
float a;
cout << "escribe tus 10 cifras, las ordenaremos de mayor a menor y de menor a mayor\n";
for (int i=0; i<10; i++){
cin >> a;
array[NumMax]= a;
}
cout << "esto son tus numeros verdad?\n" << a <<


system("PAUSE");
return EXIT_SUCCESS;
}
[/code]

-----------------------------------------------------------------------------
Imagen Enviada
un saludo de davidlie
mi nick es davidlie y lie no es porque miento ;-) asi que buscaros otra gracia
merijuego haciendose, comenta aqui!!!
la historia de como me dieron una ostia aqui!!!pag 6 & 8 actualizacion]

  • Xinef

  • HARENA TIGRIS

  • vida restante: 100%
  • Registrado: 15 oct 2002
  • Mensajes: 7.003
#44

Escrito 13 diciembre 2008 - 19:16

otra cosa como ago para que en la pantalla me muestre todos los números que contiene el array??


Recuerda que un array no es mas que una colección de variables. Para acceder a cada una de ellas, se debe hacer a través de un índice, por lo tanto, para ver el contenido de la variable "4" lo único que debes hacer es:

[code:1]
std::cout << "La cuarta variable de mi array contiene: " << array[3] << std::endl;
[/code]


Para asignar un valor a la misma casilla se hace de "igual" forma:

[code:1]
std::cout << "Introduce el valor para la cuarta casilla: ";
std:cin >> array[3];
[/code]


La ventaja de un array es el recorrido. Como has visto en esos ejercicios, se podrían haber hecho sin problemas con diez variables distintas: var1, var2, ..., var10. Pero si quieres mostrarlas todas te encuentras con un gran problema (el mayor problema de todo programador: la vagancia :D) así que un array es perfecto para usarlo en una iteración.

Como ejemplo de iteración, puedes mirar código anterior. No, no "existe "una manera "directa" de imprimir un array completo en una sola llamada.

  • Gagle

  • Midna

  • vida restante: 100%
  • Registrado: 22 mar 2008
  • Mensajes: 9.856
#45

Escrito 13 diciembre 2008 - 20:12

Mira este trozo de codigo. El error esta aqui:

[code:1]for (int i=0; i<10; i++){
cin >> a;
array[NumMax]= a;
}[/code]

La i no la usas para nada?


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad