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 :)
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]);
}
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..
Su sourceforge ne trovi in quantita', oppure sui siti delle distribuzioni linux
e in mille altri posti.
Oppure vai su
http://www.google.com/codesearch
e cerchi lang:c, eventualmente insieme ad altre parole.
Mh va bene grazie, molto utile il motore di ricerca per suorce codes
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.