brauche hilfe bei rechnung mit gerden /ungeraden zahlen
-
code:
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 Form1;
double a, b, z;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
//boxen lesen
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);//rechne
z=0;while(a>0)
{
int a;if (a%2 == 0); //if ((zahl&1) == 0) geht auch nicht
{
z=z+b;
a=int(a/2);
b=b2;
}
else
{
a=int(a/2);
b=b2;
}
}
Edit3=TextString(z)
}was brauch ich bei dem if als bedingung damit der das nur rechnet wenn a ungerade ist und des else wennn nicht ?
und wenn ich noch einen fehler überehen habe lasse ich mich gern korriegieren.
danke schhonmal
MfG
-
so z.b:
if (a & 1) { // ungerade } else { // gerade }
-
und wenn ich noch einen fehler überehen habe lasse ich mich gern korriegieren
zuersteinmal sollte dein Kompiler das ankreiden:
if (a%2 == 0); //if ((zahl&1) == 0) geht auch nichtda das Semikolon das "if" abwürgt und das untere else somit über ist! Knallt es! Vorsicht ohne einen else Zweig würde kein Fehler kommmen.
a=StrToFloat(Edit1->Text); while(a>0) { int a; if (a%2 == 0)Also die doublevariable bekommt vor der while schleife den Inhalt ausm Edit! soweit ja ok.
Aber da Du in der while schleife eine integer wert deklarierst (ohne initialisierung) wird dieser in der while genutzt, ohne jeglichen Bezug zu dem double wert!
Und was du mit dem Rest vorhast , weiß der Teufel!
Also kann da nur Bockmist rauskommen;-)sven