Arduino Forum

International => Deutsch => Topic started by: upsinfonotice on Jul 17, 2011, 07:27 pm

Title: Neuling Grundlagen
Post by: upsinfonotice on Jul 17, 2011, 07:27 pm
Guten Abend,

ich beschäftige mich etwas mit dem Arduino. Die Vorlagen nachzubauen und zu modifizieren gehen recht gut, nur jetzt wollte ich etwas eigenes umsetzen und komm nicht so recht weiter.
Ich möchte die Zahlen 1 3 9 durchrechnen lassen. Jede Zahl darf nur einmal vorkommen aber immer unterschiedlich mit *-+/ zusammengesetzt.
Ich finde da keine Möglichkeit zwischen den Zahlen eine Variable zu setzen die nach jedem loop ausgetauscht wird.

Mein Ansatz wäre folgender:
Schritt 1
Die Zahlen haben eine fixe Reihenfolge und nur die Operatoren werden variabel deklariert. 
Nur wie kann ich diese untereinander austauschen?

Gibt es schon jemand der sich mit Möglichkeiten oder Wahrscheinlichkeiten bei Arduino auseinandergesetzt hat?

Gruß,
Peter
Title: Re: Neuling Grundlagen
Post by: Joghurt on Jul 17, 2011, 07:30 pm

Ich möchte die Zahlen 1 3 9 durchrechnen lassen. Jede Zahl darf nur einmal vorkommen aber immer unterschiedlich mit *-+/ zusammengesetzt.

Ich hab KEINE Ahnung was Du damit gemeint hast.  ;)
Title: Re: Neuling Grundlagen
Post by: upsinfonotice on Jul 17, 2011, 07:42 pm
Na alle Möglichkeiten die man errechnen kann aus 1_3_9 wenn immer nur der Operator getauscht wird.
Beispiel:
1+3+9= 13
1+3*9= 28
usw.
Title: Re: Neuling Grundlagen
Post by: Pogg on Jul 17, 2011, 08:01 pm
hm...
ich würde eine zufallszahl generieren und es dann in einer switch case bedingung abarbeiten.. bisl aufwending aber würde gehen ^^


ungefähr so

switch (zufallszahl) {
case 1: ..... 


müsstest natürlich die zufallszahl begrenzen .. und mit + - / * haste 4^2 möglichkeiten falls ich mich nicht irre  (;

also zufallszahl bis 16 begrenzen
und dann jede case zeile einzeln schreiben...

denke das klappt so (;

Title: Re: Neuling Grundlagen
Post by: Joghurt on Jul 17, 2011, 08:09 pm
Ich würd was in der Art machen:
Code: [Select]

double calculateResult(double a, double b, int operator) {
 if (operator%4==0)
   return a+b;
 if (operator%4==1)
   return a-b;
 if (operator%4==2)
   return a*b;
 if (operator%4==3)
   return a/b;
}

loop() {
 for (int t=0; t<16;t++) {
//...
   double result = calculateResult(calculateResult(1, 3, t/4), 9, t);
//...
 }
}
Title: Re: Neuling Grundlagen
Post by: Pogg on Jul 17, 2011, 10:57 pm
Jo des vom Joghurt ist echt nice.. wär ich auch net drauf gekommen (;
Title: Re: Neuling Grundlagen
Post by: upsinfonotice on Jul 18, 2011, 06:54 am
danke für die Hilfe, nur hab ich meine Probleme das nachzuvollziehen.
Ich arbeite mit dem Buch Arduino Praxiseinstieg
Darin kommt ein teil der Befehle von die gar nicht vor.
Hat jemand ein Buchtip in dem alle oder nahezu alle Befehle stehen?

Du schreibst:
....(operator%4==0)
% und == kommen hier überhaupt nicht gemeinsam vor.
% = modulo / == ist gleich
Title: Re: Neuling Grundlagen
Post by: Joghurt on Jul 18, 2011, 07:53 am

% und == kommen hier überhaupt nicht gemeinsam vor.
% = modulo / == ist gleich

(t%4==0) bedeutet soviel wie "Wenn der Restwert der Ganzzahldivision von t durch 4 gleich Null ist, dann mache folgendes", was zutrifft wenn t 0, 4, 8 oder 12 ist.

Gleiches mit "==1", das trifft dann bei 1, 5, 9 und 13 zu.

Und so weiter... ;)
Title: Re: Neuling Grundlagen
Post by: upsinfonotice on Jul 18, 2011, 09:06 am
ok danke,  damit werde ich mich heute Abend in ruhe beschäftigen.
Hast du ein Buch-Tip für mich?

Gruß,
Peter
Title: Re: Neuling Grundlagen
Post by: Joghurt on Jul 18, 2011, 09:17 am
Eigentlich nicht, ich persönlich fand die Learing-Seite (http://arduino.cc/en/Tutorial/HomePage) auf arduino.cc mehr als ausreichend, seither benutz ich zum Nachschlagen die Reference-Seite (http://arduino.cc/en/Reference/HomePage) bzw. den entsprechenden Link im Menü der Entwicklungsumgebung...

Allerdings konnte ich schon vor dem Arduino programmieren, bin also nicht das beste Beispiel für einen Anfänger... ;)