Гистограмма с перевернутыми цифрами: для каждого числа от конца N выведите одно целое число N и выведите линию звезд, число звездочек которой равно этой цифре.

Учитывая одно целое число N, для каждой цифры от конца N выведите строку звезд, число звездочек которой равно этой цифре C ++.

Пример ввода:
2863

Пример вывода:

***
******
********
**

мой код работает на входах, таких как 12345, .. и т. д. но не работа в 2863 году !! я не знаю почему и как я могу отредактировать мой код для решения этой проблемы!

#include <stdio.h>

int main()
{
int b,d,j=0,num,num1,length=0,length1,x[100];
float a,c;

scanf("%d",&num);

num1=num;

while(num!=0){
num/=10;
length++;
}

length1=length;

for(int i=0; length!=0; i++){
a=(float)num1/10;
b=num1/10;
c=a-(float)b;
d=c*10;
x[i]=d;
length--;
num1=b;printf("%d\n",d);
}

while(length1!=0){
while(x[j]!=0){
printf("*");
x[j]--;
}
length1--;
j++;
printf("\n");
}
}

-2

Решение

Попробуй это:

void print(int num)
{
while (num > 0)
{
int digit = num%10;
for (int i=0; i<digit; i++)
printf("*");
printf("\n");
num /= 10;
}
}

int main()
{
int num;
scanf("%d",&num);
print(num);
return 0;
}
0

Другие решения

Мои пять центов.

#include <iostream>
#include <iomanip>int main()
{
std::cout << std::setfill( '*' );

while ( true )
{
const unsigned int Base10 = 10;

std::cout << "Enter non-negative number (0 - exit): ";
unsigned int n = 0;
std::cin >> n;

if ( !n ) break;

std::cout << std::endl;

do
{
std::cout << std::setw( n % Base10 + 1 ) << '\n';
} while ( n /= Base10 );

std::cout << std::endl;
}

return 0;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector