#include<stdio.h> #include<stdlib.h> #include<string.h> typedef char Griglia [3][3];

Documenti analoghi
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<windows.h>

Linguaggio C. Esercizio 1

IEIM Esercitazione XI Ricorsione e Ripasso. Alessandro A. Nacci -

Tutorato Programmazione 1 Modulo 2

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

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

Si vuole realizzare un programma in grado di verificare se una griglia assegnata rispetta le regole del gioco.

Esercizio 1 - Soluzione

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

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

int ninv; /* numero di inventario */

Esercizio 1: calcolo insieme intersezione

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

Esercizi. Stringhe. Stringhe Ricerca binaria

5. Quinta esercitazione autoguidata: liste semplici

Esercizi C sui tipi definiti dall utente

Informatica B

$QDOLVLGHOSURJUDPPDTXDGUDWR

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

dott. Sabrina Senatore

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

Esercizio 1 (15 punti)

Istruzioni decisionali

Esercizi proposti. Esercizio Confronto tra date Esercizio Quadrato Esercizio Indovina numero

Esercizio 1: Puntatori impiegati che sono manager

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

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

IEIM Esercitazione VIII Gioco dell impiccato e Mappa Del Tesoro. Alessandro A. Nacci -

Istruzioni Condizionali in C

Corso di Informatica B - Sezione D. Esercitazioni Linguaggio C

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

Esercitazione 11. Liste semplici

FUNZIONI che operano su LISTE

Informatica 2 modulo C Massimo Callisto De Donato

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

Esercizi proposti. Funzioni. Esercizio Confronto tra date. Esercizi proposti. Analisi. Controlli

Esercizi. La funzione swapint() primo tentativo

Fondamenti di Informatica L-A

Esercizi C su array e matrici

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

Informatica 1. Prova di recupero 21 Settembre 2001

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Linguaggio C - Strutture

Esercizio 1. Esercizio 1 Soluzione

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

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli

Esercizio 1. Esercizio 1 - Soluzione

Esercizi di programmazione in linguaggio C - Costrutto iterazione

Passare argomenti al programma

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

LIA. LIA - DEIS - Facoltà di Ingegneria - Università di Bologna Elementi di informatica L

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

Laboratorio di Programmazione

Esercizio 1. Esercizio - 1

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

FONDAMENTI DI INFORMATICA

Implementazione dell albero binario in linguaggio C++

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

Laboratorio di Informatica Grafica Linguaggio C

File e puntatori a file

Università degli Studi di Brescia. Vettori di variabili. ! Sono variabili aggregate in grado di memorizzare una collezione (organizzata) di oggetti

/* esercizio 5. Memorizzare l elenco dei prodotti giacenti in un magazzino in modo da poter effettuare le seguenti operazioni :

Fondamenti di Informatica T-1. Classi e array

Le classi. Per questo introduciamo le classi. Una classe è un nuovo tipo di dato che integra insieme i dati e le funzioni che possono agire sui dati.

Immettere un importo in euro intero e stampare il numero minimo di banconote da 20, 10, 5 e monete da 1 e 2 euro necessarie per pagarlo.

3 Costrutti while, for e switch

Creare una tabella di pivot

in più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...

Esercitazione 6. Array

Stringhe e tipi di dati strutturati

Algoritmi di Ricerca. Esempi di programmi Java

Esercitazione 4. Comandi iterativi for, while, do-while

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori -

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

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

Aritmetica postfissa


Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Scrittura formattata - printf

L'Allocazione Dinamica della Memoria nel linguaggio C

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice

C espressioni condizionali

Esempio: L EURO-CONVERTITORE (1) Scopo

IL PRIMO PROGRAMMA IN C

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

Cicli annidati e matrici di variabili

Programmazione I - Laboratorio

ISTRUZIONI DI ITERAZIONE

Programmazione di base

INFORMATICA. Strutture iterative

Liste a puntatori: un esercizio passo passo

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1. Esercizio 1 - Soluzione

Appunti sui Fogli Elettronici. Introduzione. D. Gubiani. 19 Luglio 2005

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

RELAZIONE DELLA PROVA DI LABORATORIO DI INFORMATICA

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

Transcript:

/*REALIZZARE IL GIOCO DEL TRIS COMPLETAMENTE FUNZIONANTE,CIOE'IL PROGRAMMA DEVE: -PERMETTERE DI GIOCARE A TRIS SU UN CAMPO 3x3 -STAMPARE IL CAMPO DOPO OGNI INSERIMENTO AGGIORNANDO LA POSIZIONE DEI SIMBOLI 'X' e 'O' -DEVONO POTER GIOCARE 2 GIOCATORI -NON E' POSSIBILE SOVRASCIVERE UN SEGNO IN UNA CASELLA GIA' OCCUPATA -VERIFICARE CHE IL GIOCATORE ABBIA INSERITO VALORI COERENTI CON LA GRANDEZZA DEL CAMPO -STAMPARE IL NOME DI CHI HA FATTO TRIS */ /*PS: QUESTO CODICE E' LA MIA SOLUZIONE, POSSONO ESSERCI CODICI DIVERSI CHE SVOLGONO LO STESSO PROGRAMMA E POSSONO ESSERE GIUSTI, QUINDI NON PRENDETE PER LEGGE QUELLO CHE HO SCRITTO PROGRAMMA CONSIGLIATO PER VISUALIZZARE IL FILE : DEV C++ ESERCIZI BY: E.L.*/ /* PER LA MIA SOLUZIONE HO CREATO DELLE FUNZIONI (E RELATIVI PROTOTIPI) CHE SVOLGONO I VARI STEP DEL PROGRAMMA, SE ANCORA NON SAI COSA SONO, ASPETTA DI STUDIARLE E POI RITORNA A VEDERE IL PROGRAMMA PER RIUSCIRE A COMPRENDERLO AL 100% */ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef char Griglia [3][3]; void stampagriglia(griglia ); void inizializzagriglia(griglia);//funzione che inizializzerà la griglia e la renderà "vuota"alla vista, in //sostanza la riempie di "spazi" int verificavincita(griglia);//funzione che verifica se ci sono stati tris.restituisce 1 se c'è e ha vinto il giocatore 1,2 se // ha vinto il giocatore 2 tris,0 se non c'è main() Griglia g; char nome1[15],nome2[15]; int c=0,x,y,v=0;//c=contatore,x,y=coordinate della cella dove si vuole inserire il segno,v=condizione di vincita printf("il giocatore 1 usa la X, come ti chiami? : ");

scanf("%s",nome1); printf("il giocatore 2 usa la O, come ti chiami? : "); scanf("%s",nome2); inizializzagriglia(g);//chiamo la funzione per inizializzare la griglia stampagriglia(g);//chiamo la funzione per stampare la griglia do printf("%s dove vuoi inserire la X (x,y) : ",nome1);//gioca il giocatore 1 while((g[y][x]=='x') (g[y][x]=='o'))//controllo che la casella selezionata sia effettivamente vuota printf("casella già occupata,%s dove vuoi inserire la X (x,y) : ",nome1); while((x>2) (x<0) (y>2) (y<0)) printf("coordinate non valide,%s dove vuoi inserire la X (x,y) : ",nome1);/ g[y][x]='x'; stampagriglia(g);//funzoine che stampa a video la griglia del tris V=verificaVincita(g); if((v==1) (V==2)) if(v==1) printf("\n%s ha fatto tris e ha vinto bravo!!\n\n",nome1); else printf("\n%s ha fatto tris e ha vinto bravo!!\n\n",nome2); break;//c'è stato tris quindi esco dal ciclo c++;//contatore delle caselle riempite if(c==9)//se c arriva a 9 vuol dire che sono state riempite tutte le celle break;

printf("%s dove vuoi inserire la X (x,y) : ",nome2);//gioca il giocatore 2 while((g[y][x]=='x') (g[y][x]=='o')) printf("casella già occupata,%s dove vuoi inserire la X (x,y) : ",nome2); while((x>2) (x<0) (y>2) (y<0)) printf("coordinate non valide,%s dove vuoi inserire la X (x,y) : ",nome2); g[y][x]='o'; stampagriglia(g);//funzoine che stampa a video la griglia del tris V=verificaVincita(g); if((v==1) (V==2)) if(v==1) printf("\n%s ha fatto tris e ha vinto bravo!!\n\n",nome1); else printf("\n%s ha fatto tris e ha vinto bravo!!\n\n",nome2); c++; break;//c'è stato tris quindi esco dal ciclo while(c<9);//se c supera 9 vuol dire che ci sono state riempite tutte le celle e probabilmente nessuno ha fatto tris if(c==9) printf("\nspiacenti nessuno ha fatto tris, alla prossima! :) \n\n"); system("pause"); void inizializzagriglia(griglia g) int x,y;

for(y=0;y<3;y++) // doppio ciclo che mette in ogni cella uno spazio in modo da fare risultare vuote le celle alla vista for(x=0;x<3;x++) g[y][x]=' '; void stampagriglia(griglia g) int x,k=0; printf("\n\n"); printf("\\ x\n"); printf("y\\ \n"); printf(" \\ "); printf("0 1 2 \n"); printf(" -------------------\n"); for(x=0;x<3;x++) printf("%d : %c : %c : %c :\n",k,g[x][0],g[x][1],g[x][2]); printf(" -------------------\n"); k++; int verificavincita(griglia g) int c; for(c=0;c<3;c++)// controllo se ci sono tris sulle righe if(g[c][0]+g[c][1]-2*(g[c][2])==0)//se c'è tris la somma delle prime 2 celle meno il doppio dell'ultima mi deve dare0 if(g[c][0]=='x') if(g[c][0]=='o') for(c=0;c<3;c++)// controllo se ci sono tris sulle colonne

if(g[0][c]+g[1][c]-2*(g[2][c])==0) if(g[0][c]=='x')//se questo if è vero vuol dire che il giocatore 1 ha vinto if(g[0][c]=='o') if(g[0][0]+g[1][1]-2*(g[2][2])==0)//controllo diagonale 1 if(g[1][1]=='x')//se questo if è vero vuol dire che il giocatore 1 ha vinto if(g[1][1]=='o') if(g[0][2]+g[1][1]-2*(g[2][0])==0)//controllo diagonale 2 if(g[0][2]=='x')//se questo if è vero vuol dire che il giocatore 1 ha vinto if(g[0][2]=='o') return 0; //se arrivo qui vuol dire che non ci sono stati tris e ritorno 0