[C++] Разбиение числа на разряды и порязрядный вывод через пробел

Alex1983

Разработчик
Сообщения
1,145
Реакции
243
Всем добрый вечер.
Имеется задача:
Код:
На пишите программу которая счывает число из пяти цифр, разделяет это число 
на отдельные цифры и выводит эти цифры на печать, отделяя друг от друга тремя пробелами. 
То есть мы вводим число 12345 программа должна вывести 1   2   3   4   5.
Заранее благодарен.

P.S. Решение на С++. Используя инструкцию if. И функции printf(), scanf().
 
Последнее редактирование:
Вот код, но это уже С, if не придумал куда вставить.
Код:
#include<stdio.h>
#include<stdlib.h>

int main()
{
        char c;
        scanf("%c",&c);
        for (int i=0;i<5;i++)
        {
                printf("%c   ",c);
                scanf("%c",&c);
        }
        if(c!='\n')
        printf("\nKol-vo bolishe 5");
    printf("\n");
    system("PAUSE");
  return 0;
}

Добавлено через 12 часов 6 минут 18 секунд
if не придумал куда вставить.
Прошу прощения, if вставил ещё вчера, а само сообщение не отредактировал.
 
AlexTNT, А вы батенька, хитрец. :biggrin:
На пишите программу которая счывает число из пяти цифр
Число нужно, а не строка. ;)

Покопавшись в своих решениях, нашёл, эту задачу из книги Дейтелов, и как я её тогда решил, прочитав только первую и вторую главу.
Код:
// Задачи главы 1. Задача 1.36
// Пробел между цифрами
#include <iostream>
using namespace std;

int main()
{
   int num1, tic,
       num2, sot,
       num3, dec,
       num4, one;

   cout<<"  Enter Number Format - ####:  ";
   cin>>num1;
   while(num1 != -1){
      tic = num1 / 1000;
      num2 = num1 % 1000;
      sot = num2 / 100;
      num3 = num2 % 100;
      dec = num3 / 10;
      num4 = num3 % 10;
      one = num4 / 1;
      cout<<"  Resultat:  "<<tic<<" "<<sot<<" "<<dec<<" "<<one<<endl;
      cout<<"\n  Enter Number:  ";
      cin>>num1;
    }
   return 0;
}
//---------------------------------------------------------------------------
Программа просит ввести четырёхзначное число и разбивает на числа через пробел, если вводить меньше четырёх или больше четырёх разрядов, выводимое решение будет неверно. Но это было решено уже позже, понадобились знания создания динамических массивов и вроде бы всё. Если интересно, поищу и приведу пример уже в понедельник. :)

P.S. Вместо printf\scanf лучше используй cout\cin проще на уровень. А результат тот же.
 
printf(), scanf() - это уже С
Я нашел ошибку, вместо С++ я скачал просто С.

Программа просит ввести четырёхзначное число и разбивает на числа через пробел, если вводить меньше четырёх или больше четырёх разрядов, выводимое решение будет неверно. Но это было решено уже позже, понадобились знания создания динамических массивов и вроде бы всё. Если интересно, поищу и приведу пример уже в понедельник.
Конечно интересно, буду ждать.



P.S. Вместо printf\scanf лучше используй cout\cin проще на уровень. А результат тот же.
Понял. Спасибо за подсказку.
 
Конечно интересно, буду ждать.
В принципе нашёл, но видимо запутался, без создания динамических массивов, для её написания, вполне достаточно двух глав 1 и 2 по книге Дейтелов. Что не ясно, спрашивай.

Код:
// Написать прогу, которая по заданному натуральному числу
// определяет количество цифр в нем и выводит их по одному через пробел.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Функция расчитывающая количество чисел во введённом числе...
// Пока число делится на 10
// увеличиваем счётчик считающий кол-во разрядов в числе
int Rasriad(int enterNumber)
{
  int n = enterNumber, x = 0;
  while(n != 0){
     n /= 10;
     x++;
    }
  return x;
}

int main()
{
   int enterNumber,  // сохраняем введённое число
       lenght = 0,   // сохраняем "длину" числа, кол-во разрядов: 1234567 = 7 чисел
       indexRas,     // последний запоминаемый разряд числа
       decimal = 1,  // делитель, "отрывающий" разряды числа, после каждого прохода, умножается на 10
       z;

   cout<<" Enter Number: ";    // вводим число
   cin>>enterNumber;          // считываем число в переменную

   // определяет количество цифр в нем.
   lenght = Rasriad(enterNumber);

   // Вычисляем максимальное число, которым мы начнём "отрывать" разряды у введённого числа
   for(int j = 1; j < lenght; j++)
      decimal *= 10;

   cout<<" Number = "; // Выводим сообщение о начале вывода, информационный вывод

   // Процесс "отрыва" разрядов и вывод через пробел
   for(int i = 0; i < lenght; i++){
      indexRas = enterNumber / decimal % 10; // Отрываем первый разряд в числе и сохраняем в переменной
      decimal /= 10; // уменьшаем делитель для последующего разряда в числе
      cout<<indexRas<<" "; // выводим через пробел
    }

   cin>>z;

   return 0;
}
//---------------------------------------------------------------------------
 
Последнее редактирование:
Назад
Сверху Снизу