argc, argv



  • #include <stdio.h>
    #include <stdlib.h>
    
    void main(int argc, char argv[])
    {
      float Zahl1 = 0,
            Zahl2 = 0;
    
      int i;
    
      for ( i = 1; i < argc; i++ )
      {
      Zahl1 = (float) strtod(argv[i], NULL);
      };
      Zahl2 = Zahl1 / (argc-1);
    
      printf("Zahl1: %f", Zahl1);
      printf("Zahl2: %f", Zahl2);
    }
    

    Was müsste dort beim Aufruf mit den Parametern 1 2 3 4 5 ausgegeben werden?
    Wieso?

    Ich kann leider hier nicht testen, sonst wüsste ich was rauskommt, könnte es mir aber wahrscheinlich nicht erklären.

    Edit by AJ: Hat wohl nicht so geklappt mit den CPP-Tags 😉



  • Das Programm SOLL wohl die Summe und den Durchschnittswert aller Parameter errechnen. Macht es aber nicht, da in der Schleife nicht aufsummiert wird sondern ständig der Wert von Zahl1 überschrieben wird.
    Tipp: += 😉



  • Zahl1: 5Zahl2: 1.000000
    

    Das dürfte rauskommen.

    Wenn du grad keinen Compiler am Rechner hast, dann schau dir mal diesen Link an :D:
    http://www.delorie.com/djgpp/compile/

    Aja, versuch das Programm ohne Parameter aufzurufen, dann siehst du gleich mal einen groben Fehler.



  • hm bin nur Praktikant hier inner Firma 😃
    Weiß nicht ob ich nen bestimmtes Inet-Volumen zur Verfügung hab. Könnt ich mir gut vorstellen bei der Anzahl an Mitarbeitern 😉
    Also könnte es fatal werden alles zu komilieren und runterzuladen.

    OK, hab += vergessen.

    Aber ich versteh die Logik da nicht. Warum wird aus 5 -> 1.000000?



  • coolio schrieb:

    hm bin nur Praktikant hier inner Firma 😃
    Weiß nicht ob ich nen bestimmtes Inet-Volumen zur Verfügung hab. Könnt ich mir gut vorstellen bei der Anzahl an Mitarbeitern 😉
    Also könnte es fatal werden alles zu komilieren und runterzuladen.

    OK, hab += vergessen.

    Aber ich versteh die Logik da nicht. Warum wird aus 5 -> 1.000000?

    Bitte mach erstmal ein Grundlagentutorial durch. Das sind hier echt absolute Basics...

    In der Schleife wird, wie ich bereits sagte, Zahl1 stets überschrieben und beim letzten Durchlauf eben auf den letzten Parameter gesetzt (5). Dann wird Zahl1 durch die Anzahl der übergebenen Parameter geteilt und was 5 / 5 ist solltest du als Student wissen 😉



  • ok danke.

    Aber wenn man bedenkt, dass das Basics sein sollen, dann ist eine Seite im Skript sehr wenig dafür bzw. ein Anzeichen dafür, dass es normal uninteressant ist und man getrost darüber hinweg sehen kann. 😉



  • Allgemeiner Tipp: Verabschiede dich von dem Gedanken, dass du im Studium programmieren lernst. Das musst du dir selber aneignen 🤡



  • yo das Gefühl habe ich auch. Was bringt es mir später wenn ich lerne wie man 2 Zahlen addiert und das Ergebnis ausgibt oder Sortierverfahren "lernt" aber nicht programmieren kann weil sie einfach zu schwierig fürs zweite Semester sind. Naja, that's school. Pisa lässt grüßen 😃



  • Was du in der Schule & Co. lernst, sind nur die absoluten Grundlagen. Was du daraus machst, ist deine eigene Sache. Richtig Programmieren lernen kann man nur durch eigenständiges Lernen. Wobei das eigentlich nicht nur fürs Programmieren gilt. Dass Deutschland in der Pisa-Studie so schlecht abgeschnitten ist, liegt nicht allein an den Schulen. Ich denke sogar, dass es der geringste Teil dabei ist.


Anmelden zum Antworten