• Sábado 4 de Mayo de 2024, 19:17

Autor Tema:  Confundido con código en C  (Leído 4365 veces)

cltomas

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Confundido con código en C
« en: Jueves 24 de Marzo de 2011, 21:27 »
0
Yo otra vez con un código que no puedo hacer,  no sé como plantearlo, sé que debe se un bucle while o eso creo, el ejerciccio es este:

Código: C
  1. Escribir un programa que lea números hasta que se encuentre el cero. El segundo número se sumará al primero, luego el tercero se restará, el cuarto se sumará, y así se deberá seguir alternado hasta que se llegue al cero. Cuando se llegue a esta condicion deberá imprimir el resultado, el total de operandos de la operación (sin incluir el cero), y la suma de los operandos que se restaron.
  2.  
Llevo dandole vueltas en mi cabeza, pero no doy con él...  :no: ...
Un ayuda me vendría bien..desde ya gracias..

Al fin lo pude hacer, vaya tela de días que me costo  :brickwall: , aquí coloco el código final.. .. gracias por los consejos .... :good:

Código: C
  1.  
  2.                                  /* Hecho por Cltomas */
  3. /*-----------------------------------Eterno Autodidacta -------------------------------------------------*/
  4. /* "No hay mejor Aprendizaje que el impuesto por uno mismo" by  Cltomas 2011....*/
  5.  
  6. /* Escribir un programa que lea números hasta que se encuentre el cero. El segundo número se sumará al primero
  7. , luego el tercero se restará, el cuarto se sumará, y así se deberá seguir alternado hasta que se llegue al cero.
  8.  Cuando se llegue a esta condición deberá imprimir el resultado, el total de operandos de la operación (sin incluir el cero)
  9. y la suma de los operandos que se restaron. */
  10.  
  11. #include <stdio.h>
  12.  
  13.  
  14. int main()
  15. {
  16.     int a;
  17.     int b, c;
  18.     int suma;
  19.     int sum3 = 0;
  20.     int cont = 1;
  21.  
  22.    
  23.     puts("Introduce 2 números, para sumarlos");
  24.     scanf("%d%d", &a, &b);
  25.     getchar();
  26.    
  27.    suma = a + b;
  28.    
  29.     while(c != 0)
  30.    {
  31.           puts("Introduce otro número, para sumarlo o restarlo, según corresponda:");
  32.           scanf("%d", &c);
  33.           getchar();
  34.        
  35.           cont +=1;
  36.          
  37.             if (cont%2 != 0)
  38.                
  39.                 suma += c;
  40.                            
  41.            else
  42.                 {
  43.                   suma -= c;  
  44.                   sum3 = sum3 + c;
  45.                 }
  46.        
  47.       } printf("La suma Total: %d, Total Operandos: %d, Suma de los que se restaron: %d n", suma, cont, sum3);
  48.      return 0;
  49.   }
  50.      
  51.    
  52.  
  53.  
  54.  
« última modificación: Viernes 1 de Abril de 2011, 21:11 por cltomas »

Leber

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Confundido con código en C
« Respuesta #1 en: Jueves 24 de Marzo de 2011, 22:23 »
0
Lo siento m0skito, fue un desliz.

Bueno, para orientarte un poco, puedes definir un array de 100 enteros por ejemplo, e ir entrando uno por uno hasta que sea 0.
Podrías postear el codigo que llevas hecho, así podriamos ayudarte mejor.

Saludos
« última modificación: Viernes 25 de Marzo de 2011, 00:04 por Leber »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Confundido con código en C
« Respuesta #2 en: Jueves 24 de Marzo de 2011, 23:43 »
0
Leber, aquí no se hace la tarea  :no:

cltomas

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Confundido con código en C
« Respuesta #3 en: Viernes 25 de Marzo de 2011, 15:04 »
0
Aún no llego a los Arrays supuestamente, se debe hacer con bucles, que es en el capitulo que voy.... Sé que el bucle for no me vale, dado queno sé cuantas veces se introducira números antes de ingresar un 0... El while creo que me serviria.... Tenía pensado esto:
 
Código: C
  1.  
  2.   float, a, b, c, d;
  3.   float Sum, restar, Sum2;
  4.   int cont = 0;
  5.   leer a
  6.   leer b
  7.   Sum   <- a + b;
  8.  
  9.  mientras a || b  distinto de cero
  10.    
  11.        leer c
  12.        restar = Sum - c;
  13.        cont =  cont + 1; //contador de números que se restan
  14.    
  15.      leer d
  16.       Sum2 = restar + d;
  17.   Terminar mientras.
  18.  
  19.   imrpimir suma Total y suma de los que se restaron y total operandos...
  20.  
  21.  

 Eso es más o menos lo que creo que me serviria, pero me hace que no funcionaría  :no: .... ¿Estoy bien? o ¿estoy bien mal?

Y m0skito no es una tarea, es más mis timpos de estudiante terminaron, esto lo hago porque me gusta y soy totalmente novato y autodidacta.... lo pregunte porque llevo días dandole vueltas en mi cabeza, pero no me aclaro....
Saludos

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Confundido con código en C
« Respuesta #4 en: Viernes 25 de Marzo de 2011, 18:00 »
0
Igual sigue siendo una tarea, aunque sea impuesta por ti mismo. La razón fundamental es que aprendamos, no que nos den el problema ya resuelto de cortar y pegar y a correr. "Dale un pescado y comerá una vez, enséñale a pescar y comerá toda la vida"  ^_^

Buenos os dejo con C que es más interesante que mis tonterías.

Leber

  • Miembro activo
  • **
  • Mensajes: 65
    • Ver Perfil
Re: Confundido con código en C
« Respuesta #5 en: Viernes 25 de Marzo de 2011, 18:43 »
0
En verdad, puedes hacer algo asi.

Imagina que tienes un array de enteros,: int numeros[100]

Código: C
  1. Bucle {
  2.    Lees el numero
  3.    si es 0 salimos del bucle
  4.    }
  5.  

Dado que necesitamos mínimo dos números, si hemos introducido menos salimos del programa.

Si no, continuamos. Entonces, podemos sumar los dos primeros números del array,
  • + [1], y a partir de ahí sumas o restas dependiendo del indice del bucle.

Dado que hemos sumado los dos primeros, el tercero se restaría, el 4 se sumaria.

Yo lo haría según el resto que de el indice del segundo bucle % 2.

Ejemplo:

Código: C
  1. indice2 < numero_total_de_numeros_entrados
  2. si indice %2 != 0
  3.   restamos el numero
  4. si indice %2 == 0
  5.   sumamos el numero
  6.  

No se si me he explicado bien, estoy algo cansado pero espero que te sirva mas o menos

Saludos

cltomas

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Confundido con código en C
« Respuesta #6 en: Sábado 26 de Marzo de 2011, 00:21 »
0
Lo tengo al 98% el código, solo me falla el contador de lo operandos totales menos el cero (no se cuenta) y que a veces no se sale del bucle while mientras no introduzca 2 ceros continuos  &lt;_&lt; ..
 lo he probado con estos números:
Código: C
  1. 6,5,4,3,2,6,5,4,3,2,0,0,
  2.  
Código: C
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.   int a, b, c, d;
  6.   int cont  = 0;
  7.   int cont1 = 0;
  8.   int cont2 = 0;  
  9.   int suma;
  10.   int sum = 0;
  11.   int suma2 = 0;
  12.  
  13.   puts("introduce 2 números");
  14.   scanf("%d %d", &a, &b);
  15.   getchar();
  16.  
  17.   if ((a != 0) && (b != 0))
  18.   {  
  19.      suma = a + b;
  20.      cont = cont + 1;
  21.   while ((c != 0) && (d != 0))
  22.   {
  23.       puts("introduce 1 número");
  24.       scanf("%d", &c);
  25.       getchar();
  26.       sum = sum + c;
  27.       cont1 = cont1 + 1;
  28.  
  29.       puts("introduce otro número");
  30.       scanf("%d", &d);
  31.       getchar();
  32.       suma2 = suma2 + d;
  33.       cont2 = cont2 + 1;
  34.    }
  35.     printf("nSuma Total %d, Suma operandos que se Restaron %d,  operandos %dn", suma - sum + suma2 ,sum, cont +      cont1 + cont2);
  36.  }  else puts("Error!");
  37. }
  38.    
  39.  
Me ido un poco por las ramas, pero funciona ... mas o menos... algun aporte  :rolleyes:

ehecatl

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Confundido con código en C
« Respuesta #7 en: Miércoles 30 de Marzo de 2011, 04:56 »
0
El problema no es tan dificil como crees.

Maneja todo dentro de un do-while, en la condicion del while metele justamente el que mientras no se de un valor cero lo siga ejecutando.

No olvides variables para el acumulado de la suma y resta que vayas haciendo asi como un contador para que tengas el total de numeros que has ido capturando

para saber si sumas o restas, dentro del ciclo do-while mete un if-else, if (contador % 2) suma else resta.


espero te sirva de algo la pseudo explicacion

Ehecatl