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


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  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 1,425 veces)
SebaC

Desconectado Desconectado

Mensajes: 16


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

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 »

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
Colaborador
***
Desconectado Desconectado

Mensajes: 3.470


🏴 Libertad!!!!!


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

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

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 »

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



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

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

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
geeke

Desconectado Desconectado

Mensajes: 93


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

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:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines