PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem: Zahlenbereiche/isdigit



wodka_cheery
25.11.2007, 01:52
Hallo,

was soll man nach der Schleife while (isdigit(z[i])) hinschreiben, wenn es einen Zahlenbereich überprüfen soll der auch Sonderzeichen enthält.
Es soll ein C-Code sein, der einen Zahlenbereich überprüft und im Anschluss dann etwas ausrechnent.

Hab den Zahlenbereich folgendermaßen überprüft:

while(!isdigit(z[i]))
i++;

ab hier weiss ich nicht recht was ich tun soll:
while(isdigit(z[i])
zahl1=?

while(isdigit(z[i])
zahl2=?

Um Hilfestellung bin ich sehr dankbar.

Gruß
wodka_cherry

Pascal
25.11.2007, 11:04
Deine Aufgabenstellung ist recht unkonkret. Vielleicht überlegst du dir nochmal genau, was du willst und postest das dann nochmal. Mit dieser Beschreibung kann man dir leider nicht helfen.

wodka_cheery
25.11.2007, 13:28
Hallo,

hier der Code:

# include<stdio.h>
# include<stdlib.h>
# include<ctype.h>
# include<math.h>

# define bool int
# define false 0
# define true 1

int main (void)
{
char z[1000];
int i;
bool zahl;
int x, a=2, untergrenze, obergrenze;

printf("Eingabe eines Zahlenbereichs: ");
gets(z);

i=0;
zahl=true;

while(z[i]!='\0')
{
if(zahl)
{
z[i]=untergrenze;
}
else if(zahl=!(isdigit(z[i])))
{
i++;
}
}

//Primfaktorzerlegung
for(i=untergrenze; i<=obergrenze; i++)
{

while(x%a!=0)
{
a++;
if (x == a)
{
printf("%d\n", x);
}
}

while(x%a==0)
{
x=x/a;
printf("%d*", a);

while (x%a!=0)
{
a++;
}

if(x == a)
{
printf("%d\n", x);
}

}
}
system("pause");
return 0;
}

Pascal
25.11.2007, 14:14
Du könntest uns auch verraten, was der Code machen soll...

wodka_cheery
25.11.2007, 14:21
Der Code soll aus einem gegebenen Zahlenbereich, der durch 2 getrennte Eingaben in einer Zeile geliefert eine Primfaktorzerlegung durchführen.
Das Problem bei meinem Code ist das es die Zerlegung nicht richtig durchführt. Am Bildschirm sieht man nach dem kompilieren eine endlose Schleife mit 2*2*... .

fluchtpunkt
26.11.2007, 00:58
welch edles Stueckchen Code...



z[i]=untergrenze;

for(i=untergrenze; i<=obergrenze; i++)

ich interpretiere mal:
setze arraywert auf was undefiniertes.
aber noch besser, erhoehre etwas undefiniertes solange bis etwas undefiniertes rauskommt.
Und dein x ist ebenfalls undefiniert.
Die undefinierten Werte sind bestenfalls 0. Das wuerde dann das Verhalten erklaeren was du siehst.



statt weiterer Primfaktorzerlegungsexperimente wuerde ich ein C Buch empfehlen.


und es gibt hier [ code] tags, nicht ohne Grund; macht keinen Spass das da oben zu lesen.

EDIT:
vermutlich suchst du sowas:


int main(void)
{
char z[1000];
int i = 0, j;
int zahl1 = 0, zahl2 = 0;

gets(z);
while (!isdigit(z[i]))
i++;
while (isdigit(z[i]))
{
zahl1 *= 10;
j = z[i] - 0x30;
zahl1 += j;
i++;
}
while (!isdigit(z[i]))
i++;
while (isdigit(z[i]))
{
zahl2 *= 10;
j = z[i] - 0x30;
zahl2 += j;
i++;
}
printf("Zahl1: %d Zahl2: %d\n", zahl1, zahl2);
}

BTW: warning: the `gets' function is dangerous and should not be used.

EDIT2: es fehlt allerdings noch die abfrage ob nur eine Zahl eingegeben wurde.