Toggle Chat
RM - Chat
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[002]Variabili-Pt.2-Es.
#1 OFFLINE
Inviato 20 August 2010 - 11:17 PM
Riporto i compiti che ho assegnato:
1)
-Richiesta di due dati input(tipo int);
-Operare con i due dati ricevuti nel seguente modo :
Addizione + Sottrazione + Output del risultato;
Moltiplicazione + Divisione + Output del risultato;
Infine rimostrare i due risultati attraverso una tabulazione orrizzontale;
2)
Creare un'applicazione che trovi l'area e il perimetro di un triangolo.
(l'area di un triangolo è basexaltezza/ 2 );
(in questo esercizio usate il tipo float).
3)
Creare un'applicazione che chieda:
-Nome e cognome;
-Età;
-Città di nascita;
-Scuola;
-Lavoro;
Per poi mostrare il tutto in output.
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#2 OFFLINE
Inviato 21 August 2010 - 09:57 AM
però non mi visualizza i valori delle var
Name, Age, City, School e Work
why?
#3 OFFLINE
Inviato 21 August 2010 - 11:56 AM
Comunque,per quanto riguarda il terzo esercizio è tutto giusto tranne per due cose:
-Puoi evitare di mettere fra parentesi (Console.ReadLine());,è un'errore di sintassi,diciamo,perchè non c'è nessuna operazione in corso.Sarebbe servito se avessi scritto una cosa del genere:
string name = (Console.ReadLine()) + " hey";
Questo avrebbe dato come output(facendo finta che do come dato input Tako) :
Tako hey.
Ma,neanche in questo caso serve la parentesi.
Un'altro errore è quando vuoi scrivere una nuova linea.
Va bene usare WriteLine,ma non dev'essere seguito da ReadLine in questo caso.Perchè come sappiamo,quel metodo attende la pressione di un tasto da parte dell'utente e così l'applicazione non avviene immediata.
Ora veniamo al problema che hai incontrato.
É molto semplice.In pratica prima di mettere l'applicazione nell'attesa di un dato input,tu hai messo il metodo ReadLine().Facendo ciò,non ti sei accorto che prima di inserire il dato,devi premere un qualsiasi tasto per avanzare e dopo di che assegnare alla variabile un determinato valore.
Quindi se avessi scritto:
string Name = Console.ReadLine();
Console.ReadLine();
Avremmo avuto :
Tako
_
Così il dato Tako viene memorizzato nella stringa Name.
Un'altro errore,non grave è la tua naming convention.Parlo soprattuto a come hai chiamato i lati.
Sarebbe stato meglio chiamare i tre lati: base,altezza e cateto,perchè così chi legge il codice comprende subito qual è l'altezza ecc e non si crea confusione.
In più nel metodo WriteLine non serve usare ToString(esso non fa altro che convertire un qualsiasi valore in una stringa),il quale è di proprietà contenuto in WriteLine.
Spero di esser stato esauriente (;
La prossima volta gli esercizi mettili in tre progetti diversi^^
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#4 OFFLINE
Inviato 21 August 2010 - 11:58 AM
adesso provvedo a risolvere e rifare ;)
#5 OFFLINE
Inviato 21 August 2010 - 12:13 PM
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#6 OFFLINE
Inviato 21 August 2010 - 12:32 PM
Esercizio2
Esercizio3
ora funge tutto ^^
#7 OFFLINE
Inviato 21 August 2010 - 01:03 PM
In più noto che continui ad usare il metodo ToString in WriteLine,ma fa niente metterlo oppure ometterlo è la stessa cosa^^
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#8 OFFLINE
Inviato 21 August 2010 - 01:26 PM
#9 OFFLINE
Inviato 03 September 2010 - 08:53 AM
Codice esercizio 2 (molto molto personale xD):using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("CALCOLO PERIMETRO ED AREA DEL TRIANGOLO: 1=Isoscele 2=Scaleno 3=Equilatero");
Console.WriteLine();
Restart:
Console.WriteLine("Per favore, scegli il triangolo (1,2 o 3): ");
String s = Console.ReadLine();
int sel2 = int.Parse(s);
switch (sel2)
{
case 1:
{
Console.WriteLine("Hai scelto di calcolare perimetro ed area del triangolo isoscele.");
Console.WriteLine();
Console.WriteLine("Inserisci la misura dei lati obliqui: ");
String mis = Console.ReadLine();
//Lati obliqui
int oblq = int.Parse(mis);
Console.WriteLine();
Console.WriteLine("Inserisci la misura della base: ");
String mis2 = Console.ReadLine();
//Base
int b = int.Parse(mis2);
//Calcolo altezza tramite Pitagora
double altezza = Math.Sqrt((oblq * oblq) - (b / 2) * (b / 2));
//Calcolo area
double area = (b*altezza)/2;
//Calcolo perimetro
double perimetro = b + oblq*2;
Console.WriteLine();
Console.WriteLine("Area: " + area + "\n" + "Perimetro: " + perimetro);
break;
}
case 2:
{
Console.WriteLine("Hai scelto di calcolare perimetro ed area del triangolo scaleno.");
Console.WriteLine();
Console.WriteLine("Inserisci la misura del 1° lato: ");
String primo = Console.ReadLine();
Console.WriteLine("Inserisci la misura del 2° lato: ");
String secondo = Console.ReadLine();
Console.WriteLine("Inserisci la misura del 3° lato: ");
String terzo = Console.ReadLine();
int one = int.Parse(primo);
int two = int.Parse(secondo);
int tree = int.Parse(terzo);
//Calcolo semiperimetro
double semip = (one + two + tree) / 2;
//Calcolo area tramite formula di Erone
double area = Math.Sqrt(semip * (semip - one) * (semip - two) * (semip - tree));
//Calcolo perimetro
double perimetro = one + two + tree;
Console.WriteLine("Area: " + area + "\n" + "Perimetro: " + perimetro);
break;
}
case 3:
{
Console.WriteLine("Hai scelto di calcolare perimetro ed area del triangono equilatero.");
Console.WriteLine();
Console.WriteLine("Scrivi la misura di un lato (i lati di un triangolo equilatero sono tutti uguali): ");
String mis = Console.ReadLine();
int lato = int.Parse(mis);
//Calcolo altezza
double altezza = (lato * (Math.Sqrt(3))) / 2;
//Calcolo area
double area = (lato * altezza) / 2;
//Calcolo perimetro
double perimetro = lato * 3;
Console.WriteLine("Area: " + area + "\n" + "Perimetro: " + perimetro);
break;
}
default:
{
goto Riscegli2;
}
}
Riscegli2:
Console.WriteLine();
Console.WriteLine("Vuoi riscegliere il triangolo? Scrivi Si o No: ");
String ver2 = Console.ReadLine();
if (ver2.Equals("Si"))
{
goto Restart;
}
else if (ver2.Equals("No"))
{
goto End;
}
else
{
Console.WriteLine();
Console.WriteLine("Devi scrivere Si o No");
goto Riscegli2;
}
End:
return;
}
}
}
#10 OFFLINE
Inviato 03 September 2010 - 12:36 PM
Allora,innanzitutto complimenti perchè hai saputo usare l'istruzione switch (:
Di errori non ne vedo se non fosse per alcuni dubbi che mi hai fatto sorgere:
-Non capisco perchè prendi le misure dei lati input come string e poi li converti in int.É giusto ma si può fare a meno.
-Ti sconsiglio di usare il Goto,perchè rallenta il processore e va a formare un codice incomprensibile.Ma in questo caso,essendo una piccola applicazione,può andare.
-il metodo CompareTo è usato per l'ordine alfabetico,in questo caso l'hai usato per altro.Avresti potuto usare il metodo Equals (:.
-Ho notato un piccolo bug (: .Se all'inizio dell'applicazione come input gli dai un numero che non sia uno dei tre richiesti,va all'etichetta default(di regola XD) e se non scrivi esattamente la risposta,viene rimostrata la domanda in loop.
La soluzione è semplice.In pratica in C# non può avvenire il passaggio implicito da un etichetta ad un'altra(mentre in C++ si).
Quindi per come l'hai strutturato tu è errato.Per risolverlo basta fare un bel goto alla label "Riscegli2" e tutto si risolve. (;
Spero di essere stato esauriente^^
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#11 OFFLINE
Inviato 03 September 2010 - 12:55 PM
#12 OFFLINE
Inviato 03 September 2010 - 01:03 PM
Comunque sono errori comuni all'inizio,con l'esperienza vedrai che non li farai più^^
Comunque ho già detto ocme risolvere il bug XD,una cavolata per qualcuno che conosce le eccezioni.Io leggo sempre la libreria online msdn^^
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#13 OFFLINE
Inviato 03 September 2010 - 01:27 PM
Te dici di mettere un controllo alla selezione del triangolo all'inizio, se l'utente non mette 1, 2 o 3 devo fare un goto a Riscegli2, qualcosa del genere?
#14 OFFLINE
Inviato 03 September 2010 - 02:04 PM
da così
default:
{
Console.WriteLine();
Console.WriteLine("Devi scegliere 1, 2 o 3");
Console.WriteLine();
Console.WriteLine("Vuoi riscegliere il triangolo? Scrivi Si o No: ");
String ver = Console.ReadLine();
Riscegli:
if (ver.CompareTo("Si") == 0)
{
goto Restart;
}
else if (ver.CompareTo("No") == 0)
{
goto End;
}
else
{
Console.WriteLine();
Console.WriteLine("Devi scrivere Si o No");
goto Riscegli;
}
}
a :
default: goto Riscegli2;
Tutto qui^^
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#15 OFFLINE
Inviato 03 September 2010 - 02:29 PM
#16 OFFLINE
Inviato 03 September 2010 - 02:33 PM
Kuraudo Sutoraifu, dice:
Ma no XD è normale,non sapevi questa eccezione dell'istruzione switch e dopo tutto questa è una scuola online,serve per imparare no? :3
Fra poco nuova lezione O:
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#17 OFFLINE
Inviato 03 September 2010 - 02:36 PM
Aggiorno il programma
#18 OFFLINE
Inviato 03 September 2010 - 02:41 PM
Kuraudo Sutoraifu, dice:
Sisi,ma prima finisco quelle sul C#
Ho già un progetto tutto in mente XD
P.S.Ho iniziato a studiare il 3D :P
Sono così annoiato da offrirmi come eventer per qualsiasi progetto (:NightEngine
#19 OFFLINE
Inviato 03 September 2010 - 03:24 PM
#20 OFFLINE
Inviato 03 September 2010 - 03:32 PM
1 utente(i) stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi












