+ Antworten
Ergebnis 1 bis 5 von 5

Thema: hilfe

  1. #1
    Noch neu Avatar von tommy00

    Registriert seit
    20.12.09 - 18:26
    Beiträge
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Reden hilfe

    Hallo!

    muss 8 Aufgaben in c-programmieren und bräuchte hilfe da ich mich schwer tue.

    MFG
    Tommy

    Aufgabe1:

    Ich habe die Aufgabe eins schon fast fertig!
    Hab nur das problem mit erkennen ob es vor 1982 ist oder nicht!
    Was ich bis jetzt habe:
    #include <stdio.h>
    /*
    *
    *parameter value: int year
    * return value: 0 or 1 ( 1 is true, 0 is false
    */
    int is_leap_year (int year)
    {
    if((year%4==0 && year%100!=0) || (year%400==0))
    {
    return 1;
    }
    else
    {
    return 0;
    }
    }
    /**
    * main function
    * parameters: none
    * return value: 0
    */
    int main()
    {
    int year = 0;
    printf("Dieses Programm berechnet, ob ein Jahr ein Schaltjahr ist!\n");
    printf("Gib eine Jahreszahl vierstellig ein: ");
    scanf("%d", &year);
    if (is_leap_year(year) == 1)
    {
    printf("Das Jahr %d ist ein Schaltjahr!\n", year);
    }
    else
    {
    printf("Das Jahr %d ist kein Schaltjahr!\n", year);
    }
    return 0;
    } //end main
    Angehängte Dateien Angehängte Dateien
    Geändert von tommy00 (04.01.2010 um 11:59:41 Uhr)

  2. #2
    Säule der Foren Avatar von blaustern
    Tetris Champion! Simon Champion!
    Registriert seit
    21.1.08 - 18:52
    Beiträge
    6.590
    Thanks
    87
    Thanked 232 Times in 197 Posts

    AW: hilfe

    Ich würde erst einmal eine Abfrage nach dem eingegebenen Jahr machen und bei wahrer Aussage gleich nach dem Schaltjahr nach dem alten Kalender prüfen. Bei falscher Aussage dann die Prüfung nach dem gregorianischen Kalender, wie du es schon gemacht hattest.

    Code:
    if (year <=1582)
    {
    if (year%4==0)
    {
    return 1;
    }
    else
    {
    return 0;
    }
    }
    else
    {
    if((year%4==0 && year%100!=0) || (year%400==0))
    {
    return 1;
    }
    else
    {
    return 0;
    }
    Wer meint der irrt nie, der irrt.

  3. #3
    Noch neu Avatar von tommy00

    Registriert seit
    20.12.09 - 18:26
    Beiträge
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Unglücklich AW: hilfe

    danke erst mal habe die Aufgabe 7 auch soweit ich bringe nur das speichern der zahlen nicht hin!!

    Aufgabe 7:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main()
    {
    int zahlen[6];
    int i, j, flag;



    system("cls");


    //Dem Zufallszahlengenerator die gegenwärtige Uhrzeit als
    //Anfangswert liefern:
    srand((unsigned)time(NULL));

    for (i = 0; i < 6; i++)
    {
    do
    {
    zahlen[i] = rand() % 45 + 1; //Zufallszahl generieren

    flag = 0;

    for(j = i - 1; j >= 0; j--)
    {
    if(zahlen[i] == zahlen[j]) //Prüfen, ob Zufallszahl bereits
    flag = 1; //im Array vorhanden, wenn ja, dann
    } //neuer Durchlauf
    } while(flag == 1);

    printf("Zahl %d: %2d\n", i+1, zahlen[i]);
    }

    }//end main

    Bitte um hilfe!!

  4. #4
    Säule der Foren Avatar von blaustern
    Tetris Champion! Simon Champion!
    Registriert seit
    21.1.08 - 18:52
    Beiträge
    6.590
    Thanks
    87
    Thanked 232 Times in 197 Posts

    AW: hilfe

    Ich glaube das Problem liegt in dieser Zeile:
    if(zahlen[i] == zahlen[j]) //Prüfen, ob Zufallszahl bereits
    Du hast für das Feld zahlen die Größe 6 zugeordnet. Da du aber mit zwei verschiedenen Variablen arbeitest, brauchst du 12.
    An deiner Stelle würde ich zwei Arrays definieren, eines für die ermittelte Zufallszahl und das zweite für den Abgleich.
    Wer meint der irrt nie, der irrt.

  5. #5
    Säule der Foren Avatar von blaustern
    Tetris Champion! Simon Champion!
    Registriert seit
    21.1.08 - 18:52
    Beiträge
    6.590
    Thanks
    87
    Thanked 232 Times in 197 Posts

    AW: hilfe

    Ich kann die Zeile nach der zweiten Zählschleife nicht mehr richtig nachvollziehen. Ich denke der Fehler liegt in diesem Abschnitt.
    Code:
    for (i = 0; i < 6; i++)
    {
    do
    {
    zahlen[i] = rand() % 45 + 1; //Zufallszahl generieren
    
    flag = 0;
    
    for(j = i - 1; j >= 0; j--)
    {
    if(zahlen[i] == zahlen[j]) //Prüfen, ob Zufallszahl bereits
    flag = 1; //im Array vorhanden, wenn ja, dann
    } //neuer Durchlauf
    } while(flag == 1);
    Du weist dem ersten Array (Zahlen[0]) die erste Zufallszahl zu. Bis dahin richtig. Dann setzt du flag auf null ist auch OK. Aber in der nächsten Zählschleife setzt du j auf -1, denn du benutzt die Variable i und nicht das Feld zahlen[i]. Ich denke das hier ein Fehler vorliegt, denn in der Bedingung vergleichst du praktisch die Arrays zahlen[0] mit zahlen[-1]. Dabei ist zahlen[-1] keinem Wert zugeordnet.
    Wer meint der irrt nie, der irrt.

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Ja
  • Beiträge bearbeiten: Ja
  •