Даже если этот вопрос задан в миллион раз, я просто не нашел ответа, который действительно помогает моему делу, или я просто не вижу решения.Возврат к началу цикла for в C
Мне задали задачу сделать программу, которая принимает целое число и подсчитывает, сколько раз каждая цифра появляется в ней, а также не отображая одну и ту же информацию дважды. Поскольку мы работаем с массивами, в настоящее время мне приходилось делать это с помощью массивов, конечно, так как мой код запутан из-за моего отсутствия знаний в C. Я попытаюсь объяснить мой мыслительный процесс вместе с предоставлением вам кода.
После ввода числа я взял каждую цифру, разделив число на 10 и поместив эти цифры в массив, затем (поскольку массив обратный), я изменил обратный массив, чтобы он выглядел лучше (хотя это не требуется). После этого у меня есть множество отвратительных циклов, в которых я пытаюсь перебрать весь массив, сравнивая первый элемент со всеми элементами снова, поэтому для каждого элемента массива я сравниваю его с каждым элементом массива снова , Я также добавляю проверенный элемент в новый массив после каждой проверки, поэтому я могу в первую очередь проверить, был ли элемент сопоставлен раньше, поэтому мне не нужно все это делать, но это моя проблема. Я пробовал массу манипуляций с продолжением или goto, но я просто не могу найти решение. Поэтому я просто использовал ** EDIT: return 0 **, чтобы убедиться, что моя идея была хорошей в первую очередь, и мне кажется, что это так, мне просто не хватает знаний, чтобы вернуться к началу цикла for. Помоги мне, пожалуйста?
// С возвратом 0 программа полностью останавливается после попытки проверить цифру 1, поскольку она уже проверена. Я хочу, чтобы он продолжал проверять другие, но со многими версиями добавления, он просто не выполнял эту работу. //
/// Пытался сделать код лучше. ///
#include <stdio.h>
#define MAX 100
int main()
{
int a[MAX];
int b[MAX];
int c[MAX];
int n;
int i;
int j;
int k;
int counter1;
int counter2;
printf("Enter a whole number: ");
scanf("%i",&n);
while (1)
{
for (i=0,counter1=0;n>10;i++)
{
a[i] = n%10;
n=n/10;
counter1+=1;
if (n<10)
a[counter1] = n;
}
break;
}
printf("\nNumber o elements in the array: %i", counter1);
printf("\nElements of the array a:");
for (i=0;i<=counter1;i++)
{
printf("%i ",a[i]);
}
printf("\nElements of the array b:");
for (i=counter1,j=0;i>=0;i--,j++)
{
b[j] = a[i];
}
for (i=0;i<=counter1;i++)
{
printf("%i ",b[i]);
}
for (i=0;i<=counter1;i++)
{
for(k=0;k<=counter1;k++)
{
if(b[i]==c[k])
{
return 0;
}
}
for(j=0,counter2=0; j<=counter1;j++)
{
if (b[j] == b[i])
{
counter2+=1;
}
}
printf("\nThe number %i appears %i time(s)", b[i], counter2);
c[i]=b[i];
}
}
почему в то время как (1) и ломаться. они в основном просто отменяют друг друга, это просто дополнительный код, который ничего не делает. –
Вы отвечаете на мой вопрос, и это не полезно в любом случае ... – dragoljub
Это не ответ, это комментарий –