PDA

View Full Version : Esercizi per imparare il C....


The Incredible
11-11-2003, 18:06
mi date qualche consiglio su esercizi da provare a fare per esercitarmi per il prossimo esame di programmazione..
Grazie
Danilo

The Incredible
11-11-2003, 19:04
per ora provo a fare una calcolatrice ..
appena finita posterò il codice...
altri esercizi per esercitarsi??

Luc@s
11-11-2003, 19:07
creare una lista che gestisca degli appentamenti(aggiunta, cancellazione, modifica) partendo da:
typedef struct
{
char * nome;
int phone;
Agenda * next;
}Agenda;



:)

The Incredible
11-11-2003, 19:26
Originariamente inviato da Luc@s
creare una lista che gestisca degli appentamenti(aggiunta, cancellazione, modifica) partendo da:
typedef struct
{
char * nome;
int phone;
Agenda * next;
}Agenda;



:)

ok magari con la scrittura e la modifica su file.txt..

:)

Luc@s
11-11-2003, 19:28
Originariamente inviato da The Incredible
ok magari con la scrittura e la modifica su file.txt..

:)

ottima idea!
Poi posta qui il codice che puo servire ad altri.

The Incredible
11-11-2003, 19:34
Originariamente inviato da Luc@s
ottima idea!
Poi posta qui il codice che puo servire ad altri.

certo..:)

Luc@s
11-11-2003, 19:36
Originariamente inviato da The Incredible
certo..:)

se ti serve una mano ho miei codici su liste semplici e bilaterali:D

The Incredible
11-11-2003, 19:52
Calcolatrice:



#include<stdio.h>
main(){
/*Calcolatrice*/
float primo,secondo,risultato;
char op;
int errore=0;//variabile di controllo per la divisione

printf("***************Calcolatrice**************\n");
//Digitare numero operazione numero2 seguiti da uno spazio
printf("Digitare l'operazione\n");

scanf("%f %c %f",&primo,&op,&secondo);

if (op=='-'){risultato=primo-secondo;}
if (op=='+'){risultato=primo+secondo;}
if (op=='*'){risultato=primo*secondo;}
if (op=='/'){
if (secondo==0){errore=1;}
else{risultato=primo/secondo;}
}

//Stampa del risultato;
if (errore==0) printf("Il risultato dell'operazione e': %.1f",risultato);
else printf("Si e' verificato un errore!");
return 0;
}

Luc@s
11-11-2003, 20:10
#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>

using namespace std;
// Liste bilaterale
typedef struct SList
{
int irq;
SList *next;
SList *prev;
}Lista;

int main( )
{
Lista prima, seconda, terza, quarta, quinta;
/* definisco */
prima.irq = 9;
seconda.irq = 8;
terza.irq = 7;
quarta.irq = 6;
quinta.irq = 5;
/* concateno creando la lista*/
prima.next = &seconda;
prima.prev = NULL;
// ----------
seconda.next = &terza;
seconda.prev = &prima;
// ----------
terza.next = &quarta;
terza.prev = &seconda;
// -----------
quarta.next = &quinta;
quarta.prev = &terza;
// -----------
quinta.next = NULL; // ultimo anello nullo, cosi la lista e finita
quinta.prev = &quarta;
Lista *primoel = &prima;
// stampa
Lista *cercare = primoel;
const unsigned indicenodo = 4;
for( unsigned i=0; i < indicenodo; i++ )
{
cercare = cercare->next;
}
cout << cercare->irq << "\n";
system( "PAUSE" );
return 0;
}

The Incredible
12-11-2003, 09:19
Devo trovare qualche altro esercizio da fare un pòpiù semplice..
per quello delle liste degli appuntamenti sono un pò indietro come preparazione... e ancora nn in grado di farlo..

Qualche idea su esercizio da fare??

Manson666
12-11-2003, 10:36
Se ti interessa ti posso dire gli esercizzi che facciamo ad informatica per l'esame di C

Per il momento abbiamo fatto (in ordine di difficoltà):

1)un programma che trova un numero compreso tra 0 e 1000 nel minor numero di tentativi possibili
2)il programma per giocare al MasterMind
3)Il gioco del Tris
4)Il gioco del Forza4

Questo è l'indirizzo dove puoi trovare tutte le specifiche rispetto i programmi e le soluzioni:
http://twiki.dsi.uniroma1.it/twiki/view/Programmazione1/WebHome

Gli ultimi due sono molto utili per esercitarsi a lavorare con le matrici

The Incredible
12-11-2003, 11:11
Originariamente inviato da Manson666
Se ti interessa ti posso dire gli esercizzi che facciamo ad informatica per l'esame di C

Per il momento abbiamo fatto (in ordine di difficoltà):

1)un programma che trova un numero compreso tra 0 e 1000 nel minor numero di tentativi possibili
2)il programma per giocare al MasterMind
3)Il gioco del Tris
4)Il gioco del Forza4

Questo è l'indirizzo dove puoi trovare tutte le specifiche rispetto i programmi e le soluzioni:
http://twiki.dsi.uniroma1.it/twiki/view/Programmazione1/WebHome

Gli ultimi due sono molto utili per esercitarsi a lavorare con le matrici

Grazie mille..

la pagina del mio corso è:


questo (http://www.disi.unige.it/laureenuove/programs/Prog_02.html)

cos1950
12-11-2003, 18:14
Ti propongo il Crivello di Eratostene... algoritmo che trova tutti i numeri primi minori o al più uguali ad un intero passato in input:

/***************************************************************************
* CRIVELLO di Eratostene: il programma cerca tutti gli interi *
* primi minori o al più uguali a quello passato in input *
**************************************************************************/

#include <stdio.h>
#include <conio.h>

main()
{
/* Zona delle dichiarazione delle variabili: */

int i, primi[2000], num, j, nprimi, divisibile;

nprimi = 1; /* Contatore dei numeri primi trovati; uno solo: 2 */
primi[0] = 2; /* Numero primo (2) trovato collocato all'inizio *
* dell'array dei numeri primi */


clrscr(); /* Cancella lo schermo prima di iniziare; si può usare anche system("cls"); */

printf(" Digitare il numero max del quale si vogliono determinare \n");
printf(" tutti i primi minori: ");

/*
Visualizza il messaggio per l'utente, sull'azione da compiere */


scanf("%d", &num); /* prende da tastiera il numero in oggetto */
/* e lo colloca in num, passata per indirizzo */

printf("\n%9d ", primi[0]); /* stampa l'unico num. primo trovato (2) */


/* For che prende in esame tutti i numeri da 3 a num e ne testa la
loro divisibilità per i primi già trovati */

for (i = 3; i <= num; i++)
{
divisibile = 0; /* Condizione iniziale di non-divisibilità */

/* Questo for considera tutti i primi già trovati */
for (j=0; j < nprimi; j++)
if (!(i%primi[j])) divisibile = 1;

/*
Il controllo di divisibilità è fatto da i%primi[j], che ritorna il
resto della divisione tra i e primi[j]; se il resto è 0 (!) primi[j]
è un divisore di i e quindi i non è primo.
In tal caso la variabile divisibile è posta uguale a 1 e sta ad
indicare che è i non è primo (e va scartato)
*/

/*
Terminato il for, il numero i corrente, è stato testato con tutti
i divisori primi già trovati; se divisibile è ancora 0, significa
che non c'è nessun divisore di i e quindi i è primo.
*/

if (!divisibile)
printf("%9d ", primi[nprimi++] = i);

/*
In tal caso il numero i è collocato nell'array primi[], mediante
l'assegnazione primi[nprimi++] = i, alla posizione data dal contatore
nprimi, viene incrementato nprimi e stampato il valore del numero
primo trovato.
*/

}
printf("\n\n I numeri primi trovati sono: %d in totale\n", nprimi);
getch();
}

supertondo
12-11-2003, 19:30
vai sul sito delle Olimpiadi internazionali dell'informatica. C'è di che divertirsi e scervellarsi.

Ciao

cionci
12-11-2003, 19:41
Attenzione che getch e clrscr non sono funzioni standard !!!

cionci
12-11-2003, 19:47
Se vuoi notevolemnte velocizzare il tuo programma:

for (j=0; j < nprimi && !divisibile; j++)
if (!(i%primi[j])) divisibile = 1;

The Incredible
12-11-2003, 23:51
Originariamente inviato da supertondo
vai sul sito delle Olimpiadi internazionali dell'informatica. C'è di che divertirsi e scervellarsi.

Ciao


ora lo cerco..:)

The Incredible
13-11-2003, 12:45
programma che indovina il numero da te pensato in minor tentativi possibili..




#include <stdio.h>
#define MINVAL 0
#define MAXVAL 100
//Programma che indovina il numero pensato
main() {
int indiceinf=MINVAL,indicesup=MAXVAL;
int num= MAXVAL/2;
int risposta=1;
int ntentativi=0;


while (risposta!=0){
//Digitare -1 per <, 1 per > e 0 se il numero è =
printf("Il numero e' < = > di %d\n",num);
scanf("%d",&risposta);
if(risposta==1){indiceinf=num+1;
num=indiceinf+((indicesup-indiceinf)/2);
}
if(risposta==-1){indicesup=num-1;
num=indicesup-((indicesup-indiceinf)/2);
}
ntentativi++;
if((indiceinf==num)and(indicesup==num)){risposta=0;}
}


printf("Il numero da te pensato e' %d trovato in %d tentativi",num,ntentativi);

}

The Incredible
05-12-2003, 12:11
Ragazzi.. della parte di algoritmi del primo compitino ho preso 30!

mi consigliate qualche eserciz da fare?

The Incredible
15-12-2003, 15:51
up

VegetaSSJ5
27-12-2003, 23:01
mi interessa!

cisc
28-12-2003, 21:34
sei andato su questo sito (http://ioi.dsi.unimi.it/problemi/) e qua (http://www.olimpiadi-informatica.it/) ??