Documenti analoghi
Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

Tipi di dato semplici

Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero:

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

7 Riepilogo. Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: costrutti condizionali (if,switch);

Esercizi C sui tipi definiti dall utente

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Stringhe e tipi di dati strutturati

LABORATORIO di INFORMATICA

Laboratorio di Informatica Ingegneria Clinica Lezione 12/12/2011. Prof. Raffaele Nicolussi

Gli array, le stringhe e le strutture

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

Il linguaggio C. Notate che...

Tipo di dato. Ci siamo già imbattuti in questo concetto. Definizione generale di tipo di dato

Esercizi. La funzione swapint() primo tentativo

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Tutorato Programmazione 1 Modulo 2

Esercizio 1: calcolo insieme intersezione

Linguaggio C - Strutture

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Esercitazione 6. Array

Esercizi. Stringhe. Stringhe Ricerca binaria

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Un excursus: le variabili e la memoria

Esercizio 1: Puntatori impiegati che sono manager

Definizione di nuovi tipi. Tipi e st rutture di dat i in C. Enumerazioni e typedef. Enumerazioni

Informatica B

Tipi e st rutture di dat i in C

Struct, enum, Puntatori e Array dinamici

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

void concatenastringhe (char st1[], char st2[], char stout[]) { int n=0,s=0; // dichiarazione variabili con inizializzazioni

Struttura dei programmi C

Esercizi di programmazione in C

Record in C: il costruttore struct.

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

Linguaggio C: puntatori

dott. Sabrina Senatore

Compito di Fondamenti di Informatica

Tipi di dati. una parola di memoria (16 o 32 bit), float. possibile rilevare errori nell uso di variabili mediante compilazione

Esercizio 1. Esercizio 1 - Soluzione

Esercitazione 9. Strutture ed Enumerazioni. Allocazione dinamica di memoria

LE STRUTTURE DATI PARTE 2: RECORD. Prof. G. Ciaschetti

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Lezione 9: Strutture e allocazione dinamica della memoria

3 Costrutti while, for e switch

Lezione 8 Struct e qsort

Tutorato Programmazione 1 Modulo 2

Informatica 2 modulo C Massimo Callisto De Donato

Linguaggio C - Funzioni

Introduzione al C. Esercitazione 8. Domenico Daniele Bloisi Raffaele Nicolussi. Corso di Laboratorio di Informatica Ingegneria Clinica

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

1 (4) 2 (4) 3 (12) 4 (6) 5 (6)

Corso di Fondamenti di Informatica

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

Scrittura formattata - printf

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

Esame del 3 febbraio 2010

Fondamenti di Informatica

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

RICERCA DI UN ELEMENTO

$QDOLVLGHOSURJUDPPDTXDGUDWR

Rappresentazione della memoria

Corso di Laurea in Matematica. LABORATORIO DI INFORMATICA Compito Totale - 21 Marzo Soluzione degli Esercizi

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Introduzione al linguaggio C Puntatori

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Fondamenti di Informatica Il linguaggio C (parte 1) IL LINGUAGGIO C

Esercizio 1. Esercizio 1

main() { int i; int a[10]={1,2,3,4,5,6,7,8,9,10}; /* inizializzazione in fase di definizione */ int b[10];

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Gestione delle stringhe in C

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Array multidimensionali e stringhe

1 (12) 2 (6) 3 (4) 4 (4) 5 (6)

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

- Dispensa III - PROGRAMMAZIONE C (Parte I)

Elementi di Informatica A. A. 2016/2017

Allocazione dinamica della memoria

Fondamenti di Informatica 2

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Laboratorio di Informatica Grafica Linguaggio C

# include<stdio.h> int main() { // Dichiarazioni int n; int i;

#include<stdlib.h> #include<stdio.h> #include<string.h> typedef char mese[20]; typedef struct { int giorno; mese month; int anno; } data;

Rappresentazione di dati

Laboratorio di Algoritmi e Strutture Dati

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

Politecnico di Torino

Esercizio 1: calcolo del massimo di una sequenza (versione 1)

Strutture Dati Dinamiche

Esercizio 1 - Soluzione

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib.

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Transcript:

int, char, float..

int, char, float..

enum -

enum{nome1, nome2,, nomen}; 0 N-1 enum{falso, vero}; falso=0 falso vero=1 vero

enum{quardi,cuori,fiori,spade}; enum{biondi,neri,castani,rossi,bianchi}; enum enum{lunedi=1, martedi=2,, domenica=7}; enum{lunedi=1, martedi,, domenica};

enum{falso, vero}; int a = 6; if ((a>0) == vero) printf("\n a e' positiva");

enum{falso, vero}; int a = 6; if ((a>0) == vero) printf("\n a e' positiva"); enum{lunedì=1, martedì=2,, domenica=7}; if (martedi == lunedi + 1) printf("\n giorni consecutivi"); if (martedi < giovedi) printf("\n precede");

struct -

struct struct

struct { tipo1 nomecampo1; tipo2 nomecampo2; tipon nomecampon;} nomestruct; struct nomestruct nomecampo1 struct { tipo1 nomecampoa,nomecampob; tipon campon;} nomestruct;

struct {tipo1 nomecampo1; tipo2 nomecampo2; tipon nomecampon;}nomestruct1, nomestruct2; main()

struct { float reale; float immaginaria; } numerocomplesso; struct { int numero; char seme[10]; } cartadagioco;

struct { char Nome[30]; char Cognome[30]; int Stipendio; char CodiceFiscale[16]; } dip1, dip2; struct { char marca[30]; char modello[100]; int anno; int cilindrata; int prezzo; } miaauto, tuaauto;

struct nomestruct.nomecampo; nomestruct.nomecampo nomecampo [indice]

struct {char nome[30]; char cognome[30]; int stipendio; char codfiscale[16]; } dip1, dip2; // accedere ai campi di tipo semplice dip1.stipendio = 30000; dip2.stipendio = 2*(dip1.stipendio 2000); // accedere ai campi array dip1.codicefiscale[0] = K ; // copia del valore da un campo array all altro for(i = 0 ; i < 16 ; i++) dip2.codfiscale[i]=dip1.codfiscale[i]; // copia il nome di un dipendente nell altro strcpy(dip2.nome, dip1.nome); dip1.cognome = dip2.cognome; // sbagliato!

printf scanf struct {char nome[30]; char cognome[30]; int stipendio; } dip1; printf("\ninserire Nome 1: "); scanf("%s", dip1.nome); printf("\ninserire Cognome 1: "); scanf("%s", dip1.cognome); printf("\ninserire Stipendio 1: "); scanf("%d", &dip1.stipendio); printf("%s %s, guadagna %d $", dip1.nome,dip1.cognome,dip1.stipendio);

datalaurea datanascita

#include<stdio.h> void main() {struct { int giorno; char mese[20]; int anno;} N, L; printf("\ninserire giorno"); scanf("%d", &N.giorno); printf("\ninserire mese"); scanf("%s", N.mese); printf("\ninserire anno"); scanf("%d", &N.anno); printf("nato il %d %s %d",n.giorno, N.mese, N.anno); L.giorno = N.giorno; strcpy(l.mese, N.mese); L.anno = N.anno + 24; printf("\nti laurerai il %d %s %d",l.giorno, L.mese, L.anno);}

struct { char nome[30]; char cognome[30]; int stipendio; char codicefiscale[16]; } dip1, dip2; dip1 = dip2;

dip1 dip2 ==!=

#include<stdio.h> void main() {struct { int giorno; char mese[20]; int anno;} N, L; printf("\ninserire giorno"); scanf("%d", &N.giorno); printf("\ninserire mese"); scanf("%s", N.mese); printf("\ninserire anno"); scanf("%d", &N.anno); L N printf("nato il %d %s %d",n.giorno, N.mese, N.anno); L = N; L.anno += 24; printf("\nti laurerai il %d %s %d",l.giorno, L.mese, L.anno);}

#include<stdio.h> void main() {struct { int giorno; char mese[20]; int anno;} N, L; printf("\ninserire giorno"); scanf("%d", &N.giorno); printf("\ninserire mese"); scanf("%s", N.mese); printf("\ninserire anno"); scanf("%d", &N.anno); printf("nato il %d %s %d",n.giorno, N.mese, N.anno); L = N; L.anno += 24; strcpy(l.mese, "dicembre\0"); printf("\nti laurerai il %d %s %d",l.giorno, L.mese, L.anno);}

-

int, char, float..

typedef typedef nometipo NuovoNomeTipo; typedef int Anno; typedef unsigned int TempAssoluta; typedef unsigned int Eta; void main() main NuovoNomeTipo

typedef struct typedef struct {int giorno; char mese[20]; int anno;} Data;

Data oggi, domani, dopodomani; Data calendario[365]; Data settimana[7]; Data andataritorno[2]; // popolare andataritorno[0] per l andata andataritorno[0].giorno = 12; strcpy(andataritorno[0].mese, "dicembre"); andataritorno[0].anno = 2012; // ritorno è come l andata andataritorno[1] = andataritorno[0]; // posticipo di 10 giorni il ritorno andataritorno[1].giorno += 10;

Data oggi, domani, dopodomani; Data calendario[365]; Data settimana[7]; Data andataritorno[2]; // popolare andataritorno[0] per l andata andataritorno[0].giorno = 12; strcpy(andataritorno[0].mese, "dicembre"); andataritorno[0].anno = 2012; // ritorno è come l andata andataritorno[1] = andataritorno[0]; // posticipo di 10 giorni il ritorno andataritorno[1].giorno += 10;

struct { char nome[30]; char cognome[30]; int stipendio; char codicefiscale[16]; Data datadinascita;} dip1; typedef struct {char nome[30]; char cognome[30]; int stipendio; char codicefiscale[16]; Data datadinascita; } Dipendente;

struct { char nome[30]; char cognome[30]; int stipendio; char codicefiscale[16]; Data datadinascita;} dip1; typedef struct {char nome[30]; char cognome[30]; int stipendio; char codicefiscale[16]; Data datadinascita; } Dipendente;

typedef double PioggeMensili[12]; PioggeMensili piogge87, piogge88, piogge89; typedef double IndiciBorsa[12]; IndiciBorsa indici87, indici88, indici89; double piogge87[12], piogge88[12], piogge89[12], double indici87[12], indici88[12], indici89[12];

typedef char Stringa[30]; typedef struct { Stringa nome; Stringa cognome; int stipendio; Stringa codfiscale; Data datanascita; } Dipendente typedef struct { char nome[30]; char cognome[30]; int stipendio; char codicefiscale[30]; Data datanascita; } Dipendente

enum typedef enum{gennaio = 1,, dicembre} Mese; Mese Mese mesecorrente; typedef struct {int giorno; Mese mese; int anno;} Data; enum

typedef float MieiDati; MieiDati typedef double MieiDati; typedef unsigned int TempAssoluta; TempAssoluta

typedef char Stringa[30]; Stringa stringa; typedef char stringa_t[30]; stringa_t stringa;

-

for(i = 0; i < r; i++) for(j = 0; j < c ; j++) { } printf("inserire elemento posizione [%d][%d]", i+1, j+1); scanf("%d", &M[i][j]);

for(i = 0; i < r; i++) { for(j = 0; j < c ; j++) printf("%5d", M[i][j]); printf("\n"); }

M n M n n M.

-

typedef typedef int Vettore[5]; Vettore Matrice4Per5[4]; Matrice4Per5 matrice1;

typedef typedef int Vettore[5]; Vettore Matrice4Per5[4]; Matrice4Per5 matrice1;

int matrice [2][3]; matrice[0] matrice[1] val. matrice[0][0] val. matrice[0][1] val. matrice[0][2] val. matrice[1][0] val. matrice[1][1] val. matrice[1][2]

int vett [Dim1]; &vett[i] == &vett[0] + i int matrice[dim2][dim1]; i &matrice[i][j]== &matrice[0][0]+ i *Dim1 +j i j matrice

typedef int Lotto[11][5][10]; val. Lotto[0][0][0] val. Lotto[0][0][9] Lotto[0][0] Lotto[0] Lotto[0][1] Lotto[0][5] Lotto[1] Lotto[1][0] Lotto[1][1]

M int M[4][5]; Matrice4Per5 typedef int Matrice4Per5[4][5]; Matrice4Per5 M; M[1][3]=7; int matrice3d[10][20][30]; matrice3d [2][8][15] matrice3d

x op y x y char < short < int < long < float < double < long double

short x; int y,z; x + y? x int int int x short unsigned

char < short < int < long < float < double < long double double d; int i; d = i; i double d i = d; d int i

// conversione da gradi Fahrenheit a Celsius #include<stdio.h> void main() { int Ftemp; float Ctemp; printf("inserire gradi Fahrenheit\n"); scanf("%d", &Ftemp); Ctemp = (5.0 / 9.0 ) * (Ftemp - 32); } printf("celsius %2.2f", Ctemp);

Ftemp int Ctemp float Ftemp = 50 1. Ctemp = (5.0 / 9.0) * (Ftemp - 32); 2. Ctemp = (5 / 9) * (Ftemp - 32); 3. Ctemp = (5.0 / 9) * (Ftemp - 32); 4. Ctemp = 1.0 * (5 / 9) * (Ftemp - 32); int Ctemp %d printf 1) Celsius = 10.0 5.0 9.0 float / float Ftemp int 32 int int (Ftemp 32) float 2) Celsius = 0 5 9 int / int 3) Celsius = 10.0 5.0 float 9 float 4) Celsius = 0 (1.0 0) 5) Celsius = 10 ( float Ctemp int

Ftemp int Ctemp float Ftemp = 50 1. Ctemp = (5.0 / 9.0) * (Ftemp - 32); 2. Ctemp = (5 / 9) * (Ftemp - 32); 3. Ctemp = (5.0 / 9) * (Ftemp - 32); 4. Ctemp = 1.0 * (5 / 9) * (Ftemp - 32); int Ctemp %d printf 1) Celsius = 10.0 5.0 9.0 float / float Ftemp int 32 int int (Ftemp 32) float 2) Celsius = 0 5 9 int / int 3) Celsius = 10.0 5.0 float 9 float 4) Celsius = 0 (1.0 0) 5) Celsius = 10 ( float Ctemp int

-

/* definizioni dei tipi */ typedef struct { char nome[20], cognome[20]; int cat; // contiene valori tra 1 e 5 int stipendio; } Impiegato; typedef enum {nord, nordest, est, sudest, sud, sudovest, ovest, nordovest} Esposizione; typedef struct { int superficie; /*in m^2*/ Esposizione esp; Impiegato occupante; } Ufficio; /* definizioni delle variabili */ Ufficio torre[20][40]; /* rappresenta un edificio di 20 piani con 40 uffici per piano */

int p, u; /* indice di piano nell edificio e di ufficio nel piano */ for (p=0; p<20; p++) for (u=0; u<40; u++) if (( torre[p][u].esp == sudest torre[p][u].esp == sud) && (torre[p][u].superficie >=20 && torre[p][u].superficie<=30)) { printf( \n il Signor %s è impiegato di categoria %d, torre[p][u].occupante.cognome, torre[p][u].occupante.cat); printf ( e ha uno stipendio pari a %d euro \n, torre[p][u].occupante.stipendio); }

int p, u; /* indice di piano nell edificio e di ufficio nel piano */ for (p=0; p<20; p++) for (u=0; u<40; u++) if (( torre[p][u].esp == sudest torre[p][u].esp == sud) && (torre[p][u].superficie >=20 && torre[p][u].superficie<=30)) { printf( \n il Signor %s è impiegato di categoria %d, torre[p][u].occupante.cognome, torre[p][u].occupante.cat); printf ( e ha uno stipendio pari a %d euro \n, torre[p][u].occupante.stipendio); }

int p, u; /* indice di piano nell edificio e di ufficio nel piano */ for (p=0; p<20; p++) for (u=0; u<40; u++) if (( torre[p][u].esp == sudest torre[p][u].esp == sud) && (torre[p][u].superficie >=20 && torre[p][u].superficie<=30)) { printf( \n il Signor %s è impiegato di categoria %d, torre[p][u].occupante.cognome, torre[p][u].occupante.cat); printf ( e ha uno stipendio pari a %d euro \n, torre[p][u].occupante.stipendio); }

int uffnord; /* uffnord fa da flag*/ for (p=0; p<20; p++) { uffnord = 0;//flag = 0 in ogni piano for (u=0; u<40 && uffnord == 0; u++) if(torre[p][u].esposizione == nord) uffnord = 1; /* se qui vale ancora 0 vuol dire che non ci sono uffici a nord*/ if (uffnord == 0); printf("il piano %d non ha edifici esposti a nord", p); }

int uffnord; /* uffnord fa da flag*/ for (p=0; p<20; p++) { uffnord = 0;//flag = 0 in ogni piano for (u=0; u<40 && uffnord == 0; u++) if(torre[p][u].esposizione == nord) uffnord = 1; /* se qui vale ancora 0 vuol dire che non ci sono uffici a nord*/ if (uffnord == 0); printf("il piano %d non ha edifici esposti a nord", p); }