-         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: dynamische mehrdimensionale Arrays wie statische Arrays ansprechen?

  1. #11
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.049
    Anzeige

    Praxistest und DIY Projekte
    es muss wie gesagt unbedingt ein dynamischer 2-dim array sein.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.11.2019
    Ort
    Hamburg
    Beiträge
    117
    Hallo Helmut,

    *jammer*

    Ok. Ich versuchs nochmal.

    Viele Grüße

    Wolfgang

    - - - Aktualisiert - - -

    Hallo Helmut,

    ist mein Brett schon vollständig abgefallen oder geht das noch nicht ganz?

    Code:
    float arrayst[100][30];
    float** arraydyn = (float **)malloc(sizeof(arrayst));
    
    for (int i=0; i<100; i++) {
      for (int j=0; j<30; j++)  {
       arraydyn[i][j]=arrayst[i][j]*0.123;
      }
    }
    Viele Grüße

    Wolfgang

  3. #13
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.049
    das gibt leider Laufzeitfehler:


    Code:
    #define LINE 20
    #define ROW  10
    
    void setup() {
      Serial.begin(115200);
      delay(1000);
      Serial.println();
      Serial.println("Serial() started");
    
      float arraystat[LINE][ROW ];
      float** arraydyn = (float **)malloc(LINE*ROW*sizeof(float));
    
      
    
      for (int i = 0; i < LINE; i++) {
        for (int j = 0; j < ROW ; j++) {
          arraystat[i][j]=i*(j*1000);
        }
      }
    
      for (int i = 0; i < LINE; i++) {
        for (int j = 0; j < ROW ; j++) {
          arraydyn[i][j] = arraystat[i][j] * 0.01;
        }
      }
    
      for (int i = 0; i < LINE; i++) { 
        yield();
        for (int j = 0; j < ROW ; j++) {
          Serial.println (arraydyn[i][j]);
        }
      }
    
    
    }
    
    void loop() {
    
    
    }
    Serial() started

    Exception (29):
    epc1=0x4020110a epc2=0x00000000 epc3=0x00000000 excvaddr=0x00b40000 depc=0x00000000

    >>>stack>>>

    ctx: cont
    sp: 3ffffab0 end: 3fffffc0 offset: 01a0
    3ffffc50: 00000000 00000000 00000000 00000000
    3ffffc60: 00000000 00000000 00000000 00000000
    3ffffc70: 00000000 00000000 00000000 447a0000
    3ffffc80: 44fa0000 453b8000 457a0000 459c4000
    3ffffc90: 45bb8000 45dac000 45fa0000 460ca000
    3ffffca0: 00000000 44fa0000 457a0000 45bb8000
    3ffffcb0: 45fa0000 461c4000 463b8000 465ac000
    3ffffcc0: 467a0000 468ca000 00000000 453b8000
    3ffffcd0: 45bb8000 460ca000 463b8000 466a6000
    3ffffce0: 468ca000 46a41000 46bb8000 46d2f000
    3ffffcf0: 00000000 457a0000 45fa0000 463b8000
    3ffffd00: 467a0000 469c4000 46bb8000 46dac000
    3ffffd10: 46fa0000 470ca000 00000000 459c4000
    3ffffd20: 461c4000 466a6000 469c4000 46c35000
    3ffffd30: 46ea6000 4708b800 471c4000 472fc800
    3ffffd40: 00000000 45bb8000 463b8000 468ca000
    3ffffd50: 46bb8000 46ea6000 470ca000 47241000
    3ffffd60: 473b8000 4752f000 00000000 45dac000
    3ffffd70: 465ac000 46a41000 46dac000 4708b800
    3ffffd80: 47241000 473f6800 475ac000 47761800
    3ffffd90: 00000000 45fa0000 467a0000 46bb8000
    3ffffda0: 46fa0000 471c4000 473b8000 475ac000
    3ffffdb0: 477a0000 478ca000 00000000 460ca000
    3ffffdc0: 468ca000 46d2f000 470ca000 472fc800
    3ffffdd0: 4752f000 47761800 478ca000 479e3400
    3ffffde0: 00000000 461c4000 469c4000 46ea6000
    3ffffdf0: 471c4000 47435000 476a6000 4788b800
    3ffffe00: 479c4000 47afc800 00000000 462be000
    3ffffe10: 46abe000 4700e800 472be000 4756d800
    3ffffe20: 4780e800 47966400 47abe000 47c15c00
    3ffffe30: 00000000 463b8000 46bb8000 470ca000
    3ffffe40: 473b8000 476a6000 478ca000 47a41000
    3ffffe50: 47bb8000 47d2f000 00000000 464b2000
    3ffffe60: 46cb2000 47185800 474b2000 477de800
    3ffffe70: 47985800 47b1bc00 47cb2000 47e48400
    3ffffe80: 00000000 465ac000 46dac000 47241000
    3ffffe90: 475ac000 4788b800 47a41000 47bf6800
    3ffffea0: 47dac000 47f61800 00000000 466a6000
    3ffffeb0: 46ea6000 472fc800 476a6000 47927c00
    3ffffec0: 47afc800 47cd1400 47ea6000 4803d600
    3ffffed0: 00000000 467a0000 46fa0000 473b8000
    3ffffee0: 477a0000 479c4000 47bb8000 47dac000
    3ffffef0: 47fa0000 480ca000 00000000 4684d000
    3fffff00: 4704d000 47473800 4784d000 47a60400
    3fffff10: 47c73800 47e86c00 4804d000 48156a00
    3fffff20: 00000000 468ca000 470ca000 4752f000
    3fffff30: 478ca000 47afc800 47d2f000 47f61800
    3fffff40: 480ca000 481e3400 00000000 46947000
    3fffff50: 47147000 475ea800 47947000 47b98c00
    3fffff60: 47dea800 4801e200 48147000 4826fe00
    3fffff70: 3ffeefd4 00b40000 00000028 00000320
    3fffff80: 00b40000 feefeffe feefeffe feefeffe
    3fffff90: feefeffe feefeffe feefeffe 3ffee29c
    3fffffa0: 3fffdad0 00000000 3ffee26c 40201b9c
    3fffffb0: feefeffe feefeffe 3ffe84f4 40100461
    <<<stack<<<

    ets Jan 8 2013,rst cause:2, boot mode3,7)

    load 0x4010f000, len 1384, room 16
    tail 8
    chksum 0x2d
    csum 0x2d
    v8b899c12
    ~ld
    bitte erst selber austesten, wenn du einen Code postest!
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.11.2019
    Ort
    Hamburg
    Beiträge
    117
    Hmmmm....

    Der C++-Compiler berechnet das statische Array völlig korrekt. Aber bein dynamischen Zielarray scheint er nichts zu raffen

    Code:
       ;	
       ;	  for (int j=0; j<30; j++)  {
       ;	
    	?debug	L 92
    	xor	cx,cx
    	jmp	short @4@142
    @4@86:
       ;	
       ;	   arraydyn[i][j]=arrayst[i][j]*123;
       ;	
    	?debug	L 93
    	mov	bx,si
    	imul	bx,bx,60
    	mov	ax,cx
    	add	ax,ax
    	add	bx,ax
    	lea	ax,word ptr [bp-6014]
    	add	bx,ax
    	mov	ax,word ptr ss:[bx]
    	imul	ax,ax,123
    	mov	dx,si
    	shl	dx,2
    	les	bx,dword ptr [bp-4]
    	add	bx,dx
    	les	bx,dword ptr es:[bx]
    	mov	dx,cx
    	add	dx,dx
    	add	bx,dx
    	mov	word ptr es:[bx],ax
    	?debug	L 92
    	inc	cx
    @4@142:
    	cmp	cx,30
    	jl	short @4@86
    Skandalös ist, dass der Compiler nicht mal ne Warnung oder sowas auslöst.

    Ich geh nochmal in mich.

    Viele Grüße

    Wolfgang

  5. #15
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.049
    genau, jetzt brauchen wir nur noch lauffähigen Code!

    bevor du Code postest also bitte vorher selber testen!
    (sonst steht hier bald seitenweise Code, der fehlerhaft ist
    - das bringt nichts und macht es nur komplett unübersichtlich)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.11.2019
    Ort
    Hamburg
    Beiträge
    117
    Hallo Helmut,

    Zitat Zitat von HaWe Beitrag anzeigen
    bitte erst selber austesten, wenn du einen Code postest!
    Bin ich Dein Wasserträger?

    Ich bau mir jetzt ganz bestimmt keine Entwicklungsumgebung.

    Du hast mich nach der Kodierbarkeit gefragt und 2-dimensionale Arrays gefordert. Warum auch immer.

    Ich hab Dir was geliefert, was der Compiler schluckt. Obs läuft, musst Du schon selbst testen. Und das macht Dir ja auch keine Mühe, weil Du die drei Zeilen ja nur einzuklicken brauchst.

    Ich zieh mich hier mal zurück. Mir fällt eh nichts mehr ein.


    Viele Grüße

    Wolfgang

  7. #17
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.049
    es läuft ja nicht, weil dein Code bisher fehlerhaft ist - du könntest ja auf anderen Plattformen testen
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.11.2019
    Ort
    Hamburg
    Beiträge
    117
    Hallo Helmut,

    ich könnte vieles. Bereit war ich aber nur zum Mitdenken.

    Viele Grüße

    Wolfgang

  9. #19
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    09.10.2014
    Beiträge
    5.049
    danke, aber es wird ja korrekter lauffähiger, C++ konformer Code benötigt.


    edit:
    habe noch einen anderen Tipp bekommen, das hier hat bis jetzt anscheinend funktioniert - ich teste es aber noch weiter:

    float array2D[LINE][COL]; // statisch im stack

    float (*arraydyn)[COL] = new float[LINE][COL]; // dynamisch auf dem heap
    Geändert von HaWe (24.11.2019 um 13:35 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    445
    Blog-Einträge
    3
    Nur so nebenbei: line und row sind Synonyme.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. cc5x und arrays
    Von amarok2 im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 13.12.2010, 11:32
  2. mehrdimensionale arrays übergeben
    Von Roboman93 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 20.06.2008, 13:06
  3. Arrayzugriff / mehrdimensionale Arrays ?
    Von Skragan im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 06.06.2008, 13:16
  4. Arrays in Java
    Von hacker im Forum Software, Algorithmen und KI
    Antworten: 13
    Letzter Beitrag: 28.09.2006, 09:25
  5. BIT-Arrays bzw. Alternative
    Von tobimc im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 26.09.2004, 13:02

Berechtigungen

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