programma 1 - WordPress.com

annuncio pubblicitario
PROGRAMMA 1
/*
Specifica: Es. 6 Programma che legge 10 numeri da tastiera, li ordina (con bubblesort) e li stampa.
*/
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main (void){
int num[N];
int i,j;
/* vettore dei valori letti */
/* indici per il ciclo for */
/* lettura degli N numeri */
printf("Inserisci %d numeri interi\n",N);
for (i=0; i<N; i++){
scanf("%d",&num[i]);
}
/* bubblesort */
for (i=0; i<N; i++){
for(j=i+1; j<N; j++){
if (num[i] > num[j]){
int temp;
/* temporaneo per lo scambio */
/* scambio */
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
/* stampa formattata degli N numeri */
printf("[ ");
for (i=0; i<N; i++){
printf("%d ",num[i]);
}
printf("]\n");
system("PAUSE");
return 0;
}
PROGRAMMA 2
#include <stdio.h>
#include <stdbool.h>
bool paridispari(int numero);
int main(void)
{
int letto;
printf("inserisci un numero intero:\n)");
scanf("%d",&letto);
if(paridispari(letto)== true)
printf("il numero %d letto e' pari\n",letto);
else
printf("il numeo letto %d e' dispari\n",letto);
system("PAUSE");
return 0;
}
bool paridispari(int numero){
if((numero%2)==0)
return true;
else
return false;
}
PROGRAMMA 3
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char nome[30];
scanf("%s", nome);
printf(" stampa nome: %s");
system("PAUSE");
return 0;
}
PROGRAMMA 4
#include <stdio.h>
#include <string.h>
int main ()
char stringa[256];
int i,k,lunghezza;
printf("inserire parola:");
gets(stringa);
lunghezza= strlen(stringa);
for(i=0;i<lunghezza;i++) {
if( i % 2 ==0)
printf(" %c e' in una cella pari \n", stringa[i]);
else
printf(" %c e' in una cella dispari \n", stringa[i]);
}
system("PAUSE");
return 0;
}
PROGRAMMA 5
#include <stdio.h>
#include <time.h>
int lancio(){
int faccia;
faccia=(rand() % 6)+1;
return faccia;
}
int main(){
srand (time(0));
int numeroLanci;
int nl;
printf("Numero lanci da effettuare: ");
scanf("%d",&numeroLanci);
for(nl=0;nl<numeroLanci;nl++)
printf("Lancio N.ro %d e' uscito il numero %d \n ",nl,lancio());
system("PAUSE");
return 0;
}
PROGRAMMA 6
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char nome1[255], nome2[255], nome3[255], nome4[255];
gets(nome1);
gets(nome2);
gets(nome3);
gets(nome4);
system("PAUSE");
return 0;
}
PROGRAMMA 7
/* Scopo: funzioni */
#include <stdio.h>
#include <stdbool.h>
bool paridispari(int numero);
/*prototipo: parametri formali */
int main(void)
/* progeramma pari o dispari */
{
int letto;
printf("\ninserisci un numero intero\n");
scanf ("%d",&letto);
if (paridispari(letto)==true)
/* chiamata della funzione: parametri attuali */
printf("Il numero %d letto e' pari",letto);
else
printf("Il numero %d letto e' dispari",letto);
printf("\n\n");
system("PAUSE");
return 0;
}
bool paridispari(int numero) /* header della funzione con parametri formali*/
{
if ((numero%2)==0)
return true;
/* valore di ritorno */
else
return false;
/* valore di ritorno */
}
PROGRAMMA 8
/*Questo programma confronta i tempi dei vari algoritmi di ordinamento per 100.000 elementi con
numeri compresi fra 1 e 10 mila con scambio (4) 53 secondi con selezione (6) 14 secondi con insert sort
(7) 9 secondi*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 100000000
int v[M], n;
int scelta(scelta)
{
printf("\nscelta: ");
scanf("%d", &scelta);
return scelta;
}
void randomize()
/* Chiamare 1 sola volta, prima di random() */
{
time_t t;
srand((unsigned) time(&t));
/* inizializza generatore pseudocasuale sul tempo di sistema */
}
int random(int n)
// ritorna un numero pseudocasuale fra 0 ed n-1
{
return rand() % n;
}
void menu()
{
printf("\n1) dimensionamento vettore\n");
printf("2) riempimento vettore\n");
printf("3) stampa vettore\n");
printf("4) ordinamento per scambio bubblesort\n");
printf("5) ordinamento per scambio bubblesort (for i,j)\n");
printf("6) ordinamento per selezione\n");
printf("7) insert sort\n");
printf("8) quicksort\n");
printf("9) esci\n");
}
int vet_pos_max(int v[], int n)
{
int pos_max_num = 0;
int i;
for (i=1; i<n; i++)
{
if(v[i]>v[pos_max_num])
pos_max_num = i;
}
return pos_max_num;
}
void dimensionamento()
{
char invio;
printf("inserisci il numero degli elementi del vettore(max 100 milioni): ");
scanf("%d%c", &n, &invio);
}
void riempimento(int v[], int n, int nrandom)
{
int i;
for(i=0; i<n; i++)
v[i]=random(nrandom)+1;
printf("vettore riempito!!\n");
}
void scambio(int v[], int pa, int pb)
{
int dep=v[pa];
v[pa]=v[pb];
v[pb]=dep;
}
void bubble_sort(int v[], int n)
{
int i, scambia=1;
do {
scambia=0;
for(i=0; i<n-1; i++)
if(v[i]>v[i+1]) scambio(v,i, i+1), scambia=1;
}
while(scambia);
}
void bubble_sort2(int v[], int n)
{
int i,j;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(v[i]>v[j]) scambio(v, i, j);
}
void ordina_selezione(int v[], int n)
{
int i,pm=n;
for (i=n-1; i >= 0; i--)
{
pm=vet_pos_max(v,i+1);
if (pm!=i)
scambio(v,i,pm);
}
}
void insert_sort(int v[], int n)
{
int i,j, value;
for(i=1; i<n; i++) {
value=v[i], j=i-1;
while((j>=0)&&(v[j]>value))
{
v[j+1]=v[j];
j--;
v[j+1]=value;
}
}
}
void quicksort(int v[], int sx, int dx)
{
int pivot = v[(sx+dx)/2], i =sx , j = dx;
while(i <= j )
{
while(v[i]<pivot ) i++;
while(v[j]>pivot ) j--;
if ( i < j) scambio(v,i,j);
if ( i <= j) i++, j--;
}
if (sx < j ) quicksort(v,sx,j);
if (i < dx ) quicksort(v,i,dx);
}
void print(int v[], int n)
{
int i, risposta=1;
for(i=0; i<n && risposta==1; i++)
{
printf("%9d^ elemento --> %9d\n", i+1, v[i]);
if((i+1)% 20==0)
{
printf("stampo ancora? 1=si 0=no: ");
scanf("%d", &risposta);
}
}
void premi_un_tasto()
{
printf("\npremi un tasto per continuare.. \n");
getchar();
}
int main()
{
int i, sc,nrandom;
char invio;
time_t inizio, fine;
double secondi;
randomize();
do
{
menu();
sc=scelta(sc);
switch (sc)
{
//dimensionamento vet
case 1:
dimensionamento(v, n);
premi_un_tasto();
break;
case 2:
printf("inserisci il numero massimo per il random: ");
scanf("%d%c", &nrandom, &invio);
riempimento(v, n, nrandom);
premi_un_tasto();
break;
case 3:
print(v, n);
premi_un_tasto();
break;
case 4:
inizio=time(NULL);
bubble_sort(v, n);
fine=time(NULL);
secondi=difftime(fine, inizio);
printf("\nper ordinare il vettore il computer ci mette %10.0lf secondi \n", secondi);
break;
case 5:
inizio=time(NULL);
bubble_sort2(v, n);
fine=time(NULL);
secondi=difftime(fine, inizio);
printf("\nper ordinare il vettore il computer ci mette %10.0lf secondi \n", secondi);
break;
case 6:
inizio=time(NULL);
ordina_selezione(v, n);
fine=time(NULL);
secondi=difftime(fine, inizio);
printf("\nper ordinare il vettore il computer ci mette %10.0lf secondi \n", secondi);
break;
case 7:
inizio=time(NULL);
insert_sort(v, n);
fine=time(NULL);
secondi=difftime(fine, inizio);
printf("\nper ordinare il vettore il computer ci mette %10.0lf secondi \n", secondi);
break;
case 8:
inizio=time(NULL);
quicksort(v,0, n-1);
fine=time(NULL);
secondi=difftime(fine, inizio);
printf("\nper ordinare il vettore il computer ci mette %10.0lf secondi \n", secondi);
break;
case 9:
printf("fine programma");
break;
default:
printf("scelta sbagliata");
break;
}
}
while(sc!=9);
return 0;
}
PROGRAMMA 9
#include <stdio.h>
#define DIM 5
void ordina(int v);
void stampa(int v);
int main(){
int a[DIM]={3,10,6,2,9};
stampa(a);
ordina(a);
stampa(a);
return 0;
}
void ordina(int*v)
{
int i,j,temp,pos;
for(i=0;i<DIM-1;i++)
{
pos=1;
for(j=i+1;j<DIM;j++)
{
if(v[j]<v[pos])
pos=j;
}
temp=v[pos];
v[pos]=v[i];
v[i]=temp;
}
void stampa(int*v)
{
int i;
for(i=0;i<DIM;i++)
printf("%d\n",v[i]);
}}
PROGRAMMA 10
#include <stdio.h>
#include <stdlib.h>
void f2 (double v[] , int n, int c){
double a;
int i,j;
for(j=0 ; j<c;j++){
a=v[n-1];
for(i=n-1;i>0;i--)
v[i]=v[i-1];
v[0]=a;
}
return;
}
int main()
system("PAUSE");
return 0;
}
PROGRAMMA 11
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main () {
char numero [256];
printf(" inserire un numero ");
gets(numero);
printf(" il numero che hai inserito ha %d numeri", strlen(numero));
system("PAUSE");
return 0;
}
PROGRAMMA 12
/* Scopo: algoritmo di bubble-sort
*/
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
void riempi(int vet[], int num, int max)
{
int conta;
srand((unsigned)time(NULL));
// inizializza il seme
// estrai i valori e riempi il vettore
for (conta=0; conta<num; conta ++)
vet[conta]=(rand()%max+1);
// valori casuali tra 1 e max
}
void visualizza(int vet[], int num)
{
int conta;
printf("\n");
for (conta=0; conta<num; conta ++)
printf ("%4d",vet[conta]);
// visualizza vettore
}
void bubbleSort(int vet[], int tanti)
{
int x, y, min;
int temp;
for (x=0; x<tanti-1; x++) { // ripeti per tutto i numeri
for (y=0; y<tanti-1; y++) // li confronto tutti a coppie
if (vet[y]>vet[y+1]) { // se ne trovo uno maggiore
temp = vet[y];
// li scambio tra loro
vet[y] = vet[y+1];
vet[y+1] = temp;
}
visualizza(vet,tanti);
// visualizza un passo di ordinamento
}
}
int main (){
int tanti,nuovo;
int numPosiz
= 10;
// dimensione del problema
int massimo
= 100;
// valore massimo del numero da generare
int numeri[numPosiz];
// vettore dei dati
riempi(numeri,numPosiz,massimo);
visualizza(numeri,numPosiz);
bubbleSort (numeri,numPosiz);
// visualizza(numeri,numPosiz);
printf("\n\n");
system("PAUSE");
return 0;
}
// visualizza vett disordinato
// ordinalo per selezione
// visualizza parziali
Scarica