Gentagede cifre..

Tags:    c++

Hejsa alle sammen, jer er ny herinde så jeg ved ikke om jeg opretter mit indlæg det rigtige sted. Nårh, men mit problem er følgende:

jeg har lavet et program som jeg så skal modificere (ifølge min lærer).

jeg bruger programmet Eclipse, C++

mit Program:

/* Checks numbers for repeated digits */

#include <stdbool.h> /* C99 only */
#include <stdio.h>#
int main(void)
{
bool digit_seen[10] = {false};
int digit;
long n;

printf("Enter a number: ");
scanf("%ld", &n);
while(n>0) {
digit = n % 10;
if (digit_seen[digit])
break;
digit_seen[digit] = true;
n /= 10;
}

if (n > 0)
printf("Repeated digit\n");
else
printf("No repeated digit\n");
return 0;
}





8 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hvad er spørgsmålet?

(Eclipse er en editor, det er nok vigtigere at vide hvilken compiler du bruger, der er dog ikke noget compiler specifikt her.)



Spørgsmålet er hvordan jeg kan modificere programmet så det viser de gentagende cifre.



Jeg bruger en C++ compiler hvis det er det du spørger om.



Ok, nu forstår jeg.

Jeg ville nok lave digit_seen om til en int, og bare tælle hvor mange gange de enkle cifre er der. Hvis der er der mere end én gang er det gentagne cifre.

Så noget i stil med:
Fold kodeboks ind/udKode 


Det var mere hvilken c++ kopiler, der var vigtigt.



okay ja det kan jeg godt se, men hvordan kommer hele koden til at se ud samlet??



Jeg synes at du skal prøve at sætte det sammen, og poste resultatet hvis du ikke kan få det til at spille.



Okay jeg har prøvet med følgende kode, men kan bare ikke få det til at virke:

#include <stdio.h>#
int main(void)
{
int digit_seen;
long n;
fflush(stdout);

printf("Enter a number: ");
scanf("%ld", &n);
while(n>0)
{
digit = n % 10;
digit_seen[digit]++;
n /= 10;
}
for(n = 0; n < 10; n++)
if(digit_seen[n] > 1)
printf("Gentaget ciffer: %d\n", n);
printf("No repeated digit\n");
return 0;
}


hvad er det jeg gør forkert???



digit_seen skal være et array af 10 int, disse skal være initialiseret til 0:
int digit_seen[10] = {0};

Du mangler at erklære digit:
int digit;

Så skulle den første del køre.

Så mangler du bare at finde ud af om der er nogen cifre der er repeteret, som det er nu skriver du altid "No repeated digit", uanset om der er.

Start med at oprette en variabel:
bool anyRepeated = false;

I loopen hvor du checker om et ciffer har været der mere end én gang sætter du flaget til true hvis der har:
Fold kodeboks ind/udKode 


Så kan du bruge variblen:
Fold kodeboks ind/udKode 




t