- LiFePO4 Speicher Test         
Ergebnis 1 bis 6 von 6

Thema: Problem: Zahlenbereiche/isdigit

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2007
    Beiträge
    7

    Problem: Zahlenbereiche/isdigit

    Anzeige

    Powerstation Test
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    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.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2007
    Beiträge
    7
    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;
    }

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    Du könntest uns auch verraten, was der Code machen soll...

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2007
    Beiträge
    7
    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*... .

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.12.2004
    Alter
    39
    Beiträge
    165
    welch edles Stueckchen Code...

    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:
    Code:
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test