PDA

View Full Version : [C] Programmi vari per un neofita


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?

cionci
04-02-2010, 17:48
Uso Dev-C++ con Windows XP SP3.

Elimina Dev-C++ dal sistema. E' un obbrobrio.
Installa Code::Blocks: http://www.codeblocks.org/downloads/5#windows (la versione con MinGW).
Dopo che l'hai fatto partire una volta, aggiorna Code::Blocks ad una nightly build. Ad esempio questa: http://forums.codeblocks.org/index.php/topic,11875.0.html
Basta scaricare le dll e l'eseguibile e metterli nella cartella di Code::Blocks.

fero86
04-02-2010, 18:26
i primi due programmi dovrebbero essere giusti, che output ti danno?

gli altri due non mi va di guardarli, superano la mia soglia di solerzia :asd:

per il fatto che ti si chiude la console prima che tu possa vedere il risultato: in fase di esercitazione metti una getchar() finale, in sede d'esame non sará un problema; tipicamente i professori di Programmazione 1 o esami analoghi correggono i compiti con un tool automatico che si attacca agli standard streams del programma da correggere. altrimenti avrai comunque una specifica: se il programma dovrá essere usato da un essere umano le cose sono due, o l'essere umano lo avvia da un prompt dei comandi di Windows o terminale Linux, o si rende conto che senza la getchar() finale il programma si chiude immediatamente dopo che ha finito.

aliasalberto
04-02-2010, 18:45
Innanzitutto grazie per le risposte.:)

Elimina Dev-C++ dal sistema. E' un obbrobrio.
Installa Code::Blocks: http://www.codeblocks.org/downloads/5#windows (la versione con MinGW).
Dopo che l'hai fatto partire una volta, aggiorna Code::Blocks ad una nightly build. Ad esempio questa: http://forums.codeblocks.org/index.php/topic,11875.0.html
Basta scaricare le dll e l'eseguibile e metterli nella cartella di Code::Blocks.

Fatto. Ora ho un problema con il plug-in wxSmithAui.dll, mi dà errore nel caricamento quando avvio il programma.:doh: Inoltre non mi fa la build dei programmi che scrivo, quindi non li posso lanciare.

cionci
04-02-2010, 19:21
Scusa, mi ricordavo male la procedura.
Segui queste istruzioni: http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_nightly_build_on_Windows

Ovviamente i file della nightly build scaricali direttamente dal post del forum che ti avevo già linkato.
Per compialre il tuo sorgente devi creare un progetto.

aliasalberto
04-02-2010, 20:21
Non va. Risolto il problema del plug-in, continuo a non riuscire a compilare e avviare.:muro:

cionci
05-02-2010, 07:30
Non va. Risolto il problema del plug-in, continuo a non riuscire a compilare e avviare.:muro:
Hai creato un nuovo progetto ? Prova ad aggiungere il percorso in cui si trova il compilatore alla variabile d'ambiente PATH di Windows.