PDA

View Full Version : [C] Reperire programmi


Veon
22-01-2007, 19:24
Salve ragazzi e ragazze :D

Sapreste dirmi un sito dal quale poter reperire programmi scritti in C?

Visto che volente o nolente devo imparare a programmare in C una serie di programmi già fatti mi sarebbe d'aiuto al fine di comprendere meglio i meccanismi di funzionamento :fagiano:

Vi ringrazio in anticipo...

RaouL_BennetH
22-01-2007, 19:26
solo facendo una ricerca generale viene fuori questo:

http://www.google.it/search?hl=it&q=c+programming+source+code&btnG=Cerca+con+Google&meta=


Spero tu possa trovare qualcosa di utile :)

Veon
22-01-2007, 19:36
Si i motori di ricerca li ho provati :p

Solo che ho trovato solo siti con qualche programma (magari specifico), non una vera e proprio raccolta composta da svariati programmi!! :)

mapomapo
22-01-2007, 21:37
secondo me impieghi meno tempo a prendere un libro, studiare velocemente la sintassi e a provare a programmare tu che non ad interpretare del codice scritto da un altro programmatore...
comunque ti lascio un po' di sorgenti, dovessero servirti..


//{}
/*Inserita una stringa di caratteri da 0 a 9, intervallata da un operatore * o +, far eseguire l'espressione dopo averla opportunamente convertita*/

#include <stdio.h>

int main()
{
int i=1,j=1; //Contatori.."i" per scorrere il vettore, "j" per l'user-friendly..
char espr[11]; //Stringa di input dell'utente..
int esprnum[11]; //Stringa di conversione..
int risultato=0;

printf("Inserire il valore %d (da 0 a 9): ", j); //Lascio fuori il primo valore, l'array è dispari..
do
espr[0]=getchar();
while(espr[0]!='0' && espr[0]!='1' && espr[0]!='2' && espr[0]!='3' && espr[0]!='4' && espr[0]!='5' && espr[0]!='6' && espr[0]!='7' && espr[0]!='8' && espr[0]!='9'); //Facciamo inputtare solo caratteri numerici..

j++; //Abbiamo inserito il primo valore, incrementiamo..

while(i<11)
{
printf("Inserire un operatore valido (* o +): ");
do
espr[i]=getchar();
while(espr[i]!='*' && espr[i]!='+'); //Facciamo inputtare solo i due operatori permessi..
i++;
printf("Inserire il valore %d (da 0 a 9): ", j);
do
espr[i]=getchar();
while(espr[i]!='0' && espr[i]!='1' && espr[i]!='2' && espr[i]!='3' && espr[i]!='4' && espr[i]!='5' && espr[i]!='6' && espr[i]!='7' && espr[i]!='8' && espr[i]!='9'); //Come sopra..
i++;
j++; //Come sopra..
}

for(i=0;i<11;i++) //Inizializiamo l'array con tutti 0..
esprnum[i]=0;

for(i=0;i<11;i++)
switch(espr[i]) //Convertiamo i caratteri numerici nei corrispettivi interi..spostandoci nell'altro array..
{
case '0':
esprnum[i]=0;
break;
case '1':
esprnum[i]=1;
break;
case '2':
esprnum[i]=2;
break;
case '3':
esprnum[i]=3;
break;
case '4':
esprnum[i]=4;
break;
case '5':
esprnum[i]=5;
break;
case '6':
esprnum[i]=6;
break;
case '7':
esprnum[i]=7;
break;
case '8':
esprnum[i]=8;
break;
case '9':
esprnum[i]=9;
break;
default: //Col default saltiamo gli "operatori"..
break;
}

for(i=0;i<11;i++)
if(espr[i]=='*') //Controlliamo che l'array dell'utente abbia un operatore "*"..
{
esprnum[i+1]=esprnum[i-1]*esprnum[i+1]; //Moltiplichiamo i termini a sx e a dx dell'operatore..
esprnum[i-1]=0; //Cancelliamo il primo addendo..
}

for(i=0;i<11;i++)
risultato=risultato+esprnum[i]; //Sommiamo i termini rimasti nell'array..

printf("\nIl risultato dell'espressione e': %d\n", risultato);
return 0;

}



//{}
/*Dato un numero, fornire una scelta tramite uno switch e ripetere l'operazione finchè non viene digitato il carattere di escape Q*/
#include <stdio.h>
#include <math.h>

int main()
{
int numero;
char scelta;
int x;

do
{
printf("Inserire un numero: ");
scanf("%d", &numero);
printf("\n");
printf("Prego effettuare una scelta\n"); //Stampiamo il menu..
printf("a. Radice quadrata del numero\n");
printf("A. Numero elevato al quadrato\n");
printf("@. Numero elevato a x\n");
printf("Q. Esci del programma\n\n");
do //Escamotage per ovviare al \n memorizzato nel buffer dalla precedente scanf..
scelta=getchar();
while(scelta=='\n');
switch(scelta)
{
case 'a':
printf("La radice quadrata di %d e': %f\n", numero, sqrt(numero));
break;

case 'A':
printf("Il quadrato di %d e': %f\n", numero, pow(numero,2));
break;
case '@':
{
printf("Inserire l'esponente a cui elevare %d (inserire un num. intero): ", numero);
scanf("%d", &x);
printf("%d elevato a %d e': %f\n", numero, x, pow(numero,x));
}
break;
default:
break;
}
}while(scelta!='Q'); //Carattere di quit..
}



/*Esempio di semplici funzioni di caricamento e stampa a schermo di un array*/
#include <stdio.h>
#define N 10

void carica_vettore(int []);
void stampa_vettore(int []);

int main()
{
int v[N];

carica_vettore(v);
printf("\n");
stampa_vettore(v);

}

void carica_vettore(int a[])
{
int i=0;
for(;i<N;i++)
{
printf("Inserire il %d° valore: ", i+1);
scanf("%d", &a[i]);
}
}

void stampa_vettore(int a[])
{
int i=0;
for(;i<N;i++)
printf("Il %d° valore e': %d\n", i+1, a[i]);
}



/*Dati un massimo di 100 punti, calcolare la lunghezza della linea spezzata o, se reinserito il primo valore, il perimetro della figura ricavata*/
#include <stdio.h>
#include <math.h>

int main()
{
int x[100],y[100];
float p[99];
int i=0,j=0;
int flag=0;
float perimetro=0;

printf("\nDati un massimo di 100 punti, calcolare la lunghezza della linea spezzata o,\n");
printf("se reinserito il primo valore, il perimetro della figura ricavata.\n\n");
printf("Inserire la %d^ ascissa: ", i+1); //Carichiamo il primo valore altrimenti ciao ciao flag :D
scanf("%d", &x[i]);
printf("Inserire la %d^ ordinata: ", i+1);
scanf("%d", &y[i]);
for(i=1;i<100 && flag==0;i++) //Carichiamo gli altri valori...ora la flag non inchiomma :P
{
printf("Inserire la %d^ ascissa: ", i+1);
scanf("%d", &x[i]);
printf("Inserire la %d^ ordinata: ", i+1);
scanf("%d", &y[i]);
if(x[i]==x[0] && y[i]==y[0]) //Un bel controllino, giusto per gradire.. :D:D
flag=1;
}
j=i; //Lode e gloria a questa piccola assegnazione xD
for(i=1;i<j;i++)
{
p[i-1]=sqrt(pow((x[i-1]-x[i]),2)+pow((y[i-1]-y[i]),2)); //Calcoliamo le distanze..geometria docet!
}
for(i=0;i<j;i++)
{
perimetro=perimetro+p[i]; //Un po' d'ordine, variabilizziamo il perimetro :D
}
if(flag==0)
printf("La lunghezza della linea è: %f\n", perimetro); //Tocco di fino, permettetemelo!
else
printf("Il perimetro della figura ricavata è: %f\n", perimetro);
}



//{}
/*Esempio utilizzo malloc*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
int n;
int *v;

printf("Quanti numeri? ");
scanf("%d", &n);
v=(int *)malloc(n*sizeof(int));

for(i=0;i<n;i++)
scanf("%d", &v[i]);

for(i=0;i<n;i++)
printf("%d\n", v[i]);
}

Veon
22-01-2007, 22:33
Grazie per i sorgenti...
Cmq il libro e la teoria la sto studiando, però se mi chiedo di fare funzioni arzigogolate trovo difficoltà..
Per questo cercavo sorgenti da cui prendere appunti..

lovaz
23-01-2007, 10:08
Su sourceforge ne trovi in quantita', oppure sui siti delle distribuzioni linux
e in mille altri posti.

lovaz
23-01-2007, 13:29
Oppure vai su
http://www.google.com/codesearch
e cerchi lang:c, eventualmente insieme ad altre parole.

Veon
23-01-2007, 23:05
Mh va bene grazie, molto utile il motore di ricerca per suorce codes