Esercitazione prova d’esame

[adinserter block="7"]

Traccia prova:

[adinserter block="7"]

Esercizio 1

#include < stdio.h>

int main() {
  int letto, totpari, totdispari, npari, ndispari;
  totpari = 0; totdispari = 0; npari = ndispari = 0;

  do
  {
    printf("Inserisci un numero intero (0 - per terminare)\n");
    scanf("%d", &letto);
    if(letto) //letto != 0 //Senza graffe perche if-else è un'istruzione unica.
      if(!(letto%2))
      {
        totpari += letto;
        npari++;
      }
      else
      {
        totdispari += letto;
        ndispari ++;
      }
  } while (letto);

  if(npari) //npari != 0
    printf("La media dei numeri pari e':%d\n", totpari/npari);
    
  if(ndispari)//ndispari != 0
    printf("La media dei numeri dispari e':%d\n", totdispari/ndispari);

  return 0;
}

Esercizio 2

[adinserter block="7"]

Esercizio 3

void controllo (int *V1, int *V2, int lengh1, int lengh2)
{
	int i, j;
	for(i = 0; i < lengh1; i++)
		for(j = 0; j < lengh2; j++)
			if(*(V1+i) == *(V2+j))
		    printf("%d\n", *(V1+i));
}

Esercizio 4

Lista bidirezionale, ho due puntatori anziché uno.

typedef struct nodo
{
	int dato;
	struct nodo *pre;
	struct nodo *suc;
} nodo;

nodo * testa;
void inserisci (int cosa)
{
	nodo *temp, *t1;
	if (!testa)
	{
		testa = (nodo*)malloc(sizeof(nodo));
		testa -> dato = cosa;
		testa -> pre = testa -> suc = NULL;
		return;
	}
	
	temp = (nodo*)malloc(sizeof(nodo));
	for (t1 = testa; t1->dato < cosa && t1; t1 = t1->next); //t1 == t1 è nullo
	if(t1) //Inserisco in mezzo
	{
		temp->suc = t1;
		temp->pre = t1->pre;
		temp->dato = cosa;
		t1->pre = temp;
		temp->pre->suc = temp;
		return;
	}
	//Inserisco in coda
	for(t1 = testa; t1->suc;t1 = t1->suc); //Vado sull'ultimo elemento della lista
	temp->suc = NULL;
	temp->pre = t1;
	t1 -> suc = temp;
	temp->dato = cosa;
}
[adinserter block="7"]

Esercizio 5

#include  

int main()
{
	FILE *fp;
	char parola[50], car;
  int nspazi, ncar;

	nspazi = ncar = 0;
	printf("Inserisci il nome del file seguito dall'estensione\n");
	gets(parola);

	fp = fopen(parola, "r");
  if (fp == NULL)
  {
    printf("ERRORE apertura file\n");
    return 0;
  }
  else
  {
    while (!feof(fp))
    {
      car = fgetc(fp);
      ncar++;
      if(car == ' ')
        nspazi++;
    }
    printf("Nel file sono presenti %d parole\n", nspazi+1);
    printf("Nel file sono presenti %d caratteri\n", ncar-1);
  }
	return 0;
}
[adinserter block="7"]

Per altre simulazioni