Startfehler



  • Windassel schrieb:

    for(int i = wert; i <= wert2; i++)

    was für einen compiler du hast haben tun?



  • Und da haben wir mal ein Beispiel für unnötige Code-Duplikation. Versuch' doch mal, das letzte Programm mit einer Schleife zu lösen 😉 (kleines Stichwort: kombinierte Zuweisungsoperatoren ala +=)

    Big Brother schrieb:

    Windassel schrieb:

    for(int i = wert; i <= wert2; i++)

    was für einen compiler du hast haben tun?

    Offenbar einen etwas moderneren 😃
    (zur Erklärung: Im ursprünglichen C konnte man Variablen nur am Block-Anfang definieren, C++ (eventuell auch C99) ist etwas flexibler, so daß Definitionen im Schleifenkopf zulässig sind)



  • CStoll schrieb:

    Offenbar einen etwas moderneren 😃

    ja, oder einen c++ compiler. es soll ja leute geben, die sich nach etlichen wochen gewöhnung an manch eine bequemlichkeit der c++ syntax wundern, dass sich plötzlich programme mit c syntax nicht compilieren lassen, wenns z.b. ans thema malloc geht.
    😃



  • #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
        int wert, wert2;
    
        printf("Anfangswert: ");
        scanf("%i", &wert);
        printf("Endwert: ");
        scanf("%i", &wert2);
    
        if (wert < wert2) {    
        for(int i = wert; i <= wert2; i++)
        printf("\n%i ins Quadrat ist: %i", i, i * i);
        }
    
        else if (wert2 < wert) { 
        for(int i = wert; i >= wert2; i--)
        printf("\n%i ins Quadrat ist: %i", i, i * i);
        }
    
        system("PAUSE");
        return 0;
    }
    


  • Und das ganze noch mal besser formatiert:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h> 
    
    int main()
    {
        int wert, wert2;
    
        printf("Anfangswert: ");
        scanf("%i", &wert);
        printf("Endwert: ");
        scanf("%i", &wert2);
    
        if (wert < wert2) {    
          for(int i = wert; i <= wert2; i++)
            printf("\n%i ins Quadrat ist: %i", i, i * i);
        } // jetzt kannst du gleich sehen, dass die Klammer zum if gehoeren soll ...
    
        else if (wert2 < wert) {
          for(int i = wert; i >= wert2; i--)
            printf("\n%i ins Quadrat ist: %i", i, i * i);
        } // ... und nicht zum for
    
        system("PAUSE");
        return 0;
    }
    


  • habt Ihr sonst noch Aufgaben?



  • Windassel schrieb:

    habt Ihr sonst noch Aufgaben?

    Versuchs mal hier:
    http://projecteuler.net/problems
    🙂



  • gibts det auch auf deutsch?



  • okyy 😛 thx 🙂



  • hat wer anders noch irgendwelche leichten aufgaben parrat? Hab heute mal meinen EDV Lehrer gefragt, der will mir aber keine aufgaben geben Oo



  • ja, jemand hat:

    programm liest wörter ein, die der benutzer in der konsole eingibt.
    die maximale wortlänge beträgt 64 zeichen.
    für jedes wort ist speicher mit malloc zu reservieren.
    wird ein zu langes wort eingegeben, so wird dieses mit einem hinweis verworfen und
    der eingabepuffer wird geleert.
    die wörter werden während des einlesens in einem char** array gespeichert.
    wenn der benutzer die eingabetaste drückt, ohne ein wort eingegeben zu haben, dann
    wird das einlesen beendet.
    die wörter im array werden in einer textdatei "words.txt" ( optional sortiert ) gespeichert, jedes wort in einer separaten zeile.
    anschließend ist eine funktion zu schreiben, welche die textdatei öffnet und
    den textinhalt zeilenweise ausgibt.

    :p



  • Windassel schrieb:

    Was ich bis jetzt gemacht habe: Variablen, mathematische funktionen, verzweigen, if else, break, switch case, default und bin jetzt bei schleifen angekommen. Was könnte ich mit dem Wissen noch so programmieren?

    Hast du das gelesen, was ich geschrieben habe? 😃

    danke für die Mühe 🙂



  • es schadet ja nicht, mal ein bisschen vor zu arbeiten ...



  • 1. Schreib ein Programm, welches eine Anfangszahl und eine Endzahl einliest. Achte darauf, daß die Anfangszahl kleiner als die Endzahl ist ! Ausgegeben werden soll jede dritte Zahl, die sich zwischen der Anfangszahl und der Endzahl befindet.

    Hab die Aufgabe gefunden, und bin gerade dran die zu lösen...garnicht mal so leicht mit ner while schleife



  • Warum machst du das mit ner while-Schleife? Geht doch viel einfacher mit ner for-Schleife.



  • die aufgabenstelltung verlangt es so, was ich vorhin vergessen habe zu posten 😛 und ich weiß weder wo der unterscheid zwischen ner for und ner while-schleife liegt 😃



  • Technisch gesehen kannst du alle Schleifen ineinander umwandeln, praktisch ist eine for-Schleife normalerweise kompakter zu schreiben (gerade wenn du ihre Möglichkeiten voll ausnutzt). Aber auch mit einer while-Schleife ist die Aufgabe nicht wirklich schwierig (zumindest aus Sicht eines Experten :D) - ich bin mir nur nicht 100% sicher, was mit "jede dritte Zahl" gemeint ist.



  • Eingabe der Anfangszahl: 1

    Eingabe der Endzahl: 15

    Zahlen zwischen den beiden Zahlen: 2 5 8 11 14 (jede 3. zahl)

    In der Musterlösung sieht das am Anfang der while schleife so aus:

    while (anfang >= ende);

    aber warum >= ?



  • die zwei ist aber nicht die dritte, sondern die erste zwischen 1 und 15
    :p



  • Und warum nicht "1 4 7 ..."?


Anmelden zum Antworten