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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


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

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Sumar y multiplicar una serie de números
« en: 8 Mayo 2016, 20:37 pm »

Debo realizar el siguiente programa que reciba como entrada una serie de 1 y 0 este debe sumar los grupos de 1 y luego multiplicar cada uno

Por ejemplo: 011110011100011
Salida: 4*3*2= 24

Hasta ahora llevo esto

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    int num, cant=0;
  8.    int resto;
  9.  
  10. do{
  11.     num=num/10;
  12.    resto=num%10;
  13.  
  14.    if(resto==1)
  15.       cant++;
  16. } while(num)
  17.  
  18.   return 0;
  19. }
  20.  
El problema es que no se como multiplicarlos


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Sumar y multiplicar una serie de números
« Respuesta #1 en: 8 Mayo 2016, 20:47 pm »

Te pide que introduzcas una serie de 1s y 0s, pero tu introduces un entero. ¿Cuál es la diferencia? Que si tienes un 0 a la izquierda no lo vas a leer. Así que lo que tienes que hacer es leer una cadena de caracteres e iterar por toda ella verificando que posiciones son '1' y qué posiciones son '0'. Ahora solo queda aplicar las reglas propuestas


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Sumar y multiplicar una serie de números
« Respuesta #2 en: 8 Mayo 2016, 20:58 pm »

Es cierto lo que te dicen, tienes que manejar cadenas en lugar de enteros, por lo menos con la entrada que muestras el 0 a la izquierda se perderia con un entero.

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int main() {
  5. char *numero = "011110011100011";
  6. int len = strlen(numero);
  7. int i = 0;
  8. int n,m = 1,entrar = 0;
  9. while(i < len) {
  10. n = 0;
  11. printf("Evaluando %c\n",numero[i]);
  12. while(numero[i] == '1' && i < len) {
  13. printf(".\n");
  14. n++;
  15. i++;
  16. entrar =1;
  17. }
  18. if( entrar ) {
  19. m = m * n;
  20. i--;
  21. entrar =0;
  22. }
  23. i++;
  24. }
  25. printf("%i",m);
  26. }
« Última modificación: 8 Mayo 2016, 21:00 pm por AlbertoBSD » En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Sumar y multiplicar una serie de números
« Respuesta #3 en: 9 Mayo 2016, 02:33 am »

Otro enfoque en C++
Código
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.    int c, m = 1, v = 0;
  6.  
  7.    for(; (c = std::cin.get()) != '\n'; v += c & 1)
  8.        if( v && c == '0' && std::cin.peek() == '1' )
  9.        {
  10.            m *= v;
  11.            std::cout << v << '*';
  12.            v = 0;
  13.        }
  14.    std::cout << v << " = " << (m *= v);
  15. }
  16.  
En línea

SebaC

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Sumar y multiplicar una serie de números
« Respuesta #4 en: 9 Mayo 2016, 18:22 pm »

Hola gracias a todos tengo una pregunta en el código de Geeke veo esta asignación v += c & 1 puedes explicarme que hace
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Sumar y multiplicar una serie de números
« Respuesta #5 en: 9 Mayo 2016, 19:01 pm »

En C, facilito y para toda la família  :rolleyes:
Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.    char str[255];
  5.    scanf("%255s", str);
  6.    int n = 0;
  7.    int res = 1;
  8.    int i;
  9.  
  10.    for(i = 0; i < sizeof(str); ++i) {
  11.        if(str[i] == '1')
  12.            ++n;
  13.        else {
  14.            if(n)
  15.                res *= n;
  16.            n = 0;
  17.        }
  18.    }
  19.    printf("%i\n", res);
  20.  
  21.    return 0;
  22. }
  23.  
En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Sumar y multiplicar una serie de números
« Respuesta #6 en: 9 Mayo 2016, 20:26 pm »

Los caracteres '0' y '1' son equivalente a:

48 en base 2: 110001
49 en base 2: 110000

El primero tiene el bit 1 a cero, el segundo no al realizar c & 1 la expresión resulta en 1 si el carácter es '1' y 0 si el carácter es '0'.

Y de paso otra aproximación en C  :rolleyes:
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    int m = 1, n;
  6.    while (1)
  7.    {
  8.        scanf("%*[0]");
  9.        scanf("%*[1]%n", &n);
  10.        if (n > 0)
  11.        {
  12.            m *= n;
  13.            n = 0;
  14.        }
  15.        else
  16.            break;
  17.    }
  18.    printf("%d\n", m);
  19.    return 0;
  20. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al sumar 2 numeros en visual basic. « 1 2 »
Programación Visual Basic
El_Marine 10 5,186 Último mensaje 4 Agosto 2006, 23:47 pm
por Robokop
¿Error en mi BAT? Multiplicar números [Solucionado]
Scripting
_Sergi_ 2 4,610 Último mensaje 10 Febrero 2011, 22:45 pm
por _Sergi_
Multiplicar los numeros introducidos en los nodos de una lista.
Programación General
danndres 0 2,038 Último mensaje 5 Diciembre 2013, 05:36 am
por danndres
¿Un acumulador para sumar la serie fibonacci?
Programación C/C++
Exorcista12 2 4,038 Último mensaje 17 Enero 2014, 06:48 am
por Exorcista12
sumar numeros en un texto
Programación General
daniel7885 6 4,912 Último mensaje 22 Septiembre 2016, 18:28 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines