User Tools

Site Tools


pub:labprog:20181105

05 novembre 2018

Go - Lezione 4 - Esercizi su cicli annidati e stringhe

/*
Scrivere un programma che legge un intero positivo n e 
stampa un quadrato di asterischi di lato n.
*/
package main
import "fmt"

func main() {
	var n int
	fmt.Print("Inserire il lato del quadrato: ")
	fmt.Scan(&n)

	for i:=0; i<n; i++ {
		for j:=0; j<n; j++ {
			fmt.Print("*")
		}
		fmt.Println()
	}
}
/*
Scrivere un programma che legge un intero positivo n e 
stampa un triangolo di asterischi di cateto n.
*/

package main
import "fmt"

func main() {
	var n int

	fmt.Print("Inserire la lunghezza del cateto: ")
	fmt.Scan(&n)
	
	for i:=1; i<=n; i++ {
		for j:=1; j<=i; j++ {
			fmt.Print("*")
		}
		fmt.Println()
	}
}
/*
Scrivere un programma che legge un intero positivo n (nr di righe) e 
stampa la lettera V

es: Input=3; Output=
*   *
 * * 
  *


Metodi diversi
*/

/*
package main
import "fmt"

func main(){
	var n int
	fmt.Print("Inserire il numero di righe della V: ")
	fmt.Scan(&n)
	for i:=0;i<n;i++{
		for j:=0;j<(n*2)-1;j++{
			if i==j || j==(n*2)-2-i{
				fmt.Print("*")
			}else{
				fmt.Print(".")
			}
		}
		fmt.Println()
	}
	
		
}
*/

package main
import "fmt"

func main() {
	var n int

	fmt.Print("Inserire il numero di righe:	")
	fmt.Scan(&n)
	
	for i:=1; i<n; i++ {
		for j:=0; j<i; j++ {
			fmt.Print("-")
		}
		fmt.Print("*")
		for k:=1; k<2*(n-i); k++ {
			fmt.Print("_")
		}
		fmt.Println("*")
	}

	for j:=0; j<n; j++ {
			fmt.Print(".")
	}
	fmt.Println("*")
}


/*
package main

import "fmt"

func main(){
    var n int
    fmt.Print("Inserire il numero di righe della V: ")
    fmt.Scan(&n)
    for i := 1; i <= n; i++ {
        for j:= 1; j <= 2*n - i - 1; j++ {
            if j == i {
                fmt.Print("*")
            } else {
                fmt.Print(" ")
            }
        }
        fmt.Println("*")
    }
}
*/
/*
Scrivere un programma che legge un intero positivo n e 
disegna una capanna

  /\
 //\\
//  \\
*/
package main
import "fmt"

func main(){
	var n int
	fmt.Print("Inserisci n: ")
	fmt.Scan(&n)

	for i:=n;i>0;i--{
		for j:=0;j<=2*n;j++{

			if j == i || (j == i+1 && i != n){
				fmt.Print("/")
			}else if j == 2*n-i+1 || j == 2*n-i{
				fmt.Print("\\")
				if j > 2*n-i{break}
			}else{
				fmt.Print(" ")
			}
		}
		fmt.Println()
	}

}


/*
package main

import "fmt"

func main() {
	var n int
	fmt.Print("Il programma stampa una capanna di altezza n. Inserire il valore n: ")
	fmt.Scan(&n)
	for r:=0;r<n;r++ {
		for c:=0;c<n*2;c++ {
			if (c==n-r && c!=n) || c==n-1-r {
				fmt.Print("/")
			} else if c==n+r || c==n-1+r {
				fmt.Print("\\")
			} else {
				fmt.Print(" ")
			}
		}
		fmt.Println()
	}
}






package main
import "fmt"
func main () {
	var n int 
	fmt.Println("inserire lato n capanna")
	fmt.Scan(&n)
	for i:=0;i<n;i++ {
		fmt.Print(" ")
		if i==n-1 {
			fmt.Println("/\\")
		}
	}
	 
    for x:=n-1;x>0;x-- {
        for y:=0;y<n*2;y++ {
        if   x==y {
        fmt.Print("//")
		}
		if  y==n*2-x-2  {
			fmt.Print("\\\\")
		} else {
            fmt.Print(" ")
        }
    }
    fmt.Println()

}
}

*/
/*
Dati giorno e ora precisa di nascita di qualcuno, calcolare quando ha raggiunto (o raggiungerà) un miliardo di secondi di età
*/

package main

import(
    "time"
    "fmt"
)

func main(){
    var year, month, day, hour int
    fmt.Print("Inserire data nel formato \"anno mese giorno ora\" ")
    fmt.Scan(&year, &month, &day, &hour)
    t := time.Date(year, time.Month(month), day, hour, 0, 0, 0, time.UTC)
    nt, _ := time.ParseDuration("1000000000s")
    fmt.Println(t.Add(nt))
}
/*
Calcolare la distanza di Hamming tra due stringhe
*/

package main

import(
    "fmt"
)

func main(){
    var string1, string2 string
    var distance int
    fmt.Print("Inserire le due stringhe da confrontare: ")
    fmt.Scan(&string1, &string2)
    for i, c := range string1 {
        for j, k := range string2 {
            if i == j && c != k {
                distance++
            }
        }
    }
    fmt.Println("La distanza di Hamming è", distance)
}
/*
Scrivere un programma che faccia il conto alla rovescia da 10 a 0 in secondi.
Hint: usare le funzioni Now, Sub e Seconds del package time;
non usare Sleep!
*/

package main

import(
    "fmt";
    "time"
)

func main(){
    seconds := 10
    for ; seconds >= 0; seconds-- {
        fmt.Println(seconds)
        start := time.Now()
        for time.Now().Sub(start).Seconds() < 1 {}
    }
}
pub/labprog/20181105.txt · Last modified: 2018/11/07 18:18 by lucafavalli