Welp, мне поручено написать программу, которая, если выполняется с номером в командной строке, подсчитывает разные цифры и выдает повторяющиеся, например:Исправление ошибки в моей простой цифровой программе (C)
./digitcount 31344842
"3" occurs 2 times.
"4" occurs 3 times.
Однако, я просто не могу заставить его работать:
int n = input;
int digit_count = 0;
while(n!=0) //count amount of digits in input
{
digit_count++;
n /= 10;
}
int digit_array[digit_count]; //create array for digits
int i = digit_count;
while(i!=0) //assign digits to array elements
{
digit_array[i-1] = input % 10;
input /= 10;
i--;
}
//count number of times a digit has appeared
int digit_amount[10] = {0,0,0,0,0,0,0,0,0,0};
int digit = 0;
while(digit<10)
{
int j = 0;
while(j <= digit_count)
{
if(digit_array[j] == digit)
{
digit_amount[j]++;
}
j++;
}
digit++;
}
//final output
printf("Repeated digits:\n");
int k = 0;
while(k<10)
{
if(digit_amount[k] >= 2)
{
printf("\"%i\" occurs %i times.\n",k,digit_amount[k]);
}
k++;
}
Когда я скомпилировать программу, никаких ошибок/предупреждений не отображаются, но при исполнении я только получаю:
Repeated digits:
Я пробовал довольно много с ним и понял, что все работает до тех пор, пока программа не начнет подсчитывать количество цифр, тогда каждое число считается включенным один раз и только один раз.
Кто-нибудь знает, что произошло здесь? PS: Я довольно скраб при программировании, поэтому, пожалуйста, любезно мне, если я сделал некоторые действительно тупой ошибки: P
EDIT:
Часть отсутствует на самом верху:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[])
{
int input = atoi(argv[1]);
Как и то, что 'input' установлен? Пожалуйста, покажите [минимальный полный и проверяемый пример] (http://stackoverflow.com/help/mcve) – kaylum
int digit_array [digit_count]; не работает .. читать на динамически распределенных массивах (malloc) – gidim
Пожалуйста, включите ваш метод 'main()'. Например, вы правильно конвертируете 'argv [1]' (т. Е. Число) из 'char *' в 'int'? – tobiasvl