tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
2224
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    Hallo Leute!

    Habe ein Problem mit einer Aufgabe die ich lösen muss für die Schule..
    Es geht um die Berechnung des Querparitätsbits wo die Ausgabe eine Dualzahl sein soll. Eigentlich kein Problem, nur sollen wir es mit statischen Feldern lösen, aber ich würde gerne die größe des Feldes je nach größe der Dualzahl anpassen. Daher müsste man wohl *wie ich annehme* dynamische Felder benutzen..

    Hier erstmal der Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <windows.h>
     
     
    void querbit(int dezimalzahl)
    {
        int quersumme=0, rest=0, i=0, dezimalrechnen=0;
        
        dezimalrechnen=dezimalzahl;
     
        for(dezimalrechnen;dezimalzahl>=0;i=i+1)
        {
            dezimalrechnen=dezimalrechnen/2;
        }
     
        int dualzahl[i];
     
        do
        {
            dezimalzahl=dezimalzahl/2;
            dualzahl[i]=dezimalzahl;
            i=i+1;
        }
        while(dezimalzahl!=0);
     
        printf("Die Dualzahl lautet: ");
        for(i;i>=0;i=i-1)
        {
            printf("%d",dualzahl[i]);
        }
    }
     
     
     
    void main()
    {
        int dezimaleingabe=0;
        char nochmal='n', auswahl=0;
        
        printf("Querparitaetsbitberechnung");
        Sleep(4000);
        system("cls");
     
        do
        {
            printf("Bitte geben Sie die positive Dezimalzahl ein: ");
            scanf("%d",&dezimaleingabe);
            fflush(stdin);
            system("cls");
     
            querbit(dezimaleingabe);
        }
        while(nochmal=='j' || nochmal=='J');
    }

    Ist der komplette Code *vorsichtshalber*.. An der Stelle wo ich das Feld deklariere kommen die Fehler.. Wär echt gut wenn mir jemand erklärt mit Beispiel wie ich daraus ein dynamisches Feld machen kann um das zu erreichen was ich oben beschrieben habe.

    PS: Benutze Visual C++ 6.0 wie in der Schule ...
     

  2. #2
    Tobiasm Tobiasm ist offline Mitglied Silber
    Registriert seit
    Apr 2003
    Ort
    Lemgo (NRW)
    Beiträge
    83
    Unter C++ gibt es keine variablen Arrays sondern nur sollche, Deren Größe zur Compilezeit schon fest steht. Das heißt, Du muss wohl oder übel folgendes machen:

    Code :
    1
    2
    3
    
     
    int *dualzahl;
    dualzahl = new int [i];

    Sonst bleibt alles gleich.

    MfG

    Tobias
     

  3. #3
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    danke ich probier das gleich mal aus
     

  4. #4
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    Deren Größe zur Compilezeit schon fest steht.
    Du kannst dir doch zur Laufzeit soviel Speicher auf dem Heap reservieren, wie er hergibt. Das was du meinst, bezieht sich auf den Stack.
     
    --
    GNU/Linux - Weil man echte Freunde nicht kaufen kann

  5. #5
    Tobiasm Tobiasm ist offline Mitglied Silber
    Registriert seit
    Apr 2003
    Ort
    Lemgo (NRW)
    Beiträge
    83
    Original geschrieben von Caminus
    Du kannst dir doch zur Laufzeit soviel Speicher auf dem Heap reservieren, wie er hergibt. Das was du meinst, bezieht sich auf den Stack.
    Arrays liegen aber immer auf dem Stack. Dasher muss der Speicher immer vom Heap geholt werden (wie ich gezeigt habe).

    MfG

    Tobias
     

  6. #6
    Registriert seit
    Apr 2001
    Ort
    Hamburg
    Beiträge
    1.309
    Mit
    Code :
    1
    
    Int * Pointer = new int[500];
    Erstellst du dir einen Integer Pointer - liegt auf dem Stack - welcher auf ein Integer-Array auf dem Heap zeigt.
     
    --
    GNU/Linux - Weil man echte Freunde nicht kaufen kann

  7. #7
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    das programm hängt sich immer bei der rechnung auf..

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <windows.h>
     
    void querbit(int dezimalzahl)
    {
        int rest=0, i=0;
        int *dualzahl;
        dualzahl = new int [i];
        
        for(dezimalzahl;dezimalzahl!=0;i++)
        {
            rest=dezimalzahl/2;
            dualzahl[i]=rest;
        }
        
        for(i;i>=0;i=i-1)
        {
            printf("%d",dualzahl[i]);
        }
        
    }
     
     
     
    void main()
    {
        int dezimaleingabe=0;
        char nochmal='n', auswahl=0;
        
        printf("Querparitaetsbitberechnung");
        Sleep(3000);
        system("cls");
     
        do
        {
            printf("Bitte geben Sie die positive Dezimalzahl ein: ");
            scanf("%d",&dezimaleingabe);
            fflush(stdin);
            system("cls");
     
            querbit(dezimaleingabe);
        }
        while(nochmal=='j' || nochmal=='J');
    }
     

  8. #8
    Radhad Radhad ist offline Mitglied Diamant
    Registriert seit
    Mar 2003
    Ort
    Wuppertal (NRW)
    Beiträge
    1.917
    Blog-Einträge
    35
    hab das problem selber gelöst *g*

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
     
    void querbit(int dezimalzahl)
    {
        int quersumme=0, rest=0, i=0;
        int dual[100]={0};
     
        do
        {
            rest=dezimalzahl%2;
            dezimalzahl=dezimalzahl/2;
            
            if(rest==0)
            {
                dual[i]=rest;
            }
            else
            {
                rest=1;
                dual[i]=rest;
            }
            i=i+1;
        }
        while(dezimalzahl!=0);
        
        printf("Die Dualzahl lautet ");
        
        for(i;i>=0;i=i-1)
        {
            printf("%d",dual[i]);
        }
        printf("\n\nWeiter ");
        getch();
        fflush(stdin);
        system("cls");
    }
     
     
     
    void main()
    {
        int dezimal=0;
        char nochmal, auswahl=0, bit=0;
        
        printf("Querparitaetsbitberechnung");
        printf("\nWeiter ");
        getch();
        fflush(stdin);
        system("cls");
     
        do
        {
            printf("Bitte geben Sie die Dezimalzahl ein: ");
            scanf("%d",&dezimal);
            fflush(stdin);
            system("cls");
     
            querbit(dezimal);
     
        
        printf("Wollen Sie eine weitere Schaltung berechnen?\n");
        printf("[J] / [N]: ");
        scanf("%c",&nochmal);
        fflush(stdin);
        system("cls");
        }
        while(nochmal=='j' || nochmal=='J');
    }

    nochmals danke an alle! bin auf den Fehler selber noch gekommen
    und zwar war
    Code :
    1
    
    int dual[100]={0};
    das problem!
     

Ähnliche Themen

  1. dynamische Felder, Felder mit Daten belegen
    Von jenny1106 im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 08.03.10, 10:42
  2. Dynamische Felder Kopiern
    Von XeoX im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 27.05.08, 11:30
  3. Dynamische DropDown Felder
    Von Kranetierli im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 17.09.07, 13:51
  4. Split und dynamische Option-Felder
    Von messmar im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 15.06.06, 11:47
  5. [VBS] dynamische Formular-Felder ausfüllen
    Von MiLa im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 18.03.05, 19:14