Informatica 2 Liceo Scientifico Scienze Applicate/Compito dic 2019

Indice del libro

Usare i vettori Compito Dicembre 2019 2aLSA modifica

1)scrivi la sintassi delle istruzioni cicliche, disegna il diagramma di flusso dell'istruzione for, spiega quando si utilizzano, spiega il funzionamento di ciascuna istruzione, costruisci un esempio con l'istruzione for che evidenzi il funzionamento del comando break e continue.

2a)Marco si reca al lago di pesca "Pittarello", ogni volta che lancia l'amo ha la possibilità del 7% di pescare una trota, del 14% di pescare un branzino e nei casi rimanenti pesca solo scarpe. Scrivi un programma che dopo 70 tentativi visualizzi il numero di scarpe pescate, il numero di branzini e il numero di trote.

#include <iostream>
#include<stdlib.h>
using namespace std;

int main(int argc, char** argv) 
{ int scarpe=0,trote=0,branzini=0,p,i;
for (i=0;i<70;i++)
 { p=1+rand()%100;
   if(p<=7)
    {cout<<"trota"<<endl;
     trote++;
    }
   else if(p>7&&p<=21)
    {
       cout<<"branzino"<<endl;
       branzini++;
    }
   else 
   {
       cout<<"che sfortuna"<<endl;
       scarpe++;
   }	
 }
cout<<"ha pescato "<<trote<<" trote"<<endl;
cout<<"ha pescato "<<branzini<<" branzini"<<endl;
cout<<"ha pescato "<<scarpe<<" scarpe"<<endl;
return 0;
}

2b)Marco si reca al lago di pesca "Pittarello", ogni volta che lancia l'amo ha la possibilità del 7% di pescare una trota, del 14% di pescare un branzino e nei casi rimanenti pesca solo scarpe. Scrivi un programma che evidenzi cosa marco pesca ad ogni tentativo, se marco pesca una scarpa esclama "che sfortuna!!!" e se ne torna a casa.

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main(int argc, char** argv)
{ string pescata="continua a pescare";
  int p;
  srand(time(NULL));

  do	
  { p=1+rand()%100;
    if(p<=7)
      cout<<"hai preso una trota"<<endl;
    if(p>7&&p<=21)
      cout<<"hai preso un branzino"<<endl;
    if(p>21)
      { pescata = "scarpa";
        cout<<"che sfortuna hai pescato una scarpa, meglio tornare a casa..."<<endl;
      }
   }
  while( pescata != "scarpa");
  return 0;
}

2c) Pospyeken è una simpatica fanciulla che si reca insieme al suo gatto Lisca al laghetto "Pittarello" per pescare le scarpe ( la probabilità di pescare trote è del 7%, quella di pescare branzini del 14%, di pescare una una scarpa rossa 30%, delle scarpe nere con tacco del 25%, scarpe da running bianche nei rimanenti casi.Quando Pospyken pesca una trota o un branzino esclama "Lisca questo è per te" e gli lancia il pesce, se sono scarpe rosse o nere le lancia in aria gridando "W il milan" se invece sono scarpe da running le conserva e dopo averne pescate dieci se ne torna a casa-

3)Marco ha creato un programma che tramite un menù di scelta gli permette di: 1) calcolare l'area di un rettangolo 2) area e circonferenza di un cerchio 3)terminare il programma

#include <iostream>
using namespace std;

int main(int argc, char** argv) 
{ float base,raggio,altezza;
  float area, circonferenza;
  char scelta;
  bool uscitadalprogramma=false;

do{
 
  cout<<"cosa vuoi calcolare?  1=area rettangolo 2=area cerchio 3=interrompi programma"<<endl;
  cout<<"inserisci la tua scelta:"<<endl;
  cin>>scelta;
 
  switch(scelta)
   {case '1': cout<<"inserire la base"<<endl;
             cin>>base;
             cout<<"inserire l'altezza"<<endl;
             cin>>altezza;
             area=base*altezza;
             cout<<"l'area del rettangolo vale "<<area<<endl;
             break;
   
   case '2': cout<<"inserire il valore del raggio"<<endl;
             cin>>raggio;
             area=raggio*raggio*3.14;
             circonferenza=2*raggio*3.14;
             cout<<"l'area del cerchio vale "<<area<<endl;
             cout<<"la circonferenza del cerchio vale "<<circonferenza<<endl;
             break;
  case '3': uscitadalprogramma=true;
            break;		       
  
  default: cout<<"devi inserire 1,2 o 3"<<endl;
   }
   
  }
  while(!uscitadalprogramma);
 return 0;
}

Scrivi il codice del programma

4)Scrivi il programma gara di ballo, i giudici sono 23 e ognuno esprime un voto da 1 a 10, alla fine devi scrivere il nome del vincitore e il suo punteggio, Sicuramente partecipa alla gara almeno un ballerino.

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main(int argc, char** argv) 
{char scelta;
 int i;
 float punteggio,puntivincitore=-1;
 string nome, nomevincitore="nessuno";
 srand(time(NULL));
 cout<<"benvenuti alla gara di ballo"<<endl;

 do
  {cout<<"come ti chiami?"<<endl;
   cin>>nome;
   cout<<"complimenti "<<nome<<", ora puoi ballare"<<endl;
   cout<<"che bella esibizione!"<<endl;
   cout<<"diamo la parola ai giuedici"<<endl;
   
   punteggio=0;
   for(i=0;i<23;i++)
    punteggio=punteggio+(rand()%10+1);
    
   cout<<nome<<" hai fatto "<<punteggio<<" punti"<<endl;
    
   if(punteggio>puntivincitore)
    {nomevincitore=nome;
     puntivincitore=punteggio;
    }
	
   cout<<"c'e' qualcun altro che vuole ballare? (s/n)"<<endl;
   cin>>scelta;	
  }
 while(scelta=='s')	;
  cout<<"complimenti, il vincitore e' "<<nomevincitore<<endl;
  cout<<"con un punteggio di "<<puntivincitore<<" punti"<<endl;	
	
 return 0;
}

5)scrivi il programma per indovinare un numero segreto (con suggerimenti) il numero è compreso fra 23 e 57, quando l'utente vince scrivi il numero di tentativi.

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main(int argc, char** argv) 
{int n,conta=0,i,nsegreto;
 srand(time(NULL));
 nsegreto=23+rand()%35;
 do
 {
  cout<<"prova ad indovinare il numero compreso fra 23 e 57 "<<endl;
  cin>>n;
  conta++;
  if(n<nsegreto)
   cout<<"troppo piccolo"<<endl;
  if(n>nsegreto)
   cout<<"troppo grande"<<endl;
 }
 while(n!=nsegreto);
  
 cout<<"hai indovinato il numero era "<<nsegreto<<" e hai indovinato con "<<conta<<" tentativi"<<endl;

 return 0;
}


6) marco ha acquistato 3 prodotti, se il prodotto è una scarpa ha diritto al 20% di sconto, se l'importo totale (con l'eventuale sconto sulle scarpe) è maggiore di 32 euro ha diritto a uno sconto del 9% (sul totale).Il programma visualizza l'importo totale e gli eventuali sconti applicati.

#include <iostream>
using namespace std;
int main(int argc, char** argv) 
{ int i;
 float prezzo, somma=0, totale, scontototale=0;
 string articolo;
 for( i=0;i<3;i++)
 {
  cout<<"inserisci il tipo di articolo( scarpe, cibo, cocacola, etc ...)"<<endl;
  cin>>articolo; 
  cout<<"inserisci il prezzo "<<endl;
  cin>>prezzo; 
   
  if(articolo=="scarpe")
   { cout<<"su questo articolo hai diritto a uno sconto del 20% cioè di "<< prezzo*0.2<<" euro"<<endl;
     scontototale=scontototale+prezzo*0.2;
     somma=somma+prezzo*0.80;
   }
  else
    somma=somma+prezzo; 
  
 }
if(somma>32)
 { cout<<" hai speso più di 32 euro hai diritto a uno sconto del 9% cioè di "<< somma*0.09<<" euro"<<endl;
   scontototale=scontototale+somma*0.09;
   totale=somma*0.91;
 }
 else
  totale=somma;
  
 cout<<"devi pagare  "<<totale <<" lo sconto complessivo è stato di  "<<scontototale<<" euro"<<endl;
 
 return 0;

}

7) marco ha comprato 3 oggetti se ce ne sono 2 uguali il programma visualizza il nome del prodotto, stampa poi gli articoli in ordine per prezzo (crescente).

#include <iostream>

using namespace std;

int main(int argc, char** argv) 
{ int prezzo[3];
int i,n1,n2,n3;
string nomeprodotto[3],art1,art2,art3;
 for(i=0;i<3;i++)
  { cout<<"inserisci prodotto"<<endl;
    cin>>nomeprodotto[i];
    cout<<"inserire il suo prezzo"<<endl;
    cin>>prezzo[i];
  }

  if(nomeprodotto[0]==nomeprodotto[1])
     cout<<" il prodotto 0 e  uguale al prodotto 1 e sono:"<<nomeprodotto[0]<<endl;
  
  if(nomeprodotto[0]==nomeprodotto[2])
     cout<<" il prodotto 0 e  uguale al prodotto 2 e sono:"<<nomeprodotto[0]<<endl;
      
   if(nomeprodotto[1]==nomeprodotto[2])
     cout<<" il prodotto 1 e  uguale al prodotto 2 e sono:"<<nomeprodotto[1]<<endl;
      
 n1=prezzo[0];
 n2=prezzo[1];
 n3=prezzo[2];
  
 art1=nomeprodotto[0];
 art2=nomeprodotto[1];
 art3=nomeprodotto[2];
// se scambio la posizione del prezzo devo scambiare anche quella della merce
for(i=0;i<3;i++)
 {if(prezzo[i]<n1&&prezzo[i]<n2&&prezzo[i]<n3)
    {	 n1=prezzo[i];art1=nomeprodotto[i];}
  else  if(prezzo[i]>n1&&prezzo[i]>n2&&prezzo[i]>n3)
    {	 n3=prezzo[i];art3=nomeprodotto[i];}
   else
    {	 n2=prezzo[i];art2=nomeprodotto[i];}
 }
 
cout<<"gli articoli ordinati per prezzo sono "<<endl;
cout<<art1<< " che costa "<< n1<<endl;
cout<<art2<< " che costa "<< n2<<endl;
cout<<art3<< " che costa "<< n3<<endl;
return 0;
}

8) marco vuole comprare un cane chowchow di colore giallo o rosso alto almeno 80 cm, diversi vicini gli propongono un cane indicandogli razza,colore e altezza. Aiutalo scrivendo il programma che evidenzia il nome dei vicini con un cane che soddisfa i requisiti.

#include <iostream>
using namespace std;
int main(int argc, char** argv)
{ string vicino,colore, razza;
 float altezza;
 int n,i;
 cout<<"quanti sono i miei vicini? ";
 cin>>n;
 for(i=0;i<n;i++)
  { cout<<"salve vicino come ti chiami? ";
   cin>>vicino;
   cout<<" vedo che hai un cane di che razza è? (chowchow, danese, formaggino, grinta ";
   cin>>razza;
   cout<<"è molto bello, quanto è alto in cm ";
   cin>>altezza;
   cout<<"non ci vedo molto, mi pui dire il suo colore? ";
   cin>>colore;
   if( razza=="chowchow" && altezza>=80 && (colore=="rosso" || colore=="giallo"))
    cout<<" caro vicino "<< vicino<< " hai proprio un bel cane  chow chow, stasera passo da te per convicerti a vendermelo per 20000 yen"<<endl;
   else
    cout<<"ma questo cane non è un chow chow imperiale"<<endl; 
  }
  return 0;

}

9)scrivi un programma che dato un numero x verifichi se il numero appartiene all'intervallo [3,56[


10) Marco vuole una fidanzata non bella e antipatica che si chiami Lucia (scrivi un programma per trovare l'anima gemella)

#include <iostream>
using namespace std;

int main(int argc, char** argv) 
{string nome,bella,antipatica;
for(;;)
{ cout<<"la ragazza si chiama (lucia/marta/francesca)?  ";
  cin>>nome;
  cout<<"la ragazza e' bella? (si/no): ";
  cin>>bella;
  cout<<"la ragazza e' antipatica? (si/no): ";
  cin>>antipatica;
  if(nome=="lucia" && bella=="no" && antipatica=="si")
   {cout<<"ecco la mia ragazza ideale, vado a invitarla al ballo!";
    break;
   }
  else
   { cout<<"questa ragazza non fa per me!!!!"<<endl;
   }
 }
return 0;
}

11) Scrivi un programma che senza usare i vettori, permetta dati n numeri di trovare il min, il max e la media e quanti numeri inseriti sono dispari.

#include <iostream>
using namespace std;

int main(int argc, char** argv) 
{ int ntot,conta=0,i,n,n1;
 float media,somma=0,max,min;
 cout<<"quanti sono i numeri?"<<endl;
 cin>>ntot;
 cout<<"qual è il primo numero?"<<endl;
 cin>>n1;
 if(n1%2!=0)  
   conta=conta+1;
 somma=n1;
 max=n1;
 min=n1;
 for(i=1;i<ntot;i++)
 {cout<<"dimmi un altro numero"<<endl;
  cin>>n;
  if(n>max)
   max=n;
  if(n<min)
   min=n;
  somma=somma+n;
  if(n%2!=0)
   conta=conta+1;
 }
 
 media=somma/ntot;
 cout<<"ci sono "<<conta<<" numeri dispari e la media vale "<<media<<endl;
 cout<<"Il numero maggiore è "<<max<<" e il minore è "<<min;
 return 0;
}

12a)marco dopo aver registrato il nome dei suoi animali (sono n), il peso e la razza calcola il peso medio degli animali di razza "PTOW" e conti quanti animali si chiamano "BelloVieniQua", individua inoltre il nome dell'animale più pesante, stampa i dati degli animali ordinati per peso.

#include <iostream>
using namespace std;

int main(int argc, char** argv)
{ int n,conta, i, j;
float somma,media;
cout<<"quanti sono i tuoi animali? ";
cin>>n;

string nome[n];
float peso[n];
string razza[n];

for(i=0;i<n;i++)
{ cout<<"inserisci i dati del "<<i<<"^ animale"<<endl;
 cout<<"nome?";
 cin>>nome[i];
 cout<<"razza?";
 cin>>razza[i];
 cout<<"peso?";
 cin>>peso[i];
}

conta=0;
for(i=0;i<n;i++)
 if( nome[i]=="BelloVieniQua" )
  conta++;
   
 cout<<" ci sono "<<conta<<" animali che si chiamano BelloVieniQua nella tua fattoria"<<endl;
  
 conta=0;
 somma=0;
 for(i=0;i<n;i++)
   if( razza[i]=="PTOW")
    {conta++;
     somma=somma+peso[i];
    }
 media=somma/conta;
 cout<<" i PTWO pesano mediamente "<<media<<" Kg"<<endl;


 //ordino confronto ogni animale con tutti, se scambio il peso scambio anche nome e razza
 float temp;
 string temp2;
 
 for(i=0;i<n;i++)
   for(j=0;j<n;j++)
     if(peso[i]<peso[j])
       {
        temp=peso[i];
        peso[i]=peso[j];
        peso[j]=temp;
       	
        temp2=nome[i];
        nome[i]=nome[j];
        nome[j]=temp2;
        temp2=razza[i];
        razza[i]=razza[j];
        razza[j]=temp2;
        	

}

   cout<<"nome      razza       peso in Kg"<<endl;
   for(i=0;i<n;i++)
   cout<<nome[i]<<"\t"<< razza[i]<<"\t"<< peso[i] <<endl;
   return 0; 
}

12b) Marco ha registrato le soluzioni dei suoi n esercizi del tipo (A,C,A,B,A,A,D) e li confronta con quelli del suo compagno, evidenzia le risposte diverse, verifica se tutte le risposte sono uguali,conta quante risposte sono di tipo A e quante risposte sono di tipo B o C, conta la più lunga sequenza di risposte tutte di tipo C.

#include <iostream>
using namespace std;
int main(int argc, char** argv)
{	int n,i, conta;
       cout<<"quante sono le risposte?";
       cin>>n;
       char testmio[n];
       char testsuo[n];

       cout<<"inserisci le risposte del tuo test"<<endl;
       for(i=0;i<n;i++)
        { 
        cout<<"domanda n."<<i<<"(a/b/c/d)?";
        cin>>testmio[i];
        }
	
       cout<<"inserisci le risposte del SUO test";

for(i=0;i<n;i++)

       {
       cout<<"domanda n."<<i<<"(a/b/c/d)?";
       cin>>testsuo[i];
       }
	
       cout<<"le risposte diverse sono:"<<endl;
	
     for(i=0;i<n;i++)
      if(testmio[i]!=testsuo[i])
        cout<<"la risposta "<<i<<" i è' diversa, la tua è "<<testmio[i]<< " la sua è "<<testsuo[i]<<endl;
	 
       bool uguali=true;
       for(i=0;i<n;i++)
   	if(testmio[i]!=testsuo[i])
   	  { uguali=false;
   	    break;
         }
		  
      if( uguali)
        cout<<" i due test sono uguali"<<endl;
      else
         cout<<"i i due test sono diversi"<<endl;
	 
	 
   int 	contaA=0;
   int 	contaBC=0;
	
   for(i=0;i<n;i++)
    {	if(testmio[i]== 'a') contaA++;
	 
      if(testmio[i]== 'b' || testmio[i]=='c') contaBC++;
    }
		  	  
    cout<<"le tue risposte di tipo A sono "<<contaA<<" quelle di tipo B o C sono"<<contaBC<<endl;
    int lungmaxseq=-1;
    int lunghezza;
    int j;

    for(i=0;i<n;i++)
      if(testmio[i]=='c')
   	 { lunghezza=1;
   	    for(j=i+1;j<n;j++)
   	      if(testmio[j]!='c')
   	        break;
             else
              lunghezza++;
    	    
         if(lunghezza>lungmaxseq)    
            lungmaxseq=lunghezza;
        }
         
         
   if(lungmaxseq==-1)
       cout<<"non ci sono risposte di tipo C nel test"<<endl;
   else 
        cout<<"la seq max di risposte C consecutive è lunga" <<lungmaxseq    <<endl;
   
  return 0;
  }