Upload
nguyen-viet-hoa
View
212
Download
0
Embed Size (px)
DESCRIPTION
Vorgehen ein Algorithmus zu lösen
Citation preview
//Vorgehen
1.) Input / Output
reInput: ----
Output: int oder int[] //Array
2.) Randbedingung
Input:-----//Vorgehen
Output: Zahl muss Algorithmus erfüllen
{
3.) static int zahlSuche()
4.) ...
5.) Algorithmus entwerfen
//1. Nachvollziehen / Skizzieren
Zahl 12
12 / 2 = 6:
6 * 6 = 36;
36 != 21;
//2. Skizze in Code übersetzen
static int zahlSuche(){
int ergebnis = 0;
for(int i = 10; i <= 99; i++)
{
int zahl = (i/2) *(i/2);
//Vergleich mit umgedrehten Zahl
int ziffer2 = i % 10; //12 mod 10 = 2
int ziffer1 = i / 10; // 12 div 10 = 1
int neueZahl = ziffer2*10 + ziffer1; //2 * 10 + 1;
if (neueZahl == zahl){
ergebnis = i;
}
}
return ergebnis;
}
//Aufgabe 2
1. Input /Output
Input: ----
Output: double
2.Randbedingung von Input / Output
nichts
3. Signatur erzeugen
Funktionssignatur:
static <Rückgabe-Datentyp:Output> <Funktionsbezeichner> (<Paramterliste:Input>)
static double Reihe(){
}
4. Randbedingung umsetzen
5. Algorithmus entwerfen:
//Skizze:
- Summe (Schleife)
- Potenz(Schleife)
- als 2er Potenz
//Skizze in Code überführen:
static double Reihe(){
double ergebnis = 1;
int potenz = 1,
double ergebnisNext = ergebnis; //....redundant
//Doppelschleife:
do
{
ergebnis = ergebnis
//mein Vorschlag:
do
{
ergebnis = ergebnisNext;
potenz = potenz << 1;
ergebnisNext +=1.0 / potenz;
}
while(ergebnis != ergebnisNext);
return ergebnis;
}
// 1,9459380
// 1,9459587
// 1,9459981
// 1,945998
Aufgabe 3
1.) Input / Output;
Input: int[]
Output: int
- Zurückgabe Index der ersten Zahl eines Vergleichpaars
2.) Randbedingung
.... // keine
3.) Signatur
static int DistanzBerechnen(int[] zahlen){ }
4.) ...
5.) Algorithmus
//Skizze
- Speichern Abstand
- Speichern Index
- vergleiche Abstände
- => Abstand mit der gerade gespeicherten Zahl
- wenn Abstand kleiner ist als Abstand des vorherigen Vergleichspaars dann speichern
//skizze in code umsetzen
//Tutorvorschlag:
static int distanzRechner(int[] array)
{
//Paarweise vergleichen
int vergleichAbstand;
int speichernPosition = 0;
int minWertAbstand = 100; //?
for (int i = 0; i < array.Length - 1; i++)
{
vergleichAbstand = Math.Abs(array[i] - array[i + 1]);
if (vergleichAbstand < minWertAbstand)
{
minWertAbstand = vergleichAbstand;
speichernPosition = i;
}
}
return speichernPosition;
}
static int DistanzBerechnen(int[] zahlen)
{
int abstand = 0;
int minabstand = 10000;
int speicher = 0;
for (int i = 0; i < zahlen.Length-1; i++)
{
abstand = Math.Abs(zahlen[i] - zahlen[i + 1]);
if (abstand< minabstand)
{
minabstand = abstand;
speicher = i;
}
}
return minabstand;
}
//Tutorvorschlag:
static void EANPruefen(string pfadLesen, string pfadSchreiben)
{
StreamReader reader = new StreamReader(pfadLesen);
StreamWriter writer = new StreamWriter(pfadSchreiben);
while(reader.Peek() > -1)
{
string pfad = reader.ReadLine();
writer.WriteLine(pfad+ " "+EanPruefziffer(pfad));
}
reader.Close();
writer.Close();
}
//
enum Jahreszeiten { Sommer, Winter, Ganzjahr};
class Reifen
{
int durchmesser;
Jahreszeiten reifenJahreszeit;
public int Durchmesser
{
get { return durchmesser; }
}
public Jahreszeiten ReifenJahreszeit
{
get { return reifenJahreszeit; }
}
public Reifen(int durchmesser, Jahreszeiten reifenJahreszeit)
{
this.durchmesser = durchmesser;
this.reifenJahreszeit = reifenJahreszeit;
}
public static Reifen Goesster(Reifen[] reifenArray)
{
int max = 0;
int position = -1;
for(int i = 0; i < reifenArray.Length; i++)
{
if(reifenArray[i].ReifenJahreszeit == Jahreszeiten.Sommer)
{
if(reifenArray[i].Durchmesser >= max)
{
position = i;
}
}
}
if(position == -1)
{
return null;
}
else
{
return reifenArray[position];
}
}
}
static void Main(string[] args)
{
Reifen reifen1 = new Reifen(3, Jahreszeiten.Sommer);
Reifen reifen2 = new Reifen(4, Jahreszeiten.Sommer);
Reifen reifen3 = new Reifen(2, Jahreszeiten.Winter);
Reifen[] rArray = { reifen1, reifen2, reifen3 };
//hier wird eine statische Methode
Reifen ergebnisReifen = Reifen.groesster(rArray);
}
}