11/03/2017, 19:15
11/03/2017, 20:25
#include <stdio.h>
#define STRLEN 100
int main(void) {
char str[STRLEN];
int repeat[10] = { };
printf("Inserisci i numeri (senza spazi): ");
scanf("%s", str);
for (size_t i = 0; str[i] != '\0'; i++) {
int num = ((int) str[i]) - 48;
//printf("%d", num);
if (num < 10)
repeat[num]++;
else
puts("!!");
}
printf("%s", "I numeri ripetuti sono: ");
int j = 0;
for (size_t i = 0; i < 10; i++) {
if (repeat[i] > 1) {
j++;
printf("%d ", i);
}
}
if (!j) {
printf("Nessun numero ripetuto!");
}
puts("");
}
11/03/2017, 21:32
12/03/2017, 15:56
12/03/2017, 18:27
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
fputs("Enter a number: ", stdout);
// Ignore spaces before the number
int c = getc(stdin);
while(isspace(c)) { c = getc(stdin); }
// Test if a number has been given
if (!isdigit(c)) {
fputs("Invalid input.", stderr);
return EXIT_FAILURE;
}
// Count digits
int digit_count[10] = { 0 };
while (isdigit(c)) {
digit_count[c - '0']++;
c = getc(stdin);
}
// Print digits repeated multiple times
fputs("Repeat digit: ", stdout);
for (char i = 0; i < 10; ++i) {
if (digit_count[i] > 1) {
putc('0' + i, stdout);
}
}
puts("");
}
printf("%s", "I numeri ripetuti sono: ");
// è equivalente al seguente:
printf("I numeri ripetuti sono: ");
// o a
fputs("I numeri ripetuti sono ", stdout);
12/03/2017, 18:53
apatriarca ha scritto:Non c'è alcuna garanzia che i caratteri siano in ASCII.
apatriarca ha scritto:La lettura di una stringa usando scanf è una pessima idea a meno di inserire anche la dimensione massima che si può scrivere in tale stringa. La stringa di formato nel tuo caso avrebbe per esempio dovuto essere "%99s". Ma come ho mostrato nel mio codice non c'è alcuna ragione di avere una dimensione massima in quanto si può semplicemente leggere un carattere per volta.
15/03/2017, 19:58
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.