cerca
Laboratorio C - Alcuni esercizi
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Laboratorio C - Alcuni esercizi

Torna alla pagina di Laboratorio C


Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! È SERVITA A QUALCOSA, NO?! ;)

 :: Laboratorio C - Alcuni esercizi ::

Prog1

// CONTA I CARATTERI COMPRESI GLI SPAZI E UN CARATTERE IN PARTICOLARE 
/ /SIA MINUSCOLO CHE MAIUSCOLO
#include <stdio.h>
#define NOME_FILE "prova.txt"

int main()
{
  FILE * file_in;
  char car;
  int nchar; /* numero di caratteri*/
  int nr; // numero di r
  float freq; // frequenza di r
  file_in = fopen(NOME_FILE, "r");
  if(file_in == NULL)
  {
    printf( "Non trovo il file.\n" );
    exit(-1);
  }
  nchar = 0;
  nr = 0;
  fscanf(file_in , "%c", &car);
  while (!feof(file_in))
  {
    // 1. conta quanti caratteri ci sono nel file
    nchar++;
    // 2. conta quante volte compare la lettera 'r' maiuscola o minuscola) ;
    if (car == 'r'||car == 'R')
    {
      printf("%c \n", car);
      nr++;
    }
    fscanf(file_in , "%c", &car);
  }
  // 3. calcola come FLOAT la frequenza di occorrenza della lettera 'r'
  // (maiuscola o minuscola)
  freq = ((float) nr) / nchar; // attenzione: e'necessario il cast!
  printf(" Il numero di caratteri e': %d\n", nchar);
  printf(" Il numero di volte che compare la lettera 'r' o 'R' e': %d\n", nr);
  printf(" La frequenza della lettera 'r' o 'R' e': %.3g\n", freq);
  fflush(file_in);
  fclose(file_in);
  fflush(stdin);
  getchar();
  exit(0);
}

Prog2

// CONTA PAROLE CON ALMENO UNA R
#include <stdio.h>
#define NOMEFILE "testo3.txt"

int confronta( char *s );

int main()
{
  FILE *qFile;
  char string[100];
  int contaparole = 0;
  qFile = fopen(NOMEFILE, "r");
  if (qFile == NULL ) 
  {
    printf("file non trovato\n");
    exit(-1);
  }
  while (fscanf(qFile, "%s", string ) == 1) 
  {
    contaparole += confronta(string);
  }
  printf("%d\n", contaparole);
  fflush(qFile);
  fclose(qFile);
  return 0;
}

int confronta ( char *s )
{
  int i = 0, parole = 0;
  while ( s[i] != '\0') {
    if (s[i] == 'r') {
      ++parole;
      break;
    }
    ++i;
  }
  return parole;
}

Prog3

// visualizza la parola + lunga di un file
#include <stdio.h>
#define NOMEFILE "prova.txt"

int main()
{
  FILE *pFile;
  char string[500];
  char string2[500] = {0};
  int i = 0;
  char n;
  int max = 0;
  pFile = fopen(NOMEFILE, "r");
  if (pFile == NULL ) 
  {
    printf("file non trovato\n");
    exit(-1);
  }
  while (fscanf(pFile, "%s", string ) == 1 ) 
  {
    i = strlen(string);
    if ( i > max ) 
    {
      max = i;
      strcpy(string2, string);
    }
  }
  printf("la parola piu' lunga e' %s\n", string2);
  fflush(pFile);
  fclose(pFile);
  return 0;
}

Prog4

// occorrenze cifre di un numero
#include <stdio.h>

int main()
{
  int num = 757179997;
  int i = 0;
  int freq[10] = {0};
  while ( num > 0 ) 
  {
    i = num % 10;
    ++freq[ i ];
    num /= 10;
  }
  for ( i = 0; i < 10; i++ )
  {
    if ( freq[i] != 0 )
      printf("freq[%d] = %d\n", i, freq[i]);
  }
  return 0;
}

Prog5

// somma gli elementi di una colonna specifica di uan matrice
#include <stdio.h>
#define N 2
#define M 3

int main()
{
  int V[N][M] = {{ 1, 2, 3 }, { 4, 5, 6 }}; // 6 e 15
  int c = 2, r, somma = 0;
  for ( r = 0; r <= N-1; r++ )
    somma += V[r][c];
  printf("la somma della prima colonna della matrice e' %d\n", somma );
  return 0;
}

Prog6

// visualizza quale numero di un vettore si ripete + volte
#include<stdio.h>
#define N 14
#define M 10

int main()
{
  int i, j, max = 0, indice = 0;
  int V[N] = { 3, 2, 4, 2, 9, 1, 2, 2, 7, 4, 1, 2 }; // contiene num da 0 a 9
  int freq[M] = {0};
  for ( i = 0; i < N; i++ )
    ++freq[ V[i] ];
  for ( i = 0; i < M; i++ )
    printf("V[%d] = %d\n", i, freq[i]); // per visualizzare tutte le occorrenze
  // così posso visualizzare se è giusto
  for ( j = 0; j < M; j++) 
  {
    if (freq[j] > max) 
    {
      max = freq[j];
      indice = j;
    }
  }
  printf("\nnumero + frequente: %d\n", indice);
  return 0;
}

Prog7

// ricerca numeri pari
#include <stdio.h>
#define N 5

int main()
{
  int i, x = 0, pari = 0;
  int V[N] = { 3, 10, 4, 7, 9 };
  for ( i = 0; i < N; i++ ) 
  {
    x = V[i];
    if(( x % 2) == 0 ) 
    {
      pari++;
    }
  }
  printf("i numeri pari sono: %d\n", pari);
  return 0;
}

Prog8

// trova numero mancante
#include <stdio.h>
#define N 14

int main()
{
  int string[] = {0, 1, 2, 3, 4, 6, 7, 3, 2, 7, 8, 9, 10};
  int V[N];
  int i;
  for( i = 0; i <= 10; i++ )
    V[i] = 0;
  for( i = 0; i < N; i++ )
    V[string[i]] = 1;
  printf("numeri mancanti:\n");
  for( i = 0; i <= N; i++ )
  {
    if( V[i] == 0 )
    {
      printf("%d \t", i );
    }
  }
  printf("\n");
  return 0;
}

Torna alla pagina di Laboratorio C