aliasalberto
04-02-2010, 16:37
Ciao, da poco mi sono approcciato allo studio del linguaggio di programmazione C e purtroppo sto incontrando alcune difficoltà. Venendo subito all'aspetto pratico, ho necessità di fare un po' di pratica mettendo su dei programmi elementari. Il problema è che a volte non riesco a ottenere i risultati che spero, o perché non ottengo nessuna risposta dal programma o perché essa è sbagliata.
Ecco qualche esempio:
*per contare i caratteri
#include <stdio.h>
main()
{
long nc;
for (nc = 0; getchar() != EOF; ++nc)
printf("%ld\n", nc);
}
*per contare le righe
#include <stdio.h>
main()
{
int c, nl;
nl = 0;
while ((c=getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
*per contare cifre, spazi vuoti e altro
#include<stdio.h>
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= 9)
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else ++nother;
printf ("cifre= ");
for (i = 0; i < 10; ++i)
printf (" %d", ndigit[i]);
printf (", spazi bianchi = %d, altri = %d\n", nwhite, nother);
}
*per elevare a potenza
#include<stdio.h>
int power(int m, int n);
/*esegue un test della funzione power*/
main()
{
int i;
for (i=0; i < 10; ++i)
printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
/* power: eleva la base alla n-esima potenza; n >= 0*/
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}
I risultati che ottengo non sono coerenti con quello che mi aspetto. Dove ho sbagliato? Inoltre, capita che a volte i programmi si aprano e si chiudano una frazione di secondo dopo (come ad esempio quello della potenza), senza che abbia la possibilità di visionare il risultato finale; ho risolto aggiungendo un comando vuoto alla fine, ma in sede d'esame non posso fare una roba del genere.
Uso Dev-C++ con Windows XP SP3.
Grazie.:help:
EDIT: Mi sono accorto ora che l'operatore OR (¦¦), che ho erroneamente sostituito con "||", mi viene segnalato come errore di sintassi dal programma. Come lo inserisco?
Ecco qualche esempio:
*per contare i caratteri
#include <stdio.h>
main()
{
long nc;
for (nc = 0; getchar() != EOF; ++nc)
printf("%ld\n", nc);
}
*per contare le righe
#include <stdio.h>
main()
{
int c, nl;
nl = 0;
while ((c=getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
*per contare cifre, spazi vuoti e altro
#include<stdio.h>
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; ++i)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
if (c >= '0' && c <= 9)
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else ++nother;
printf ("cifre= ");
for (i = 0; i < 10; ++i)
printf (" %d", ndigit[i]);
printf (", spazi bianchi = %d, altri = %d\n", nwhite, nother);
}
*per elevare a potenza
#include<stdio.h>
int power(int m, int n);
/*esegue un test della funzione power*/
main()
{
int i;
for (i=0; i < 10; ++i)
printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
/* power: eleva la base alla n-esima potenza; n >= 0*/
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}
I risultati che ottengo non sono coerenti con quello che mi aspetto. Dove ho sbagliato? Inoltre, capita che a volte i programmi si aprano e si chiudano una frazione di secondo dopo (come ad esempio quello della potenza), senza che abbia la possibilità di visionare il risultato finale; ho risolto aggiungendo un comando vuoto alla fine, ma in sede d'esame non posso fare una roba del genere.
Uso Dev-C++ con Windows XP SP3.
Grazie.:help:
EDIT: Mi sono accorto ora che l'operatore OR (¦¦), che ho erroneamente sostituito con "||", mi viene segnalato come errore di sintassi dal programma. Come lo inserisco?