Autor
|
Tema: Sumar y multiplicar una serie de números (Leído 1,651 veces)
|
SebaC
Desconectado
Mensajes: 16
|
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 #include <iostream> using namespace std; int main() { int num, cant=0; int resto; do{ num=num/10; resto=num%10; if(resto==1) cant++; } while(num) return 0; }
El problema es que no se como multiplicarlos
|
|
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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
Mensajes: 3.587
🏴 Libertad!!!!!
|
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. #include<stdio.h> #include<string.h> int main() { char *numero = "011110011100011"; int i = 0; int n,m = 1,entrar = 0; while(i < len) { n = 0; printf("Evaluando %c\n",numero [i ]); while(numero[i] == '1' && i < len) { n++; i++; entrar =1; } if( entrar ) { m = m * n; i--; entrar =0; } i++; } }
|
|
« Última modificación: 8 Mayo 2016, 21:00 pm por AlbertoBSD »
|
En línea
|
Donaciones 1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
|
|
|
geeke
Desconectado
Mensajes: 93
|
Otro enfoque en C++ #include <iostream> int main() { int c, m = 1, v = 0; for(; (c = std::cin.get()) != '\n'; v += c & 1) if( v && c == '0' && std::cin.peek() == '1' ) { m *= v; std::cout << v << '*'; v = 0; } std::cout << v << " = " << (m *= v); }
|
|
|
En línea
|
|
|
|
SebaC
Desconectado
Mensajes: 16
|
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
Mensajes: 1.481
|
En C, facilito y para toda la família  #include <stdio.h> int main() { char str[255]; int n = 0; int res = 1; int i; for(i = 0; i < sizeof(str); ++i) { if(str[i] == '1') ++n; else { if(n) res *= n; n = 0; } } return 0; }
|
|
|
En línea
|
while(is_alive(yourself)) { make_true(yourself, yourdreams); }
|
|
|
geeke
Desconectado
Mensajes: 93
|
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  #include <stdio.h> int main(void) { int m = 1, n; while (1) { if (n > 0) { m *= n; n = 0; } else break; } return 0; }
|
|
|
En línea
|
|
|
|
|
|