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??
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..
:)
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..:)
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;
}
#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)
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
Attenzione che getch e clrscr non sono funzioni standard !!!
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!
sei andato su questo sito (http://ioi.dsi.unimi.it/problemi/) e qua (http://www.olimpiadi-informatica.it/) ??
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.