Announcement

Collapse
No announcement yet.

Überprüfen meines Codes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Überprüfen meines Codes

    Hallo Leute,

    ich bin gerade dabei, meine letzte EDV Prüfung durchzuarbeiten. Bei einer Aufgabe bin ich mir allerdings ein wenig unsicher und möchte euch bitten, meinen Code zu überprüfen. Zunächst der Aufgabenzettel:

    [img=http://img529.imageshack.us/img529/1904/scannen0001vb6.th.jpg]

    Es geht um Aufgabe d)

    Hier dazu mein Code:

    Code:
            public bool Eingabe()
            {
                for (int i = 0; i < allCds.Length; i++)
                {
                    if (i <= allCds.Length)
                    {
                        return true;
                    }
                } return false;
    Ich bin mir unsicher, weil ja gar nicht die Chance besteht, dass das Array voll ist. versteht ihr, was ich meine? Allerdings weiß ich auhc nicht ganz, was mein Prof von mir will. Ich verstehe die Aufgabe folgendermaßen:

    Ich soll das Array nach einem freien Platz durchsuchen. Finde ich einen freien Platz, so liefert meine Methode den Wert true zurück, andernfalls liefert meine Methode den Wert false zurück. Liege ich das richtig?
    Zuletzt editiert von aleko; 05.07.2007, 19:01.

  • #2
    Ich kann bei dem eingescannten Bild nichts erkennen. Kannst du vielleicht diese eine Aufgabe hier auflisten / eintippen?
    *-- robert.oh. --*

    Comment


    • #3
      jetzt müsste es funktionieren. probier es bitte noch einmal

      Comment


      • #4
        Sorry, ich versteh die Aufgabenstellung auch nicht.

        Warum sollte das Schreiben nicht erfolgreich sein?
        Hoechstens, wenn du ueber die definierte Arraygrenze (allCds.Length) hinauskommst, aber warum sollte man das wollen / tun?

        Tut mir leid
        *-- robert.oh. --*

        Comment


        • #5
          Originally posted by aleko View Post
          Code:
                  public bool Eingabe()
                  {
                      for (int i = 0; i < allCds.Length; i++)
                      {
                          if (i <= allCds.Length)
                          {
                              return true;
                          }
                      } return false;
          Ich soll das Array nach einem freien Platz durchsuchen. Finde ich einen freien Platz, so liefert meine Methode den Wert true zurück, andernfalls liefert meine Methode den Wert false zurück. Liege ich das richtig?
          So verstehe ich das auch; aber Du machst viel zu wenig. Das liegt vielleicht auch daran, dass der Konstruktor von CDs (Aufgabe c) nicht korrekt erstellt wurde.

          Meine Lösung würde ungefähr so aussehen:
          Code:
          // Du sollst eine neue CD registrieren, also brauchen wir ihre Angaben
          public bool Eingabe(string album, string interpret, string genre)
          {
              int FreierIndex = -1;
              // suche nach einem freien Platz
              for (int i = 0; i < allCds.Length; i++)
              {
                  if (allCds[i] == null)  {
                      //  Treffer, Suche kann beendet werden
                      FreierIndex = i;
                      break;
                  }
              }
              // bei Erfolg neue CD registrieren
              if (FreierIndex >= 0) {
                  allCds[i] = new CD(album, interpret, genre);
                  return true;
              }
              else return false;
          }
          Du hast vor allem das tatsächliche Schreiben vergessen! Jürgen

          @ robert.oh
          Er arbeitet mit einem Array, also fester Anzahl der Einträge. Wenn überall schon CDs drin stehen, kann keine weitere eingetragen werden.
          Zuletzt editiert von Jürgen Thomas; 05.07.2007, 19:24. Reason: Zusatz für robert.oh

          Comment


          • #6
            Originally posted by robert.oh. View Post
            Sorry, ich versteh die Aufgabenstellung auch nicht.

            Warum sollte das Schreiben nicht erfolgreich sein?
            Hoechstens, wenn du ueber die definierte Arraygrenze (allCds.Length) hinauskommst, aber warum sollte man das wollen / tun?

            Tut mir leid
            Schon mal gut, dass ich nicht der einzige bin

            Aber rein von der Aufgabenstellung her habe ich doch alles richtig implementiert, oder?

            Comment


            • #7
              Originally posted by aleko View Post
              Schon mal gut, dass ich nicht der einzige bin

              Aber rein von der Aufgabenstellung her habe ich doch alles richtig implementiert, oder?
              Ich bin mir sicher: Nein. Aber ich gebe zu, dass die Aufgabe nicht eindeutig genug formuliert ist.
              Schreiben Sie eine Methode Eingaben, die es erlaubt, die Felder eines Arrayelementes ... zu beschreiben.
              Die Methode muss also auf jeden Fall Parameter für die Felder eines Elements enthalten. Da nach dem Erfolg des Schreibens gefragt ist, muss das Schreiben in der Aufgabe enthalten sein.

              Wie das mit einem Dialog innerhalb der Methode verstanden werden soll, ist mir allerdings schleierhaft. Jürgen

              Comment


              • #8
                @Juergen
                Ich habe nicht daran gedacht, dass ein Eintrag auch null sein koennte, weil ich das Array naemlich in etwa auf diese Art erstellt / befuellt haette:

                Code:
                for (int i = 0; i < ...; i++)
                {
                    allCds[i] = new CD();
                }
                *-- robert.oh. --*

                Comment


                • #9
                  @robert.oh
                  Und ich hätte mit List<CD> gearbeitet. Aber das kann natürlich Thema des nächsten Semesters sein. Jürgen

                  Comment


                  • #10
                    @Juergen
                    Generics waeren auch meine Wahl gewesen, aber wie du bereits geschrieben hast - Das ist eine andere Geschichte
                    *-- robert.oh. --*

                    Comment


                    • #11
                      hier nun der code:

                      Code:
                              public bool Eingabe()
                              {
                                  for (int i = 0; i < allCds.Length; i++)
                                  {
                                      if (allCds[i].Album == "?")
                                      {
                                          Console.WriteLine("Album: ");
                                          allCds[i].Album = Console.ReadLine();
                                          Console.WriteLine("Interpret: ");
                                          allCds[i].Interpret = Console.ReadLine();
                                          Console.WriteLine("Genre: ");
                                          allCds[i].Genre = Console.ReadLine();
                                          return true;
                                      }
                                  } return false;
                              }
                      ich habe ein wenig "schlampig" gearbeitet. da die felder von der klasse cd mit ? unbeschrieben sind, habe ich jetzt diese bedingung genommen.

                      aber danke für eure hilfe. und wenn ich die prüfung morgen bestanden habe, wird mich EDV nicht mehr während des studium begleiten

                      Comment

                      Working...
                      X