Hi,
> mein problen ist nun das ich mit den for() schleifen nicht auf das
> richtige ergebniss komme.
zu den Vorrednern wollte ich noch zwei Punkte erg�nzen.
> c code mit for ():
>
> #include<stdio.h>
>
/* alle Variablen, die hier deklariert werden (globale Variablen)
werden beom Programmstart sauber (mit hex 0) initialisiert.*/
> void main(void)
> {
/* f�r Variablen, die hier (oder innerhalb einer anderen funktion)
deklariert werden, wird nur entsprechender Speicher reserviert.
eine evetuelle Initialisierung muss der programmierer liefern. */
> int matrix_a[4][5] = {{ 3, 15, 10, 30, 14},
> { 16, 12, 12 ,24, 8},
> { 8, 5, 15, 20, 20},
> { 10, 8, 14, 10, 25}},
/* werte sind initialisiert */
> matrix_b[5] = { 3, 2, 1, 2, 3},
/* werte sind ebenfalls initialisiert */
> ges_pkte[4],
/* ges_pkte hat den Inhalt vom letzten Gebrauch dieses Speicherbereiches */
> a, b, i;
/* gilt auch f�r a, b, und i */
> for( b=0; b<5; b=b+1)
/* wie bereits gesagt �berfl�ssig, doch nicht nur das, sondern
auch gef�hrlich. Die Schleife l�uft bis b=4, aber weder
ges_pkte[4] noch matrix_a[4] ist definiert. Operationen an diesen
Speicherpl�tzen k�nnen daher zu den wunderlichsten Ergebnissen
f�hren und sind keinesfalls vorhersagbar. Das c hier nicht �berpr�ft
ob die Arraygrenzen eingehalten werden, machen sich manche,
unangenehmere Zeitgenossen dies zu nutze. was du hier hast
ist ein paradebeispiel f�r einen Bufferoverflow - bekannterweise
eine beliebtes Angriffsziehl f�r cracker. */
> for( a=0; a<5; a=a+1)
> for( i=0; i<4; i=i+1)
> ges_pkte[b] =
/* Bufferoverflow f�r b=4 */
> ges_pkte[b] +
> matrix_b[b] * matrix_a[a][i];
/* Bufferoverflow f�r a=4 */
>
/* den Rest des Codes schenken wir uns.
> }
Wenn du Gl�ck hast, st�rzt das Programm bei solchen Fehlern mit
nem segfault ab, wenn nicht, k�nnte schlimmeres passieren.
also, immer sch�n vorsichtig bleiben
Helmut
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org