elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda  (Leído 4,728 veces)
lukaszg_15

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Duda
« en: 16 Marzo 2014, 19:57 pm »

me he bloqueado un poco en esta pregunta y queria saber si me podriais ayudar :

Escribir  un  programa  que,  después  de  preguntar  cuántos  números  se  van  a
introducir,  pida  esos  números  y  devuelva  su  media  aritmética,  el  mayor  y  el
menor. El programa debe controlar que la cantidad de números es mayor de 2 y
en caso contrario ha de mostrar un mensaje de error.



Se hacer practicamente todo quitando lo primero, lo de cuantos numeros quieres y luego escribir esos numeros, yo lo he estado intentando hacer con arrays pero nunca me sale lo que le estoy pidiendo, alguno podria ayudarme? seguramente sea un ejercicio facil para muchos.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda
« Respuesta #1 en: 16 Marzo 2014, 20:18 pm »

por favor publica tu codigo, no te lo van a entregar listo, muestra lo que llevas, colocas un comentario donde tengas la duda y así vamos :P


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
lukaszg_15

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Duda
« Respuesta #2 en: 16 Marzo 2014, 20:40 pm »

yo tengo algo asi pero me esta dando error todo el rato :

Código:
#include<iostream>
#include<cstdlib>
#include<fstream>

using namespace std;

int main ()
{
    int num,media,suma,numeros[num],aux;
    
    cout << "Cuantos numeros va a introducir? ";
    cin >> num;
    cout << "Escriba los numeros: ";
    cin >> numeros[num];
    
    
   for(int i=0;i<num;i++){
           suma = suma + numeros[num];
           media = suma / num;
           cout << "La media es: "<< media<< endl;
          
           {
if( numeros[num]>numeros[i+1])
{
aux=numeros[i];
numeros[i]= numeros[i+1];
numeros[i+1]=aux;
           }
           cout << "ascendente: ";
for(i=1;i<=num;i++)
{
cout<<","<<numeros[i];
}
cout << "\ndecendente: ";
for(i=num;i>=1;i--)
{
cout<<","<<numeros[i];
}



system ("pause");
return 0;

}
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda
« Respuesta #3 en: 16 Marzo 2014, 21:02 pm »

¿Lo estás haciendo aposta para que te hagamos la tarea? :huh:

Vale que los novatos cometen errores, pero esque ahí hay como una línea por error.

De momento:
Código
  1. cout << "Escriba los numeros: ";
  2. cin >> numeros[num];

No puedes hacer eso, los arrays se escriben valor a valor. Tienes que irlo recorriendo con un for:
Código
  1. for (int i = 0; i < num;i++)
  2. {
  3.    cin>>numeros[i];
  4. }

Lo mismo con la suma, hay que hacerla elemento a elemento con un for.

Y hasta ahí puedo llegar. Reescribe el código desde cero, probablemente te des cuenta que algunas cosas no concuerdan. Si sigues teniendo dudas postea.

Y repasate los arrays anda :(

Saludos.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda
« Respuesta #4 en: 16 Marzo 2014, 21:11 pm »

tienes que estár más pendiente al hacer el codigo... veo un montón de errores y es básicamente una perdida de tiempo intentar arreglarlo... mira este

inicias tus variables, ingresas el primer numero y mayor, menor, y media son iguales a ese primer numero, luego te vienes y completas con un for así... sin arrays...
Código
  1.    for(aux=1;aux<num;aux++){
  2.        cout << "ingrese el siguiente numero: ";
  3.        cin >> ingresado;
  4.        if(ingresado<menor) menor = ingresado;
  5.        if(ingresado>mayor) mayor = ingresado;
  6.        media += ingresado;
  7.    }
  8.  
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
lukaszg_15

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Duda
« Respuesta #5 en: 16 Marzo 2014, 21:15 pm »

vale gacias voy a reescribir el codigo .

amchacon era eso lo que me tenia un poco preocupado que sabia que lo estaba haciendo mal pero no sabia hacerlo bien.

engelx lo siento intentare repasarme 5 veces las cosas antes de preguntar pero esque estaba muy estresao con este ejercicio, espero que ahora me pueda salir,
En línea

lukaszg_15

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Duda
« Respuesta #6 en: 17 Marzo 2014, 16:04 pm »

he conseguido hacer esto, lo tengo todo hecho y bien pero no como quiero, la suma esta hecha para 3 numeros de array pero si el usuario quiere mas me daria error o el resultado de los 3 primeros, como hariais para hacer esa suma sin saber cuantos numeros de array habra?

Código:
#include<iostream>
#include<cstdlib>
#include<fstream>

using namespace std;

int main ()
{
    int num,numeros[num],suma,media,suma1,suma2;
   
    cout << "Cuantos numeros va a introducir? ";
    cin >> num;
   
   
    if (num > 2){
    cout << "Introuducelos: ";
    for (int i = 0; i < num;i++){
        cin>>numeros[i];}
       
        for (int i = 0; i< num; i++){
            suma = 0;
            suma1 = 0;
            suma2 = 0;
            suma = suma + numeros[0];
            suma1 = suma1 + numeros[1];
            suma2 = suma2 + numeros [2];
            media = (suma + suma1 + suma2) /num;
            }
            cout << "La media es: "<< media<< endl;
            }
           else
            {
                cout << "Debe introducir mas de 2 numeros."<<endl;
                }
           

system ("
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda
« Respuesta #7 en: 17 Marzo 2014, 16:24 pm »

Si tienes los números en un array... recorre el array y ve sumando sus elementos.

Y si sabes cuántos elementos hay en el array... el valor lo tienes almacenado en la variable "num".

Pero vayamos por partes.

Código
  1. for (int i = 0; i< num; i++)
  2. {
  3.  suma = 0;
  4.  suma1 = 0;
  5.  suma2 = 0;
  6.  suma = suma + numeros[0];
  7.  suma1 = suma1 + numeros[1];
  8.  suma2 = suma2 + numeros [2];
  9.  media = (suma + suma1 + suma2) /num;
  10. }
  11.  
  12. cout << "La media es: "<< media<< endl;

Este código no tiene ningún sentido... es decir, calculas "num" veces la "media" de los 3 primeros elementos... digo "media" porque divides entre "num" pese a no sumar los "num" elementos... además si "explotas" la linea "media=..." queda algo tal que...

Código
  1. media = (suma + suma1 + suma2 ) num;
  2.  
  3. // suma = suma + numeros[0] = 0 + numeros[ 0 ] = numeros[ 0 ]
  4. media = ( numeros[0] + suma1 + suma2 ) / num;
  5.  
  6. // suma1 = suma1 + numeros[ 1 ] = 0 + numeros[ 1 ] = numeros[ 1 ]
  7. media = ( numeros[ 0 ] + numeros[ 1 ] + suma2 ) / num;
  8.  
  9. // suma2 = suma2 + numeros[ 2 ] = 0 + numeros[ 2 ] = numeros[ 2 ]
  10. media = ( numeros[ 0 ] + numeros[ 1 ] + numeros[ 2 ] ) / num;

Te sobran así a bote pronto la mitad de las variables!!! Si al menos tener tantas variables sirviese para que el código fuese más legible tendría alguna excusa... pero es que su efecto es justo el contrario.

La solución que buscas es sencilla. Simplemente fíjate en cómo has elaborado el código que pide los datos al usuario. Cuando estás pidiéndole los diferentes números, para almacenarlos haces...

Código
  1. for (int i = 0; i < num;i++)
  2.  cin >> numeros[ i ];

... luego para sumarlos todos has de hacer más o menos lo mismo. Es decir, necesitas un bucle de 0 a "num" y aprovechas ese bucle para acceder a todos los elementos del array y sumarlos.

Código
  1. int suma = 0;
  2. for( int i=0; i<num; i++ )
  3.  suma += numeros[i];
  4.  
  5. media = suma / num;

Y esto mismo aplicado a tu código...

Código
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<fstream>
  4.  
  5. using namespace std;
  6.  
  7. int main ()
  8. {
  9.  int num,numeros[num];
  10.  
  11.  cout << "Cuantos numeros va a introducir? ";
  12.  cin >> num;
  13.  
  14.  
  15.  if (num > 2)
  16.  {
  17.    cout << "Introducelos: ";
  18.    for (int i = 0; i < num;i++)
  19.      cin>>numeros[i];
  20.  
  21.    int suma = 0;  
  22.    for (int i = 0; i< num; i++)
  23.      suma += numeros[ i ];
  24.  
  25.    int media = suma / num;
  26.    cout << "La media es: "<< media<< endl;
  27.  }
  28.  else
  29.     cout << "Debe introducir mas de 2 numeros."<<endl;
  30. }

Ah si, procura tabular bien el código... si no es bastante molesto leerlo y le quitas a la gente las ganas de ayudarte ( si no leen tu código porque les parece incomprensible no te van a responder ).
« Última modificación: 17 Marzo 2014, 16:27 pm por eferion » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda
« Respuesta #8 en: 17 Marzo 2014, 16:26 pm »

para que haces un ciclo si lo haces directamente? xD

te recomiendo algo, instala dev c++, rga tu.códigos, y haces un debug, al ver como tu códigos se comporta linea a linea entenderas tus errores :p

(si alguien conoce un debugger mas practico, que avise)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
lukaszg_15

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: Duda
« Respuesta #9 en: 17 Marzo 2014, 16:41 pm »

perdon por el codigo lo hare mas legible la proxima vez.


Pero es que yo en un principio estaba haciendo exactamente lo mismo que me has puesto, ademas calcado porque  lo vi en otras paginas que tenian un problema parecido, pero es que a mi me sigue dando error, en vez de hacerme la suma y luego  la media el compilador hace lo que quiere. por ejemplo :

pongo que quiero 3 numeros que son 3,4,5.

me salen 3 mensajes en vertical que ponen :
La media es: 1
La media es : 2
La media es : 4.

por eso pense que lo estaba haciendo mal pero veo que lo tenia bien. Puede ser algun bug del compilador o algo? tengo el dev c++.

ah y si saco el cout del ciclo for es peor me sale un mensaje :

La media es: 2293672  :o

Lo siento por ser tan pesado pero es que no entiendo este error, porque en todos los lados es la misma respuesta pero a mi me sigue dando error.

En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,816 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,840 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
Duda facil, [VIDEO QUE EXPLICA MI DUDA]
Diseño Gráfico
Ngeooz 6 8,949 Último mensaje 2 Diciembre 2013, 19:33 pm
por Ngeooz
[DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA] « 1 2 »
Windows
MrMaticool 10 11,468 Último mensaje 12 Febrero 2014, 17:55 pm
por MrMaticool
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines