Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
2xMarcy authored Jan 11, 2020
1 parent 677d9f2 commit 227586a
Show file tree
Hide file tree
Showing 4 changed files with 370 additions and 0 deletions.
67 changes: 67 additions & 0 deletions Calcolatrice-Es7.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
Esercizio 7
Scrivere un programma calcolatrice.c che accetti tre parametri a riga di comando:
- operazione: una stringa "somma", "prodotto", "sottrazione" o "divisione"
- primo operando: un intero
- secondo operando: un intero
e stampi il risultato dell’operazione.
Il programma deve inoltre controllare che i parametri siano corretti e, in caso contrario,
stampare un messaggio di errore con la sintassi corretta.
Esempio 1:
$ ./calcolatrice somma 13 29
La somma è 42.
Esempio 2:
$ ./calcolatrice pippo 32 23
Sintassi: calcolatrice (somma | prodotto | sottrazione | divisione) num1:int num2:int $
Esempio 3:
$ ./calcolatrice divisione 42 0
Impossibile dividere per zero.
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char* argv[])
{
int op1, op2;
if (argc != 4)
printf ("Errore nella sintassi.\nSintassi: %s (somma | prodotto | sottrazione | divisione) num1:int num2:int\n", argv[0]);
else
{
op1 = atoi (argv[2]);
op2 = atoi (argv[3]);

if (strcmp (argv[1], "somma") == 0)
printf ("La somma e' %d\n", op1 + op2);
else
if (strcmp (argv[1], "prodotto") == 0)
printf ("Il prodotto e' %d\n", op1 * op2);
else
if (strcmp (argv[1], "sottrazione") == 0)
printf ("La differenza e' %d\n", op1 - op2);
else
if (strcmp (argv[1], "divisione") == 0)
{
if (op2 == 0)
printf ("Impossibile dividere per zero.\n");
else
printf ("Il quoziente e' %d\n", op1 / op2);
}
else
printf ("Errore nella sintassi.\nSintassi: %s (somma | prodotto | sottrazione | divisione) num1:int num2:int\n", argv[0]);
}

return 0;
}
91 changes: 91 additions & 0 deletions Spezza_la_riga-Es8.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
/*
Esercizio 8
Scrivere un programma che accetti due parametri, il nome di un file di testo e un numero n,
e che legga, carattere per carattere, il file di testo indicato e spezzi le righe più lunghe di n andando a capo.
L’output deve essere salvato in un altro file di testo.
Ad esempio se legge dal file la riga:
Quel ramo del lago di Como, che volge a mezzogiorno, tra due catene non interrotte di monti, tutto a seni e a golfi
con n=34, lanciando il programma
$ ./testoACapo fileInput.txt 34
il file di output dovrà contenere:
Quel ramo del lago di Como, che vo
lge a mezzogiorno, tra due catene
non interrotte di monti, tutto a s
eni e a golfi
*/

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char* argv[])
{
int i, n;
char c;

if (argc != 3)
{
printf ("Errore nella sintassi.\nSintassi: %s [nome file] num:int\n", argv[0]);
exit (EXIT_FAILURE);
}

n = atoi (argv[2]);
if (n <= 0)
{
printf ("Errore! Il valore digitato deve essere maggiore di 0.\n");
exit (EXIT_FAILURE);
}

FILE* fpr = fopen (argv[1], "r");
if (fpr == NULL)
{
printf ("Errore! Il file indicato non esiste.\n");
exit (EXIT_FAILURE);
}

FILE* fpw = fopen ("output.txt", "w");
if (fpw == NULL)
{
printf ("Errore! Il file di output non e' accessibile.\n");
fclose (fpr);
exit (EXIT_FAILURE);
}

c = fgetc (fpr);

for (i = 0; c != EOF; i++)
{
if (c == '\n')
{
c = fgetc (fpr);
i--;
}
else
{
fputc (c, fpw);

c = fgetc (fpr);

if ( (i + 1) % n == 0)
fputc ('\n', fpw);
}
}

fclose (fpr);
fclose (fpw);

return (EXIT_SUCCESS);
}
123 changes: 123 additions & 0 deletions Vettori_con_tappo-Es6-Con_commenti.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/*
Esercizio 6
Scrivere una funzione che preso in input un vettore con tappo, restituisca
in una variabile passata per riferimento che rappresenta il numero di volte
che il valore massimo nel vettore tappo si presenta.
Restituire -1 se il vettore con tappo è vuoto.
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIM 11

/* Funzione che:
* - riceve in ingresso un vettore di interi;
* - genera una numero casuale tra 0 e DIM -1, che sara' il numero dei valori che verranno inseriti nel vettore;
* - assegna a ciascuna cella del vettore un numero casuale tra 0 e 100, fino al numero di valori prima generato;
* - assegna "-1", ossia il valore tappo, alla cella successiva all'ultimo valore inserito;
* - non restituisce nulla. */
void vettoreCasuale (int v[])
{
int i, nv;
// Genera un numero casuale tra 0 e DIM -1 e lo assegna a nv
nv = ( rand() ) % DIM;

for (i = 0; i < nv; i++)
// Genera un numero casuale tra 0 e 100 e lo assegna a v[i]
v[i] = ( rand() ) % 101;

// Assegna -1 alla cella immediatamente successiva all'ultimo valore caricato
v[i] = -1;
}

/* Funzione che:
* - riceve un vettore di interi;
* - stampa i valori contenuti nel vettore;
* - non restituisce nulla. */
void stampaVettore (int v[])
{
int i;

// v[i] e' la cella del vettore da stampare: v[0] al primo ciclo, v[1] al secondo, v[2] al terzo...
for (i = 0; v[i] != -1; i++)
printf ("Valore in posizione %d del vettore: %d\n", i, v[i]);
}

/* Funzione che:
* - riceve in ingresso un vettore;
* - assume come valore massimo quello presente nella prima cella del vettore;
* - se il vettore non e' vuoto (ossia se il valore presente nella prima cella del vettore e' diverso da -1)
* scorre le altre celle per trovare il valore maggiore, fino ad arrivare al tappo;
* - restituisce il valore maggiore (o -1 se il vettore e' vuoto). */
int calcoloValMax (int v[])
{
int i, max;

max = v[0];

if (max != -1)
for (i = 1; v[i] != -1; i++)
if (max < v[i])
max = v[i];

return max;
}

/* Funzione che:
* - riceve un vettore di interi con tappo, un valore e il puntatore ad una variabile;
* - verifica che il vettore non sia vuoto; se e' vuoto mette -1 nella locazione di memoria puntata dal puntatore;
* - conta le occorrenze del valore e ne pone il numero nella locazione di memoria puntata dal puntatore;
* - non restituisce nulla.*/
void contaOccorrenze (int v[], int n, int* occ)
{
int i;

*occ = 0;

if (v[0] == -1)
*occ = -1;
else
for (i = 0; v[i] != -1; i++)
if (v[i] == n)
(*occ)++;
}

/* Funzione main che:
* - dichiara un vettore di interi;
* - ricalcola in base a data e ora il punto di partenza per la generazione di valori casuali (seed rand);
* - richiama la funzione per generare un vettore casuali di interi e lo stampa tramite apposita funzione;
* - richiama la funzione per trovare il valore massimo contenuto nel vettore;
* - richiama la funzione per trovare quante volte ricorra un valore in un vettore
* passando alla funzione come valore da trovare il valore massimo precedentemente trovato;
* - in base al valore restituito dalla funzione stampa il numero delle occorrenze del valore massimo
* o un messaggio che indica che il vettore e' vuoto. */
int main ()
{
int vett[DIM], valmax, numocc;

srand (time(NULL));

vettoreCasuale (vett);
printf ("Vettore:\n");
stampaVettore (vett);

valmax = calcoloValMax (vett);

contaOccorrenze (vett, valmax, &numocc);

if (numocc == -1)
printf ("Il vettore e' vuoto\n");
else
{
printf ("Il valore massimo contenuto nel vettore e' %d\n", valmax);

if (numocc == 1)
printf ("Il valore massimo %d ricorre %d volta\n", valmax, numocc);
else
printf ("Il valore massimo %d ricorre %d volte\n", valmax, numocc);
}

return 0;
}
89 changes: 89 additions & 0 deletions Vettori_con_tappo-Es6.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/*
Esercizio 6
Scrivere una funzione che preso in input un vettore con tappo, restituisca
in una variabile passata per riferimento che rappresenta il numero di volte
che il valore massimo nel vettore tappo si presenta.
Restituire -1 se il vettore con tappo è vuoto.
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIM 11

void vettoreCasuale (int v[])
{
int i, nv;
nv = ( rand() ) % DIM;

for (i = 0; i < nv; i++)
v[i] = ( rand() ) % 101;

v[i] = -1;
}

void stampaVettore (int v[])
{
int i;

for (i = 0; v[i] != -1; i++)
printf ("Valore in posizione %d del vettore: %d\n", i, v[i]);
}

int calcoloValMax (int v[])
{
int i, max;

max = v[0];

if (max != -1)
for (i = 1; v[i] != -1; i++)
if (max < v[i])
max = v[i];

return max;
}

void contaOccorrenze (int v[], int n, int* occ)
{
int i;

*occ = 0;

if (v[0] == -1)
*occ = -1;
else
for (i = 0; v[i] != -1; i++)
if (v[i] == n)
(*occ)++;
}

int main ()
{
int vett[DIM], valmax, numocc;

srand (time(NULL));

vettoreCasuale (vett);
printf ("Vettore:\n");
stampaVettore (vett);

valmax = calcoloValMax (vett);

contaOccorrenze (vett, valmax, &numocc);

if (numocc == -1)
printf ("Il vettore e' vuoto\n");
else
{
printf ("Il valore massimo contenuto nel vettore e' %d\n", valmax);

if (numocc == 1)
printf ("Il valore massimo %d ricorre %d volta\n", valmax, numocc);
else
printf ("Il valore massimo %d ricorre %d volte\n", valmax, numocc);
}

return 0;
}

0 comments on commit 227586a

Please sign in to comment.