Duda

Iniciado por lukaszg_15, 16 Marzo 2014, 19:57 PM

0 Miembros y 1 Visitante están viendo este tema.

lukaszg_15

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.

engel lex

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
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

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

#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;

}

amchacon

¿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 (cpp) [Seleccionar]
cout << "Escriba los numeros: ";
cin >> numeros[num];


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


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.
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

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 (cpp) [Seleccionar]

    for(aux=1;aux<num;aux++){
        cout << "ingrese el siguiente numero: ";
        cin >> ingresado;
        if(ingresado<menor) menor = ingresado;
        if(ingresado>mayor) mayor = ingresado;
        media += ingresado;
    }
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

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,

lukaszg_15

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?

#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 ("

eferion

#7
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 (cpp) [Seleccionar]

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;


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...


media = (suma + suma1 + suma2 ) num;

// suma = suma + numeros[0] = 0 + numeros[ 0 ] = numeros[ 0 ]
media = ( numeros[0] + suma1 + suma2 ) / num;

// suma1 = suma1 + numeros[ 1 ] = 0 + numeros[ 1 ] = numeros[ 1 ]
media = ( numeros[ 0 ] + numeros[ 1 ] + suma2 ) / num;

// suma2 = suma2 + numeros[ 2 ] = 0 + numeros[ 2 ] = numeros[ 2 ]
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 (cpp) [Seleccionar]

for (int i = 0; i < num;i++)
  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 (cpp) [Seleccionar]

int suma = 0;
for( int i=0; i<num; i++ )
 suma += numeros[i];

media = suma / num;


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

Código (cpp) [Seleccionar]

#include<iostream>
#include<cstdlib>
#include<fstream>

using namespace std;

int main ()
{
 int num,numeros[num];
   
 cout << "Cuantos numeros va a introducir? ";
 cin >> num;
   
   
 if (num > 2)
 {
   cout << "Introducelos: ";
   for (int i = 0; i < num;i++)
     cin>>numeros[i];
 
   int suma = 0;  
   for (int i = 0; i< num; i++)
     suma += numeros[ i ];

   int media = suma / num;
   cout << "La media es: "<< media<< endl;
 }
 else
    cout << "Debe introducir mas de 2 numeros."<<endl;
}


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 ).

engel lex

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)
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

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.