|
|
Esercizi semplici in codice C
Alcuni esercizi hanno le rispettive trace. Queste ultime sono importanti per capire il funzionamento del programma e per trovare eventuali errore.
/*Scrivere un algoritmo che dati in input N numeri determini la percentuale
dei positivi, dei negativi, dei pari e dei dispari 626c21g */
/*RIFORMULAZIONE
Scrivere un algoritmo che riceve dall'operatore:
-Un numero N intero positivo;
-N numeri interi (num);
E restituisce all'operatore:
-La percentuale dei numeri dispari 626c21g (p_disp);
-La percentuale dei numeri pari (p_pari);
-La percentuale dei numeri positivi (p_p);
-La percentuale dei numeri negativi (p_n); */
#include<stdio.h>
#include<conio.h>
void main()
/*INIZIO*/
/*FINCHE' (N>0) */
while (N<0);
/*positivo<-0*/
positivo=0;
/*negativo<-0*/
negativo=0;
/*pari<-0*/
pari=0;
/*dispari 626c21g <-0*/
dispari 626c21g =0;
/*conta<-0*/
conta=0;
/*MENTRE conta<N ESEGUI*/
while (conta<N)
/*p_p<-positivo*100/N*/
p_p=positivo*100/N;
/*p_n<-negativo*100/N*/
p_n=negativo*100/N;
/*p_disp<-dispari 626c21g *100/N*/
p_disp=dispari 626c21g *100/N;
/*p_pari<-pari*100/N*/
p_pari=pari*100/N;
/*Scrivi("La percentuale de numeri pari è",p_pari," invece quella dei numeri dispari 626c21g è",p_disp)*/
printf("La percentuale de numeri pari è %f invece quella dei numeri dispari 626c21g è %f \n ",p_pari,p_disp);
/*Scrivi("La percentuale dei numeri positivi è ",p_p,"invece quella dei numeri negativi è",p_n)*/
printf("La percentuale dei numeri positivi è %f invece quella dei numeri negativi è %f \n ",p_p,p_n);
/*FINE*/
Trace
N |
conta |
num |
positivo |
negativo |
pari |
dispari 626c21g |
resto |
p_p |
p_n |
p_disp |
p_pari |
MONITOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi qua.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
3>0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi un.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi un.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi un.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La percent.. |
|
|
|
|
|
|
|
|
|
|
|
|
La percent.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
/*ESERCIZIO 2-
Stampare la differenza tra l'altezza del più alto e del più basso di N fratelli
(N positivo inferiore a 10) solo nel caso in cui tale differenza non sia
compresa tra i 5 e i
RIFORMULAZIONE
Scrivere un algoritmo che riceve dall'operatore:
- Un numero N intero minore di 10;
- L'altezza di N fratelli reale positiva (ALT);
E restituisce all'operatore :
-La differenza tra l'altezza del più alto e del più basso nel caso sia compresa tra 5 e 9 (DIFF) o un messaggio;*/
#include<stdio.h>
#include<conio.h>
void main()
/*INIZIO*/
/*FINCHE' N>0 AND N<10*/
while ((N<0)&&(N>10));
/*Scrivi("Dammi l'altezza di un fratello")*/
printf("Dammi l'altezza di un fratello");
/*Leggi(ALT)*/
scanf("%d",&ALT);
/*conta<-1*/
conta=1;
8 /*minore<-ALT*/
minore=ALT;
/*maggiore<-ALT*/
maggiore=ALT;
/*MENTRE conta<N ESEGUI*/
while (conta<N)
/*DIFF<-maggiore-minore*/
DIFF=maggiore-minore;
/*SE DIFF>5 AND DIFF<10 ALLORA*/
if ((DIFF>5)&&(DIFF<10))
20 /*ScrivI("La differenza tra il più alto e il più basso è",DIFF)*/
printf("La differenza tra il più alto e il più basso è %d",DIFF);
/*ALTRIMENTI*/
else
21 /*Scrivi("La differenza non , compresa tra 5 e 10")*/
printf("La differenza non , compresa tra 5 e 10");
/*FINESE*/
/*FINE*/
Trace
N. IST. |
N |
conta |
ALT |
maggiore |
minore |
DIFF |
MONITOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi il num.. |
|
|
|
|
|
|
|
|
|
3>0 and 3<10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi l'altez.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi l'altez.. |
|
|
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi l'altez.. |
|
|
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3<3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VERO AND VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
La differenza .. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N. IST. |
N |
conta |
ALT |
maggiore |
minore |
DIFF |
MONITOR |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi il num.. |
|
|
|
|
|
|
|
|
|
-2>0 AND -2<10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi il num.. |
|
|
|
|
|
|
|
|
|
2>0 AND 2<10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi l'altez.. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1<2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Dammi l'altez.. |
|
|
|
|
|
|
|
|
|
FALSO |
|
|
|
|
|
|
|
VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2<2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FALSO AND VERO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La differenza .. |
/*ESERCIZIO 3 Scrivere un algoritmo che riceve dall'operatore:
-il numero N di terne di tipo intero con valori positivi
E restituisce all'operatore:
-le prime N terne di tipo intero positivi;*/
#include<conio.h>
#include<stdio.h>
void main()
/*INIZIO*/
/*FINCHE'(N>0)*/
while(N<0);
/*conta<-0*/
conta=0;
/*primo<-0*/
primo=0;
/*secondo<-1*/
secondo=1;
/*terzo<-0*/
terzo=0;
/*MENTRE (conta<N) ESEGUI*/
while (conta<N)
/*FINE*/
/*4.Scrivere un algoritmo che riceve dall'operatore:
un numero intero(numero)
E restituisce all'operatore:
il valore della radice quadrata di un numero di tipo reale(radice)
o un messaggio di errore se il numero S negativo */
# include <math.h>
# include <stdio.h>
# include <conio.h>
void main ()
/* ALTRIMENTI*/
else
/*scrivi("Non si pu. fare la radice di un numero negativo")*/
printf("Non si pu. fare la radice di un numero negativo");
/* FINESE*/
/*ESERCIZIO 4 Scrivere un algoritmo che riceve dall'operatore:
-un numero K intero positivo;
-un numero N intero positivo;
E restituisce all'operatore:
-la somma dei quadrati dei primi K numeri naturali successivi a un numero naturale N;*/
#include<conio.h>
#include<stdio.h>
void main()
while(K<0);
do
while(N<0);
conta=0;
N=N+1;
somma=N*N;
while(conta<K)
printf("la somma S %d",somma);
/*ESERCIZIO 5 Scrivere un algoritmo che dato in ingresso un numero
scriva in unscita se il numero è primo o no*/
#include<conio.h>
#include<stdio.h>
void main()
while(num<0);
conta=2;
div=0;
divisioni=0;
if(num!=1)
}
if(div>0)
printf("Il numero non S primo e si S scoperto dopo %d divisioni \n",divisioni);
else
printf("Il numero S primo e si S scoperto dopo %d divisioni",divisioni);
Alcuni esercizi sui vettori in codice C
ESERCIZIO 1
se in ingresso ho come dimensione 9
e ho come vettore 1,2,5,6,8,1,2,12,5
dovr. avere in uscita due vettori:
quello di posto pari 2,6,1,12
quello di posto dispari 626c21g 1,5,8,2,5
#include<stdio.h>
#include<conio.h>
#define POS1 0
#define DIM 150
#define DIM2 75
int ottieni_dimensione(int val);
void Inizializza(int V[DIM],int n,int dim);
void Caricamento(int V[DIM],int dim);
void posti_pari(int V[DIM],int v1[DIM2],int dim);
void posti_dispari 626c21g (int V[DIM],int v2[DIM],int dim);
void scrivi1(int vett1[DIM2],int dim);
void scrivi2(int vett2[DIM2],int dim);
void main()
int ottieni_dimensione(int val)
return(dim);
void Inizializza(int V[DIM],int n,int dim)
void Caricamento(int V[DIM],int dim)
void posti_pari(int V[DIM],int v1[DIM2],int dim)
printf("\n");
void posti_dispari 626c21g (int V[DIM],int v2[DIM],int dim)
void scrivi1(int vett1[DIM2],int dim)
void scrivi2(int vett2[DIM2],int dim)
ESERCIZIO 2
Scrivi un algoritmo che riceve dall'operatore:
-la dimensione del vettore
-un vettore di interi
-un numero x
E restituisce all'operatore:
-un vettore le cui componenti pari siano uguali a quelle di indice pari
del vettore moltiplicate per X e le componenti dispari 626c21g siano uguali a
quelle dispari 626c21g del vettore incrementate di X.
ESEMPIO
Se la dimensione del vettore S 5, il vettore S
e il numero X S = 2
il nuovo vettore sar.
#include<stdio.h>
#include<conio.h>
#define POS1 0
#define DIM 100
int ottieni_dimensione(int val);
void Inizializza(int V[DIM],int n,int dim);
void Caricamento(int V[DIM],int dim);
void moltiplica_pari(int V[DIM],int X,int dim);
void incrementa_dispari 626c21g (int V[DIM],int X,int dim);
void scrivi_ris(int V[DIM],int dim);
void main()
int ottieni_dimensione(int val)
return(dim);
void Inizializza(int V[DIM],int n,int dim)
void Caricamento(int V[DIM],int dim)
void moltiplica_pari(int V[DIM],int X,int dim)
void incrementa_dispari 626c21g (int V[DIM],int X,int dim)
void scrivi_ris(int V[DIM],int dim)
ESERCIZIO 3
Dato un vettore di N elementi, con N<=150, cancella l'elemento
di cui si conosce la posizione copiando su un altro vettore
tutte le componenti tranne quella da cancellare.
#include<stdio.h>
#include<conio.h>
#define POS1 0
#define DIM 150
int ottieni_dimensione(int val);
void Inizializza(int V[DIM],int n,int dim);
void Caricamento(int V[DIM],int dim);
int leggi_posizione(int dim);
void cancella_elemento(int Vett[DIM],int ris[DIM-1],int pos,int dim);
void scrivi1(int v[DIM-1],int dim);
void main()
int ottieni_dimensione(int val)
return(dim);
void Inizializza(int V[DIM],int n,int dim)
void Caricamento(int V[DIM],int dim)
int leggi_posizione(int dim)
return(pos);
void cancella_elemento(int Vett[DIM],int ris[DIM-1],int pos,int dim)
while(p<dim-1)
void scrivi1(int v[DIM-1],int dim)
ESERCIZIO 4
/* Dato un vettore di N elementi, con N<=50, inserisci un elemento
di cui si conosce la posizione X e stampa il nuovo vettore.
#include<stdio.h>
#include<conio.h>
#define POS1 0
#define DIM 50
int ottieni_dimensione(int val);
void Inizializza(int V[DIM],int n,int dim);
void Caricamento(int V[DIM],int dim);
int leggi_posizione(int dim);
void aggiungi_elemento(int Vett[DIM],int ris[DIM+1],int pos,int dim);
void scrivi1(int v[DIM+1],int dim);
void main()
int ottieni_dimensione(int val)
return(dim);
void Inizializza(int V[DIM],int n,int dim)
void Caricamento(int V[DIM],int dim)
int leggi_posizione(int dim)
return(pos);
void aggiungi_elemento(int Vett[DIM],int ris[DIM+1],int pos,int dim)
ris[p2]=el;
p2++;
while(p<dim+1)
void scrivi1(int v[DIM+1],int dim)
ESERCIZIO 5
ESEMPIO
Se la dimensione inserita è 8
il vettore S
e il numero da aggiungere nel vettore è 32
il nuovo vettore in uscita sarà
#include<stdio.h>
#include<conio.h>
#define POS1 0
#define DIM 100
int ottieni_numero(int val);
void Caricamento(int V[DIM],int dim);
void scrivi1(int v[DIM+1],int dim);
void aggiungi_elemento(int Vett[DIM],int ris[DIM+1],int num,int dim);
void scrivi1(int v[DIM+1],int dim);
void main()
int ottieni_numero(int val)
return(dim);
void Caricamento(int V[DIM],int dim)
val=num;
V[pos]=num;
pos=pos+1;
}
void aggiungi_elemento(int Vett[DIM],int ris[DIM+1],int num,int dim)
ris[p2]=num;
p2++;
while(p<dim+1)
void scrivi1(int v[DIM+1],int dim)
ESERCIZIO 6
/*Calcola la radice quadrata della somma dei quadrati delle componenti di indice dispari 626c21g
di un vettore di N componenti, con n<=10.*/
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define POS 1
#define DIM 100
int ottieni_dimensione(int val);
void inizializza(int vet[DIM],int dim,int n);
void caricamento(int vet[DIM] ,int dim);
float calcola_radice(int vet[DIM], int dim);
void main()
int ottieni_dimensione(int val)
return(n);
void inizializza(int vet[DIM],int dim,int n)
void caricamento(int vet[DIM] ,int dim)
float calcola_radice(int vet[DIM], int dim)
radice=sqrt(somma);
return(radice);
Programma in linguaggio C che simula il gioco Pacman. Questo programma, oltre ad essere complesso, richiede la conoscenza delle matrici.
//PACMAN
#include<conio.h>
#include<stdio.h>
#define OSTACOLO 'i'
#define CIBO 'x'
void scrivi_menu();
void Leggi_istruzioni();
void Gioca(int grandezza);
int Imposta_parametri();
void campo_di_gioco(int grandezza);
void disegno_confini();
void disegno_cibo(int grandezza);
void ostacoli(int grandezza);
void movimento_pacman(int max_x,int max_y,int*punti);
void mostro(int max_x,int max_y);
void visualizza_pacman();
void visualizza_mostro();
int calcola_perso();
int x,y,xm1=3,ym1=3,xm2=8,ym2=5,xm3=6,ym3=6,xm4=2,ym4=8,xm5=9,ym5=8;
char matrice[40][40];
void main()
scrivi_menu();
scanf("%d",&scelta);
}
void scrivi_menu()
void Leggi_istruzioni()
int Imposta_parametri()
printf("\n\n\n ORA PUOI GIOCARE !!!! ");
return(grandezza);
void Gioca(int grandezza)
else
if(grandezza==2)
else
if(grandezza==3)
do
while(mosse>=0);
clrscr();
printf("GAME OVER \n\n\n\n ");
printf("I punti che hai ottenuto sono %d \n\n\n ",punti);
void movimento_pacman(int max_x,int max_y,int *punti)
if((dir=='5')&&(y<max_y)&&(matrice[x][y+1]!='i'))
if((dir=='6')&&(x<max_x)&&(matrice[x+1][y]!='i'))
if((dir=='4')&&(x>1)&&(matrice[x-1][y]!='i'))
void campo_di_gioco(int grandezza)
void disegno_cibo(int grandezza)
else
if(grandezza==2)
else
if(grandezza==3)
while(y<lung)
printf("\n");
y=y+1;
x=0;
}
void ostacoli(int grandezza)
x=7;
y=8;
while(x<14)
if(grandezza!=1)
x=19;
y=5;
while(x<25)
}
if(grandezza==3)
x=39;
y=23;
while(x<45)
}
void visualizza_pacman()
void mostro(int max_x,int max_y)
if((ym3<max_y)&&(xm3<max_x))
else
if(xm3>2)
xm3--;
if(ym4<(max_y-6))
ym4++;
else
if(xm4<(max_x-4))
xm4++;
else
ym4--;
if(ym5<(max_y-1))
ym5++;
else
if(xm5<(max_x-6))
xm5++;
void visualizza_mostro()
int calcola_perso()
Privacy |
Articolo informazione
Commentare questo articolo:Non sei registratoDevi essere registrato per commentare ISCRIVITI |
Copiare il codice nella pagina web del tuo sito. |
Copyright InfTub.com 2025