sucesivas restas resta programa por para operaciones numeros multiplicar entera decimales con calculadora basicas c++

c++ - restas - ¿Cómo divido un int en sus dígitos?



programa para multiplicar en c++ (15)

Comience con la potencia más alta de diez que se ajusta a un int en su plataforma (para int de 32 bits: 1.000.000.000) y realice una división entera por ella. El resultado es el dígito más a la izquierda. Resta este resultado multiplicado con el divisor del número original, luego continúa el mismo juego con la siguiente potencia inferior de diez e itera hasta que alcances 1.

¿Cómo puedo dividir un int en c ++ a sus números únicos? Por ejemplo, me gustaría dividir 23 a 2 y 3.


Dado el número 12345:

5 es 12345 % 10
4 es 12345 / 10 % 10
3 es 12345 / 100 % 10
2 es 12345 / 1000 % 10
1 es 12345 / 10000 % 10

No proporcionaré un código completo ya que esto seguramente se parece a la tarea, pero estoy seguro de que obtienes el patrón.


Declare una matriz y almacene dígitos individuales en la matriz de esta manera

int num, temp, digits = 0, s, td=1; int d[10]; cout << "Enter the Number: "; cin >> num; temp = num; do{ ++digits; temp /= 10; } while (temp); for (int i = 0; i < digits-1; i++) { td *= 10; } s = num; for (int i = 0; i < digits; i++) { d[i] = s / td %10; td /= 10; }


Extractor de dígitos de orden invertido (por ejemplo, para 23 será 3 y 2):

while (number > 0) { int digit = number%10; number /= 10; //print digit }

El extractor de dígitos de orden normal (por ejemplo, para 23 será 2 y 3):

std::stack<int> sd; while (number > 0) { int digit = number%10; number /= 10; sd.push(digit); } while (!sd.empty()) { int digit = sd.front(); sd.pop(); //print digit }


Lo siguiente hará el truco.

void splitNumber(std::list<int>& digits, int number) { if (0 == number) { digits.push_back(0); } else { while (number != 0) { int last = number % 10; digits.push_front(last); number = (number - last) / 10; } } }


No necesariamente lo recomiendo (es más eficiente trabajar con el número en lugar de convertirlo en una cadena), pero es fácil y funciona :)

#include <algorithm> #include <iostream> #include <iterator> #include <string> #include <boost/lexical_cast.hpp> int main() { int n = 23984; std::string s = boost::lexical_cast<std::string>(n); std::copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, "/n")); return 0; }


Puedes contar cuántos dígitos quieres imprimir primero

#include <iostream> #include <cmath> using namespace std; int main(){ int number, result, counter=0, zeros; do{ cout << "Introduce un numero entero: "; cin >> number; }while (number < 0); // We count how many digits we are going print for(int i = number; i > 0; i = i/10) counter++; while(number > 0){ zeros = pow(10, counter - 1); result = number / zeros; number = number % zeros; counter--; //Muestra resultados cout << " " << result; } cout<<endl;

}


Sobre la base de la respuesta de icecrime escribí esta función.

std::vector<int> intToDigits(int num_) { std::vector<int> ret; string iStr = to_string(num_); for (int i = iStr.size() - 1; i >= 0; --i) { int units = pow(10, i); int digit = num_ / units % 10; ret.push_back(digit); } return ret; }


Solo puede usar una secuencia de operaciones x / 10.0f y std :: floor para tener un "enfoque matemático". O también puede usar boost :: lexical_cast (the_number) para obtener una cadena y luego simplemente puede hacer the_string.c_str () [i] para acceder a los caracteres individuales (el "enfoque de cadena").


Una respuesta simple a esta pregunta puede ser:

  1. Lee un número "n" del usuario.
  2. Uso de While Loop Asegúrese de que no sea cero.
  3. Tome el módulo 10 del número "n". Esto le dará su último dígito.
  4. Luego divida el número "n" por 10 ... Esto elimina el último dígito del número "n", ya que en la parte decimal int se omite.
  5. Mostrar el número.

Creo que eso ayudará. Utilicé código simple como:

#include <iostream> using namespace std; int main() {int n,r; cout<<"Enter Your Number:"; cin>>n; while(n!=0) { r=n%10; n=n/10; cout<<r; } cout<<endl; system("PAUSE"); return 0; }


el truco clásico es usar módulo 10: x% 10 te da el primer dígito (es decir, el dígito de las unidades). Para otros, deberás dividir primero (como lo muestran muchas otras publicaciones ya)

Aquí hay una pequeña función para obtener todos los dígitos en un vector (que es lo que parece querer hacer):

using namespace std; vector<int> digits(int x){ vector<int> returnValue; while(x>=10){ returnValue.push_back(x%10);//take digit x=x/10; //or x/=10 if you like brevity } //don''t forget the last digit! returnValue.push_back(x); return returnValue; }


lanzarlo a una cadena o char [] y hacer un bucle en él


for (size_t i = 0; i < sizeof(num); ++i, num>>1) { std::cout << (num&1) << "/n"; }

No especificaste la base.


int power(int n, int b) { int number; number = pow(n, b); return number; } void NumberOfDigits() { int n, a; printf("Eneter number /n"); scanf_s("%d", &n); int i = 0; do{ i++; } while (n / pow(10, i) > 1); printf("Number of digits is: /t %d /n", i); for (int j = i-1; j >= 0; j--) { a = n / power(10, j) % 10; printf("%d /n", a); } } int main(void) { NumberOfDigits(); }


int n;//say 12345 string s; scanf("%d",&n); sprintf(s,"%5d",n);

Ahora puede acceder a cada dígito a través de s[0] , s[1] , etc.