1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Hab da ein Problem mit einem c-Script

    • Frage
  • Booster84
  • 24. Oktober 2003 um 08:21
  • Unerledigt
  • Booster84
    1
    Booster84
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 24. Oktober 2003 um 08:21
    • #1

    Halo ihrz!
    ich hab mich die letzten paar Tage mit C befasst und bin da auf folgenden Code gestoßen

    Code
    #include <stdio.h>
    #define ANZAHL 24
    void main()
    {
    	short VerkehrsZaehlung[ANZAHL+1];
    	short *pt, index, summe;
    	VerkehrsZaehlung[ANZAHL]= -1;
    	printf("bitte %d Werte eingeben\n",ANZAHL );
    
    
    	for (index =0; index < ANZAHL; index++)
    		scanf("%d",&VerkehrsZaehlung[index]);
    
    
    	for (summe = 0, pt=&VerkehrsZaehlung[0]; *pt!=-1; pt++)
    		summe = summe + *pt;
    
    
    	printf("Summe: %d\n", summe);
    }
    Alles anzeigen


    Aber dummerweise gibt er mir da Zahlen aus die unmöglich sind und ich weiß nicht warum!!!
    Deshalb meine Frage: brauch ich ein neues hirn oder nen anderen Compiler???

    :confused: bin noch relativ neu, also nehmt mir nicht alles so krumm :confused:

  • Bug
    4
    Bug
    Mitglied
    Reaktionen
    1
    Punkte
    121
    Beiträge
    23
    • 24. Oktober 2003 um 09:20
    • #2

    Was sollten denn für Zahlen rauskommen?

    Vielleicht hast du ja einen Überlauf, da ein short nur einen Wertebereich von -32768 bis 32767 hat.

    Viele Menschen sind zu gut erzogen, um mit vollem Mund zu sprechen,
    aber sie haben keine Scheu, es mit leerem Kopf zu tun.
    (Orson Welles)

  • Irrlicht
    7
    Irrlicht
    Mitglied
    Reaktionen
    1
    Punkte
    421
    Beiträge
    82
    • 24. Oktober 2003 um 09:53
    • #3

    doch nicht..

    das irrlicht

  • segfault
    8
    segfault
    Mitglied
    Reaktionen
    3
    Punkte
    583
    Beiträge
    113
    • 24. Oktober 2003 um 10:14
    • #4
    Zitat von Booster84
    Code
    VerkehrsZaehlung[ANZAHL]= -1;
    ...
    	for (summe = 0, pt=&VerkehrsZaehlung[0]; *pt!=-1; pt++)
    		summe = summe + *pt;
    ;
    }

    warum tust du das? wozu ueberhaupt einen pointer? warum VerkehrsZaehlung[ANZAHL] auf -1 ?
    find ich ziemlich sinnlos...

    mein vorschlag:

    Code
    #include <stdio.h>
    #define ANZAHL 4
    int main(void)
    {
            int Zaehlung[ANZAHL];
            int index, summe, x;
    
    
            printf("bitte %d Werte eingeben\n",ANZAHL);
    
    
            for (index=0; index<ANZAHL; index++) {
                    printf("zahl %d eingeben: ", index);
                    scanf("%d",&Zaehlung[index]);
            }
            summe = 0;
            for (x=0; x<ANZAHL ; x++)
                    summe = summe + Zaehlung[x];
    
    
            printf("Summe: %d\n", summe);
    }
    Alles anzeigen

    even newton had his best ideas on an apple...

  • johnny!
    4
    johnny!
    Mitglied
    Punkte
    150
    Beiträge
    24
    • 25. Oktober 2003 um 13:03
    • #5

    Also normal tät ich das auch anders machen. Aber wenns einfach nur um ein Beispiel zur Übung des Umgangs mit Pointern is, find ich es sehr originell. Gfallt ma.

    Ich würd mal das ganze debuggen, oder zumindest Statusmessages ausgeben.

    scanf scheint aufgrund von %d den nächsten short von VerkehrsZaehlung zu überschreiben. Daher wird dein "VerkehrsZaehlung[ANZAHL] = -1;" mit 0 überschrieben. Somit läuft die ganze Schleife willkürlich weiter bis irgendwann im Speicher ein -1 auftaucht. Und immer werden irgendwelche Speicherinhalte zur summe addiert, daher die komischen Werte.

    Ich würd entweder das scanf anders formulieren, oder du machst das array um noch 1 größer und hast halt ein ungenütztes Feld drin.

    [edit]
    Verwende einfach als Conversion Specifier in der scanf anstatt von %d einfach %hd (steht für short int oder unsigned short int), dann sollte es funktionieren.
    [/edit]

    ... und ich möchte noch darauf hinweisen:
    Schranken verlaufen nicht zwischen Völkern,
    sondern neben den Gleisen!
    (Quetschnpaua)

  • n00bian
    2
    n00bian
    Mitglied
    Reaktionen
    1
    Punkte
    31
    Beiträge
    5
    • 27. Oktober 2003 um 00:00
    • #6

    C IST KEINE SCRIPT-SPRACHE - soviel zeit muss sein

    n00bian
    n00bian@n00bism.net
    http://n00bism.net (online comic & art)

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung