1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Wo ist mein Fehler

  • Frisco
  • 20. November 2007 um 12:28
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 12:28
    • #1

    Halllo ich habe da ein kleine Problem beim Programmieren mit arrays,
    hier die aufgabe und meine quellcode:
    Implementiert in der Methode arrays( int n ) in der zuvor genannten Klasse Übung04
    folgende Schritte:
    1. Deklariert drei Arrays a, b und c mit jeweils n Elementen vom Datentyp int.
    2. Setzt die Werte im Array a, so dass jedes Element seine Position im Array als Wert
    hat. D.h. das erste Element an Position 0 den Wert 0, das zweite Element an Position
    1 den Wert 1, u.s.w., bis zum n-ten Element an Position n - 1 mit dem Wert n - 1.
    3. Setzt die Werte im Array b, so dass es eine Kopie der Werte im Array a in umgekehrter
    Reihenfolge enthalt. D.h. das erste Element in b hat den Wert n - 1, und das letzte
    den Wert 0.
    4. Multipliziert die Elemente der beiden Arrays a und b und speichert das Ergebnis im
    Array c, d.h. ai * bi =ci
    5. Gebt den Inhalt von a, b und c auf der Konsole aus.

    dazu habe ich jetzt erst mal folgendes geschrieben:

    public class Übung04{
    public static void arrays( int n ){

    int[] a=new int [ n ];
    int[] b=new int [ n ];//java.util.Arrays.copyOf(a, a.length);
    int[] c=new int [ n ];
    for ( int i = 0; i < n; i++ ){
    a[i]=i;
    System.out.println( a[i] );}

    for ( int i=n-1; i >= 0; --i){
    b[i]=i;
    System.out.println( b[i] );}

    }
    }
    nun möchte ich den aufgabenteil 4.) machen aber wegen den forschleifen und den {} sind ja nur darin b[i] bzw a[i] implementiert,
    wo ist da nun mein fehler kann mir da vielleicht jemadn dabei helfen??

  • rul0r
    Punkte
    975
    Beiträge
    182
    • 20. November 2007 um 13:11
    • #2

    nach

    Code
    System.out.println( b[i] );}


    kannst du 4 machen.
    a,b,c sind in der ganzen methode arrays definiert

  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 13:35
    • #3

    okey
    aber ich weiß nicht wie ich das schreiben soll, das ist ja genau mein Problem...
    ich hatte mal es so gedacht aber da ist sicher ein fehler
    c[i]=a[i]*b[i];
    System.out.println( c[i] );
    aber da kommt ein fehler
    "cannot find symbol variabl i"
    vielleicht weißt du da ja weiter

  • sauzachn
    Punkte
    3.101
    Beiträge
    606
    • 20. November 2007 um 13:50
    • #4
    Zitat von Frisco

    okey
    aber ich weiß nicht wie ich das schreiben soll, das ist ja genau mein Problem...
    ich hatte mal es so gedacht aber da ist sicher ein fehler
    c[i]=a[i]*b[i];
    System.out.println( c[i] );
    aber da kommt ein fehler
    "cannot find symbol variabl i"
    vielleicht weißt du da ja weiter

    Alles anzeigen


    Das i ist nur innerhalb der Schleife deklariert.

  • rul0r
    Punkte
    975
    Beiträge
    182
    • 20. November 2007 um 14:02
    • #5

    mach halt eine neue schleife:

    Code
    for (int i=0;i<n;i++){
    c[i]=a[i]*b[i]
    }


    oder schreibs gleich in die schleife vom b rein

  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 14:06
    • #6

    ja aber ich habe ja einmal die b[i] bestimmt die dann so z.b. aussieht:
    4,3,2,1,0
    und die a[i] sieht ja da so aus 0,1,2,3,4
    dann kommen bei mir aber andere werte heraus wie sie herauskommen wollten
    da liegt mein fehler auch noch....
    ich verstehe das nicht er weiß ja nur so lange eine for-schleife "läuft" was passiert danach ist ja die schleife vorbei...
    ich hoffe du verstehst was ich meine??

  • rul0r
    Punkte
    975
    Beiträge
    182
    • 20. November 2007 um 14:19
    • #7

    das liegt daran weil du b von hinten durchgehst und a von vorne(beim abspeichern der int werte), du sagst:
    a[0]=0,a[1]=1 etc
    b[4]=4,b[3]=3 etc
    --> a und b schaun genau gleich aus

    ja genau aber wenn du in der for schleife was speicherst was für die ganze methode gilt(also nach dem beginn der methode deklariert ist) dann kannst du in der gesamten methode drauf zugreifen zb a,b,c.

  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 14:33
    • #8

    stimmt danke jetzt habe ich es verstanden,
    und wie kann ich jetzt meinem compiler noch sagen das die ergebnisse vielleicht nebeneinander oder hintereinander ausgegeben werden sollen??
    das wäre noch super, aber ich denke ich habs solnagsam verstanden
    schon mal 10000 dank

  • rul0r
    Punkte
    975
    Beiträge
    182
    • 20. November 2007 um 14:36
    • #9

    zb

    Code
    for ( int i = 0; i < n; i++ ){
    a[i]=i;
    System.out.print( a[i]+" " );}
    System.out.println("");
  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 14:50
    • #10

    okey ich habe also nun meinen quellcod wiefolgt hier stehen und da ist aber ein kleiner fehler drin beim berechnen von c
    public static void arrays( int n ){

    int[] a=new int [ n ];
    int[] b=java.util.Arrays.copyOf(a, a.length); //new int [ n ];
    int[] c=new int [ n ];

    System.out.println("Hier die Ausgabe des Arrays a");
    for ( int i = 0; i < n; i++ ){
    a[i]=i;
    System.out.println( a[i]+" " );}
    System.out.println("");

    System.out.println("Hier die Ausgabe des Arrays b");
    for ( int i=n-1; i >= 0; --i){
    b[i]=i;
    System.out.println( b[i] );}
    System.out.println("");

    System.out.println("Hier die Ausgabe des Arrays c");
    for (int i=0;i<n;i++){
    c[i]=a[i]*b[i];
    System.out.println( c[i] );}
    }
    und zwar wenn ich n=3 nehme dann ist ja
    a=0,1,2
    b=2,1,0
    dann müsste ja c=0,1,0 sein da kommt aber bei mir raus
    c=0,1,4 wie kann ich den fehler noch beheben??

  • rul0r
    Punkte
    975
    Beiträge
    182
    • 20. November 2007 um 15:21
    • #11

    selbes problem wie vorher: a==b
    du solltest in b aber x-0 und in a 0-x speichern

  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 15:30
    • #12

    leider verstehe ich nicht was du damit meinst, wie sllte ich es dann programmieren??

  • Bug
    Punkte
    121
    Beiträge
    23
    • 20. November 2007 um 15:43
    • #13

    Versuchs mal so:

    Code
    for ( int i = 0; i < n; i++ ){
         a[i]=i;
         System.out.println( a[i]+" " );
    }
    
    
    System.out.println("");
    System.out.println("Hier die Ausgabe des Arrays b");
    
    
    for ( int i=0; i <n; ++i){
          b[i]=n-i;
          System.out.println( b[i] );}
    
    
    System.out.println("");
    Alles anzeigen
  • MickeyM
    Punkte
    89
    Beiträge
    15
    • 20. November 2007 um 15:47
    • #14
    Code
    public class Uebung04
    {
     public static void arrays( int n )
     { 
      int[] a = new int[n];
      int[] b = new int[n];
      int[] c = new int[n];
      for(int i = 0; i < n; i++)
       a[i] = i; //array a füllen
     
      for(int i = 0; i < n; i++)
      {
       b[i] = a[n - i - 1]; //array b füllen
       c[i] = a[i] * b[i]; //array c errechnen
     
       //alle 3 arrays ausgeben
       System.out.println("a[' + i + ']: " + a[i] + "\t" +
            "b[' + i + ']: " + b[i] + "\t" +
            "c[' + i + ']: " + c[i]);
      }
     }
    }
    Alles anzeigen



    hf

  • Frisco
    Punkte
    100
    Beiträge
    16
    • 20. November 2007 um 17:03
    • #15

    danke

  • Kampi
    Punkte
    7.828
    Beiträge
    1.468
    • 20. November 2007 um 18:01
    • #16
    Zitat von RedFalcon
    Code
    public class Uebung04
    {
     public static void arrays( int n )
     { 
      int[] a = new int[n];
      int[] b = new int[n];
      int[] c = new int[n];
      for(int i = 0; i < n; i++)
       a[i] = i; //array a füllen
     
      for(int i = 0; i < n; i++)
      {
       [B]b[i] = a[n - i - 1]; //array b füllen[/B]
       c[i] = a[i] * b[i]; //array c errechnen
     
       //alle 3 arrays ausgeben
       System.out.println("a[' + i + ']: " + a[i] + "\t" +
            "b[' + i + ']: " + b[i] + "\t" +
            "c[' + i + ']: " + c[i]);
      }
     }
    }
    Alles anzeigen

    hf

    wenn man zum fuellen von 'b' wirklich 'a' verwendet, dann kommt man um 2 for ned rum. so gings auch in einer:

    Code
    for ( int i=0; i < n; i++)
            {
                    a[i] = i;
                    b[i] = n-i-1;
                    c[i] = a[i] * b[i];
                    //printing
            }
  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum