Как вывести количество чисел в c
Перейти к содержимому

Как вывести количество чисел в c

  • автор:

вычисление количества цифр целого введенного числа

Программа вычисляет количество цифр введенного числа. Вводим число (например 123), что же происходит дальше. Выражение num1/=10; делит число на 10 (123/10=12, дробная часть отбрасывается), произошла одна итерация, опять делит число на 10 (12/10=1, дробная часть отбрасывается), произошла вторая итерация. Опять делит число на 10 (1/10=0, дробная часть отбрасывается), произошла третья итерация. 0,1 не делит, так как переменная имеет целочисленный тип. Поэтому, на самом деле выводится не количество цифр, а количество итераций. Если ввести вещественное число (например 12,35), получится 47 итераций.

Как посчитать количество цифр в числе (число начинается на ноль)

Просто потому что если читать не строку, а число — то введете вы 00094 или 94 — в вашем x будет одно и то же число.

Отслеживать
ответ дан 12 дек 2019 в 14:36
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков

А как тогда после из него «взять» первую, вторую и последующие цифры? Мне вот например нужно чтобы цифры на парных местах додавались, на непарных перемножались и этого всего найти суму.

12 дек 2019 в 14:42

x[0] — первая цифра (как символ! чтобы получить ее числовое значение, нужно вычитать символ ноля — x[0]-‘0’ ), x[1] — вторая и так далее.

12 дек 2019 в 15:02
Как я понимаю это массив, но как вычитать символ ноля я так и не понял.
12 дек 2019 в 15:34
Я же написал: x[0]-‘0’ . Просто перенести в свой код можете? Выделить, Ctrl-C, Ctrl-V?
12 дек 2019 в 15:37

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.9.3159

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как вывести количество чисел в c

Определить количество чисел в строке c++

#include "stdafx.h" #include #include #include #include using namespace std; int main() < FILE *f; f=fopen("C:\\text.txt","r"); int x, n=4, s=0, k[100], i=1, t; while(!feof(f)) < fscanf(f,"%i",&x); k[i]=x; t=i; i++; >for(i=1; i cout

Собственно программа должна находить сумму чисел главной диагонали матрицы, которая находится в файле. С этим она успешно справляется но:
1)нужно определить её порядок для переменной ‘n’ чтобы в ручную её не задавать.
2)так же нужно\можно сделать динамическим массив k[]

Форумчанин

Регистрация: 03.10.2010

Сообщений: 321

Не понятно зачем вы используете C вместе с С++, они совместимы, однако имеют разные подходы.
Можно задавать размер массива перед самим массивом

ФАЙЛ
4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Или использовать контейнеры.

#include #include #include #include using namespace std; int main() < vectorarr; //Наш массив int n=0; //"Сторона" матрицы int sum=0; //Искомая сумма ifstream file; file.open("1.txt"); int temp; //Считываем количество элементов в первой строке и будем далее опираться на него while(!file.eof()) < file>>temp; arr.push_back(temp); > n = sqrt(arr.size()); file.close(); for(int i=0; i cout

Этот код рабочий только для квадратных матриц

Количество цифр

Время от времени перед программистом стает задача нахождения количества цифр в числе. Есть много способов решения этой задачи. В статье мы рассмотрим наиболее популярные из них.

Длина строки

Это очень простой вариант определения количества цифр, заключается в переводе числа в строковое представление с последующим определением длины строки.

public int CountDigitByString(int n) < return Math.Abs(n).ToString().Length; > 

Такой метод компактный и интуитивно понятный, однако он сильно проигрывает в быстродействии другим вариантам.

Десятичный логарифм

Использование десятичного логарифма для определения количества цифр в числе, позволяет производить вычисление за линейное время.

public int CountDigitsByLog10(int n) < return (n == 0) ? 1 : (int)Math.Log10(Math.Abs(n)) + 1; > 

Сравнение

Самый быстрый из приведенных методов.

private static readonly int[] Numbers = new [] < 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 >; public int CountDigitsByCompare(int n) < n = Math.Abs(n); for (var i = 0; i < Numbers.Length; i++) < if (n < Numbers[i]) < return i + 1; > > return 10; > 

Деление нацело

С использованием цикла

public int CountDigitsByDiv(int n) < var count = (n == 0) ? 1 : 0; while (n != 0) < n /= 10; count++; > return count; > 

Рекурсивно

public int CountDigitsByDivRecursive(int n) < return (n 9) ? 1 : CountDigitsByDivRecursive(n / 10) + 1; > 

Разбивка числа на отдельные цифры

Разбив число на отдельные цифры, мы получаем возможность нахождения:

  • количества цифр;
  • количества четных и нечетных;
  • количества различных(уникальных) цифр числа;
  • суммы цифр числа.
public Listint> IntToDigit(int n) < n = Math.Abs(n); var digits = new Listint>(); while (n > 0) < int digit = n % 10; n /= 10; digits.Add(digit); > return digits; > 

Количество четных

public int EvenCount(int n) < var digits = IntToDigit(n); var count = 0; foreach (var d in digits) < if (d % 2 == 0) < count++; >> return count; > //сокращенная форма записи с использованием Linq public int EvenCountLinq(int n) < return IntToDigit(n).Count(x => x % 2 == 0); > 

Количество нечетных

public int OddCount(int n) < var digits = IntToDigit(n); var count = 0; foreach (var d in digits) < if (d % 2 != 0) < count++; >> return count; > public int OddCountLinq(int n) < return IntToDigit(n).Count(x => x % 2 != 0); > 

Количество различных цифр в числе

public int CountUniqueDigits(int n) < var a = new int[9]; foreach (var d in IntToDigit(n)) < a[d]++; >var countUnique = 0; foreach (var x in a) < if (x > 0) < countUnique++; >> return countUnique; > 

Сумма цифр числа

public int SumDigits(int n) < var sum = 0; foreach (var d in IntToDigit(n)) < sum += d; >return sum; > //использование Linq сокращает запись public int SumDigitsLinq(int n) < return IntToDigit(n).Sum(); > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *