Hilfe bei Programm



  • Hi, ich programmiere mal wieder ein wenig und diesmal ein Programm bei dem ich kontrolliere wann eine Zahl das letzte mal in einem Vektor vorkommt. Allerdings macht das Programm leider nicht das was ich erwartet habe sondern stürzt leider ab 😞 Jetzt wollte ich mal fragen wo mein/e Fehler liegen und wie ich diese beheben kann.
    Gruß Marco

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int *ptr = NULL;
    int i;
    
    int psvektor (int a[],int b, int c)
    {
    
    	for (i = b ; i >= 0; --i)
    		ptr = &a[i-1];
    		if (*ptr = c);
    		return (i-1);
    
    }
    
    int main(int argc, char *argv[])
    {
    
    int b, c ,j;
    
    	printf ("Bitte gesuchte Zahl eingeben: ");
    	scanf ("%d", c);
    	printf ("Bitte Laenge des Vektors eingeben: ");
    	scanf ("%d", b);
    
    int vektor [b];
    
    	for (i = 0; i < b; i++)
    		printf ("Bitte Komponente des Vektors eingeben: ");
    		scanf ("d", j);
    		vektor [i] = j;
    
    	psvektor (vektor,b , c);
    
    	if (psvektor > 0)
    	printf ("Die gesuchte Zahl befindet sich das letzte mal an der Stelle: %d", (i+2));
    	else
    	Printf ("Die gesuchte Zahl befindet sich nicht im Vektor.");
    
      system("PAUSE");
      return 0;
    }
    


  • Wo soll man anfangen?
    -Globale Variablen
    -Zeile 13-16: Code passt nicht zur Einrückung
    -Wieso diese ptr-Gefrickel da?
    -Zeile 14: Willst vermutlich == und kein Semikolon am Ende
    -Zeile 30: VLA und sollte in C nicht kompilieren.
    -Zeile 33-35: Code passt nicht zur Einrückung
    -Einrückung generell komisch



  • Entschuldigung wegen der Einrückung aber gibts da nen Standard den ich beachten sollte ? Wenn ja wo finde ich den?



  • Lies ein (gutes) Buch. Du hast bereits Schwierigkeiten beim Verwenden von scanf mit einfachen format string . Du hast daher Zeiger noch nicht verstanden. Wir waren alle mal da, aber das ist in meinen Augen das größte Problem bei dir.

    Wie du einrückst, ist zwar nicht egal, aber es sehr viele Stile. Nimm einen und versuche diesen zu befolgen. Es gibt sogar Tools, die das überprüfen oder automatisch richtig einrücken, was aber nicht heißen sollen, dass du das vernachlässigen kannst.

    Welchen Compiler verwendest du (und wie - benutzt du eine IDE?)? Bei GCC oder Clang ist die Angabe des Standards (mit -std=c99 , z.B.) und die Aktivierung von Warnungen durch mindestens -Wall ( -Wextra und -Wpedantic sind in vielen Fällen auch noch hilfreich).

    Wenn der Compiler keine Warnungen mehr ausgibt, und du mit deinen Programm immer noch Probleme hast oder nur nicht weißt, wie du die Warnungen richtig behebst, darfst du hier gerne nachfragen.


Log in to reply