2016-07-08 12 views
1

Ich habe zwei Puffer mit verschiedenen Größen und ich muss eine dritte erhalten, die gleich der Summe der beiden ist.Summe von zwei Puffern in for Schleife

Das ist, wie ich es mache (ich weiß, es ist falsch)

for (i = 0; i < num; i += c){ 
    for (i2 = 0; i2 < num2; i2 += c2){ 

     printf("%d ",(buf[i]+buf2[i2])/2); 

     } 
} 

Ich will nicht die i2-Schleife zu beenden, und ich dann um 1 iterieren, möchte ich beide für lassen Schleifen arbeiten zur gleichen Zeit und ich habe keine Ahnung, wie es zu tun, weil num2> num so, wenn ich für ein einzelnes verwenden wie folgt aus:

`for (i = 0, i2=0; i < num, i2 < num2; i+=c, i2+=c)` 

ich, es würde nicht funktionieren denken.

Ich habe gedacht, den Code mit der rechten oben geschrieben und das Hinzufügen von etwas wie: Wenn i = num lassen buf [i] auf 0

Vielen Dank im Voraus gleich wird.

+0

leid getan, was ich nicht wusste, es sollte dort sein. –

Antwort

0

Sie können bis zum Erreichen des Endes des kleineren Array iterieren und dann weiter für die größere Array weiter:

int i; 
int lower = num > num2 ? num2 : num; 
int upper = num > num2 ? num : num2; 
int buf3[upper]; 

for (i = 0; i < lower; ++i) { 
    buf3[i] = buf[i] + buf2[i]; 
} 

for (i; i < upper; ++i) { 
    if (upper == num2) { 
     buf3[i] = buf2[i]; 
    } 
    else { 
     buf3[i] = buf[i]; 
    } 
} 
+0

Dachte nicht, ich fühle mich dumm. Vielen Dank! –

+0

Noch eine Sache, ich hatte ein Problem mit buf3 [i] + = buf2 [i]; und buf3 [i] + = buf [i]; Ich entfernte das + und es hat funktioniert. Ich habe keine Ahnung warum –

+0

Sie haben Recht. 'buf3 [i] + = x' bedeutet nur add 'x' zu' buf3 [i] ', was ebenfalls hätte funktionieren sollen. –