Gracias Gracias:  0
Me Gusta Me Gusta:  0
No me Gusta No me Gusta:  0
Página 1 de 2 12 ÚltimoÚltimo
Mostrando resultados del 1 al 10 de 13

Tema: aprendiendo c++

  1. #1
    ancabi Invitado

    aprendiendo c++

    buenas! estoy intentando resolver un problema que vino en el manual que estoy leyendo para aprender c++, el problema consiste en que tengo que hacer un programa que me pida 10 numeros y me los sume, me de el promedio y mediga cual es el mayor y el menor, no quiero que me digan como hacerlo, lo que quiero es que me ayuden porque me quede casi al comienzo, el codigo que hice hasta ahora es este:

    #include <iostream>
    using namespace std;

    int main ()
    {
    long long int numero;
    char resp[15];

    do{
    cout << "introduce un numero entero: ";
    cin >> numero;
    int (numero = numero + numero);
    cout << numero << endl;
    cout << "Sumar otro numero?: ";
    cin >> resp;
    } while(resp[0] == 's' || resp[0] == 'si');
    return 0;
    }
    lo que hace hasta ahora es que me pide un numero y me lo suma por si mismo, ahora no se que usar para que me pida 10 y mas adelante ir usandolos, por ej poner:

    int (z = a + b)
    a ver si alguien me entiende

    saludos

  2. #2
    Fecha de Ingreso
    27-julio-2004
    Ubicación
    En un lugar de la mancha ...
    Mensajes
    2.348
    Post Thanks / Like
    Poder de Credibilidad
    19
    Cita Iniciado por ancabi
    lo que hace hasta ahora es que me pide un numero y me lo suma por si mismo, ahora no se que usar para que me pida 10
    Pero la cantidad de números es siempre 10?? Me refiero a que si ese número es fijo mejor que hacerlo con el do-while usa un bucle for, si la sintaxis de c++ es la misma que en c sería algo así como:

    for(i=0;i<10;i++){
    ...
    }


    y en el interior irías pidiendo los números y acumulando la suma

    Luego otra cosa, la instrucción que pones:

    numero = numero + numero

    no termina de quedar muy clara ... igual hasta funciona, habría que probarlo, pero desde luego muy intuitiva no es estás usando la misma variable para todo, tanto para el número que lees de la entrada estándar como para la suma acumulada, es mejor que diferencies en 2 variables eso, siempre queda más claro. En este ejemplo es muy pequeño y es fácil, pero cuando la cosa se va complicando siempre es recomendable hacerlo así, y facilita además la depuración
    La carrera no siempre la ganan los más veloces, sino aquellos que siguen corriendo
    "No importa cuanto sepas, sino las ganas que tengas de seguir aprendiendo"

  3. #3
    Fecha de Ingreso
    22-enero-2005
    Ubicación
    Valladolid
    Mensajes
    291
    Post Thanks / Like
    Poder de Credibilidad
    16
    A ver si te ayudo algo.
    Para hacer la suma total lo que tienes que hacer es declara una variable int s al principio.
    Código:
    int s;
    s=0;
    int promedio;
    int numero;
    
    for (i=1;i<11;i++)
    {
    cout << "introduce un numero entero"<<i<<": ";
    cin >> numero;
    s=s+numero;
    
    promedio = s/i;
    }
    Bueno así lo veo yo para que te pida 10 números y además calcule el promedio.

    Para hallar el máximo y mínimo así como lo tendría no se podría hacer.
    La manera más fácil de hacer todo es que la variable numero que es la que metes por cin sea un array de ints o lo que sea, y entonces teniendo un array podrás hallar el menor y mayor comparando dos a dos elemntos de ese array.
    Espero que te valga de algo.

    Saludos

    PD. El código puede contener errores, hace dos años que no toco nada de c++.
    OpenSuse 10.2 Kde 3.55 Opera 9.10

  4. #4
    ancabi Invitado
    Gracias, me ayudaron muchisimo, ahora ya puedo sacar el promedio y sumarlos y me centre en que cuando me pregunta si quiero volver a poner los numeros le pongo que si y queda el cursor titilando y no vuelve a empezar a ver si alguien me puede ayudar:

    #include <iostream>
    using namespace std;

    int main ()
    {
    float s;
    s=0;
    double promedio;
    float numero[10];
    int i;
    float suma;
    char resp[12];

    for (i = 0; i < 10; i++)
    {
    cout << "introduce un numero entero "<<i<<" : ";
    cin >> numero[i];
    s += numero[i];
    }

    {
    cout << "La suma es: " << s;
    cout << endl;
    }

    {
    double promedio = s / i;
    cout << "El promedio es: " << promedio;
    cout << endl;
    }


    cout << "Desea entrar otros numeros?(s/n): ";
    cin >> resp;

    while(resp[0] == 's' || resp[0] == 'si');
    return 0;
    }
    Saludos y gracias

  5. #5
    Fecha de Ingreso
    27-julio-2004
    Ubicación
    En un lugar de la mancha ...
    Mensajes
    2.348
    Post Thanks / Like
    Poder de Credibilidad
    19
    Cita Iniciado por ancabi
    cuando me pregunta si quiero volver a poner los numeros le pongo que si y queda el cursor titilando y no vuelve a empezar a ver si alguien me puede ayudar
    Es que tendrías que meter todo lo que es el cuerpo principal (el for más la impresión de los datos de salida) en un do-while o similar, tal y como lo tenías un poco al principio ... porque si no el while que tienes al final realmente no hace nada, al ponerle el punto y coma de fin de instrucción sería una sentencia individual, no hace iteración ninguna

    Además, una de las comparación que tienes en el while creo que no tendría mucho sentido, además que creo que semánticamente sería incluso incorrecto

    while(resp[0] == 's' || resp[0] == 'si');

    resp[0] nunca puede valer si, ya que resp es un array de caracteres, por tanto resp[0] sería un carácter suelto, puede ser s como compruebas en la primera parte del while, pero no si completo
    La carrera no siempre la ganan los más veloces, sino aquellos que siguen corriendo
    "No importa cuanto sepas, sino las ganas que tengas de seguir aprendiendo"

  6. #6
    ancabi Invitado
    tenes razon esta como una sentencia nula, el problema es que no se me ocurre como hacer para decirle al while que si la respuesta es 's' vuelva a comenzar, alguna idea?

    PD: puede que tengas razon con lo del s o si, pero antes habia hecho un programa de ejemplo y funcionaba el 'si' pero igualmente lo saque por las dudas

    gracias por la ayuda

    saludos

  7. #7
    Fecha de Ingreso
    27-julio-2004
    Ubicación
    En un lugar de la mancha ...
    Mensajes
    2.348
    Post Thanks / Like
    Poder de Credibilidad
    19
    Cita Iniciado por ancabi
    no se me ocurre como hacer para decirle al while que si la respuesta es 's' vuelva a comenzar, alguna idea?
    Pues ya te puse, mételo todo dentro de un do-while

    Código:
    do{
    
    for (i = 0; i < 10; i++){
    
    .....
    
    }while(resp[0] == 's' || resp[0] == 'si')
    Eso sí, tendrías que inicializar la variable suma siempre a 0 al principio del do, para evitar que te vaya acumulando las sumas de diferentes pasadas

    Cita Iniciado por ancabi
    PD: puede que tengas razon con lo del s o si, pero antes habia hecho un programa de ejemplo y funcionaba el 'si' pero igualmente lo saque por las dudas
    Bueno, no se si en C++ la cosa irá diferente, con C al menos eso no funcionaría
    La carrera no siempre la ganan los más veloces, sino aquellos que siguen corriendo
    "No importa cuanto sepas, sino las ganas que tengas de seguir aprendiendo"

  8. #8
    ancabi Invitado
    bueno, gracias chuzo, pero no funciono o no le pude hacer funcionar. Igual no me importa eso, lo dejo como algo secundario, ahora estoy intentando que no sea siempre 10 numeros los que haya que introducir, sino que te pregunte cuantos queres introducir:

    include <iostream>
    using namespace std;

    int main ()
    {
    double s;
    s=0;
    double promedio;
    double numero[10];
    int z;
    z=0;
    int i;
    char resp[12];



    {
    cout << "cuantos numeros va a ingresar?: ";
    cin >> z;
    }

    for (i = 0; i < z; i++);
    {
    cout << "introduce un numero entero "<<i<<" : ";
    cin >> numero[i];
    s += numero[i];
    }

    {
    cout << "La suma es: " << s;
    cout << endl;
    }

    {
    double promedio = s / i;
    cout << "El promedio es: " << promedio;
    cout << endl;
    }


    cout << "Desea entrar otros numeros?(s/n): ";
    cin >> resp;

    while(resp[0] == 's' || resp[0] == 'S');
    return 0;
    }
    bueno, el problema en el codigo es que i toma el valor de z, y por eso solamente pide 1 numero y termina con la suma y el promedio, ALGUIEN SABE POR QUE?????? :'(

  9. #9
    Fecha de Ingreso
    27-julio-2004
    Ubicación
    En un lugar de la mancha ...
    Mensajes
    2.348
    Post Thanks / Like
    Poder de Credibilidad
    19
    Cita Iniciado por ancabi
    el problema en el codigo es que i toma el valor de z, y por eso solamente pide 1 numero y termina con la suma y el promedio
    Bueno, no es exactamente eso ... el problema, como la mayoría de las veces es un pequeño detalle, pero que puede hacer que uno se vuelva loco buscando la solución, y lo se por experiencia de hecho esta tarde mirando el código lo vi aparentemente bien, pero ahora ya vi el fallo, lo tienes en la línea del for:

    Código:
    for (i = 0; i < z; i++);
    Ahí sobra el último punto y coma, ya que al ponerlo el for no hace nada, hace las iteraciones que tenga que hacer, pero sin ejecutar nada realmente, el bloque siguiente sería algo totalmente independiente, y de ahí que no se repita

    Un saludo
    La carrera no siempre la ganan los más veloces, sino aquellos que siguen corriendo
    "No importa cuanto sepas, sino las ganas que tengas de seguir aprendiendo"

  10. #10
    ancabi Invitado
    hola chuzo!! muchas gracias por la ayuda, me fue muy bien, tenias razon con lo del punto y coma, como algo tan facil puede hacer te rompas la cabeza??? bueno, la cosa es que consegui que pregunte la cantidad de numeros a introducir y que vuelva a comenzar, lo unico es que cuando vuelve a comenzar no lo hace de 0 sino que la suma y todo eso se lo suma al anterior, pero eso ya vere mas adelante.

    Gracias, saludos

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Marcadores

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •