15 / 12 / 7
Регистрация: 04.02.2017
Сообщений: 475
1

Дополнить числа нулями слева до 9 разрядов

04.02.2017, 09:21. Показов 12431. Ответов 8
Метки нет (Все метки)

Здравствуйте подскажите пожалуйста как вывести перед номером нули. например задача такая человек вводит номер паспорта девяти значный номер должен быть, если же в номере паспорта нет 9 чисел то дополнить слева нулями до 9. буду очень благодарен.

пример программы такой

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
 
int main()
{
    int id,a,c=9,count=0;
    
    printf("enter ID\n");
    
    do
    {
        printf("Please add several zero\n");
        scanf("%0d", &id);
        
        count = 0;
        while (id) 
        {
            a =  id % 10;
            id = id / 10;
            count++;
        }
        
    } while (count!=c);
счётчик считывает числа но он их видит в таком виде -858993460 т.е какой то мусор а я ввожу например номер 001257842
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2017, 09:21
Ответы с готовыми решениями:

Вывести время двумя цифрами (однозначные числа дополнить слева нулями)
вывод этой программы такой 12:1:40 при вводимой переменной 129700 а надо Correct output:...

Строки. Нужно дополнить строку нулями слева
Нужно дополнить строку нулями слева. Например была строка str1=&quot;345&quot; результат str2=&quot;0000000345&quot;...

Вычислить произведение k старших разрядов (находящихся слева) цифр числа
Здравствуйте, форумчане! Пожалуйста, если вас не затруднит, посмотрите на код моей программы и...

Отобразить на форме числовое поле с нулями слева (ведущими нулями)
у меня есть поле &quot;номер штрих-кода читателя&quot;. Это поля такого вида: 00000001. Следующий читатель...

8
1269 / 1026 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
04.02.2017, 12:16 2
Цитата Сообщение от FerrariF70 Посмотреть сообщение
как вывести перед номером нули
Так вывести или ввести? Если вывести, то printf("%09d", x); должно помочь.
0
81 / 81 / 33
Регистрация: 03.03.2013
Сообщений: 311
05.02.2017, 02:34 3
FerrariF70, это не мусор)))) попробуй строку 5 заменить на
C
1
long int id,a,c=9,count=0;
0
Вездепух
Эксперт CЭксперт С++
10317 / 5607 / 1530
Регистрация: 18.10.2014
Сообщений: 13,700
06.02.2017, 22:14 4
Цитата Сообщение от FerrariF70 Посмотреть сообщение
scanf("%0d", &id);
Такого формата у scanf нет.

Цитата Сообщение от FerrariF70 Посмотреть сообщение
счётчик считывает числа но он их видит в таком виде -858993460
Нет, никакого считывания числа не происходит вообще, ибо в scanf написана ерунда.

Цитата Сообщение от FerrariF70 Посмотреть сообщение
как вывести перед номером нули
Я в вашем коде вообще никакого "вывода номера" не вижу, ни с нулями, ни без.
0
15 / 12 / 7
Регистрация: 04.02.2017
Сообщений: 475
13.02.2017, 07:12  [ТС] 5
TheCalligrapher вы не видите никакого вывода поэтому я и спросил как вывести с дополнениям нулями слева чтоб довести количество цифр до 9. если вводить число без нулей слева то всё работает хорошо если написать программу таким образом

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
do
    {
        printf("Please add several zero\n");
        scanf("%d%d", &id, &n);
 
        count = 0;
        while (id)
        {
            ReversSum *= 10;
            ReversSum += id % 10;
            id /= 10;
        }
        while (ReversSum)
        {
            ID *= 10;
            ID += ReversSum % 10;
            ReversSum /= 10;
            count++;
        }
 
    } while (count != c);

likehood,Novi4ekC
пробывал выши методы не помогло если пишу номер таким образом 001234567 видит только цифры от 1 до 7

Добавлено через 9 минут
забыл добавить ID=0,ReversSum=0;
0
Вездепух
Эксперт CЭксперт С++
10317 / 5607 / 1530
Регистрация: 18.10.2014
Сообщений: 13,700
13.02.2017, 07:55 6
Цитата Сообщение от FerrariF70 Посмотреть сообщение
я и спросил как вывести с дополнениям нулями слева
Вам нужно более внятно объяснить, что именно вы хотите сделать.

В первую очередь необходимо понять, что у числа нет и не может быть никаких "нулей слева". "Нули слева" бывают только у символьной записи числа. Число и запись числа - это совершенно разные вещи.

Например, число "пять" - это число "пять". И если вы считываете его именно как число (т.е. через scanf ("%d", ...)), то каким бы образом вы его ни вводили - как "5", "05", "0005" или еще как - то получится у вас после ввода просто одно и то же число "пять". Это число не знает и не хочет знать сколько вы там вводили "нулей слева".

Аналогично при выводе числа: дополнить само число "нулями слева" невозможно - такого понятия даже не существует. Дополнить нулями слева можно только строковое представление числа, которое будет выводиться.

Поэтому если задача состоит в том, чтобы при выводе (т.е. при преобразовании числа обратно в символьную запись) всегда дополнять ваше число нулями до какой-то фиксированной ширины, то сделать это можно будет именно при выводе как-то так

C
1
printf("%010d", number);
Такой вызов всегда будет дополнять символьное представление числа нулями до ширины 10.

Однако если вам надо дополнять не до фиксированной ширины 10, а сохранять именно то количество ведущих нулей, которое использовалось при вводе числа, то тут чтение числа как числа (т.е. scanf ("%d", ...)) вам не поможет никак. Для этого число придется читать как строку и потом уже вручную анализировать: подсчитывать вручную количество введенных ведущих нулей, запоминать его отдельно и потом использовать при выводе.

Поэтому возникает вопрос о том, что именно нужно сделать: фиксированное количество ведущих нулей при выводе? Или именно то количество нулей, которое использовалось при вводе?
0
15 / 12 / 7
Регистрация: 04.02.2017
Сообщений: 475
13.02.2017, 08:05  [ТС] 7
Есть номер паспорта там 9 цифр стоит не меньше не больше, есть номера которые начинаються с любых от 1 до 9 цифр если в номере присутствует 8 цифр то я обязательно должен довести до 9 цифр спомощью нуля слева. Соответственно это я ввожу цифры и дополняю
0
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
13.02.2017, 08:21 8
FerrariF70, так что ли?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define N 9
int main()
{
    char str[N], c;
    int i, k = 0;
    puts("Enter ID,put 'e' for end");
    for(i = 0; i < N; i++){
        c = getche();
        if(c == 'e')
            break;
        while(c < '0' || c > '9'){
            puts("\nError!Correct and continue:");
            c = getche();
        }
        str[i] = c;
    }
    str[i] = '\0';
    putchar('\n');
    puts(str);
    if(i < N - 1){
        for(k = 0, i--; i >= 0; k++, i--)
            str[N - 1 - k] = str[i];
        for(i = N - 1 - k; i >= 0; i--)
            str[i] = '0';
        str[N] = '\0';
        putchar('\n');
        puts(str);
    }
    return 0;
}
0
15 / 12 / 7
Регистрация: 04.02.2017
Сообщений: 475
17.02.2017, 21:57  [ТС] 9
спасибо за код я понял что вы хотели написать. но дело в том что строки я ещё не учил а задача чисто математическая там нужно потом умножать каждую цифру. но это не важно уже. я понял что не возможно сделать цифру 0 как саму цифру чтоб программа считывала её не за символ а за цифру.

а задача такая если интересно есть номер паспорта например

123456789
под каждой цифрой пишем последовательно 1 2 1 2 1 2 и так до 9.
потом умножаем номер паспорта на эти цифры.
каждую цифру умноженную мы складываем если например цифру 8 умножить на 2 будет 16, складываем 1+6=7 и так с каждой цифрой если она двузначная.
потом все цифры которые были приплюсованные мы их складываем и программа должна проверять если число делиться на 10 без остатка то паспорт верный если нет то не правильный паспорт.))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2017, 21:57
Помогаю со студенческими работами здесь

Если в дробной части числа меньше 4-х цифр, то дополнить ее нулями до 4-х цифр
Текст включает в себя список десятичных чисел, целая и дробная часть которых разделены точкой. Как...

Проверить как изменится количество разрядов в числе M по сравнению с количеством разрядов числа N
Дано натуральное число N. Определить M=N! Проверить как измениться количевство разрядов в числе M...

Проверить, как изменилось количество разрядов в числе M по сравнению с количеством разрядов числа N
Выручайте....Дано натуральное число N. Определить M=N!. Проверить, как изменилось количество...

выявлять числа, у которых сумма чётных разрядов равна сумме нечётных разрядов
помогите решить задачку: До получения исла равного 0 выявлять числа, среди последовательносьти из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru