2016-12-13 4 views
-4

Mein Code soll einen Wert für die Größe des Arrays und die Werte von Benutzern akzeptieren und dann die Zellen, die über und links von der [i] liegen j] Zelle einschließlich und in die [i] [j] -Zelle im Summenmatrix-Array einfügen. Dieser Code kompiliert und akzeptiert einen n-Wert und Werte entsprechend, aber druckt Nullen. Ich habe überprüft, ob die Werte in das Eingabearray eingefügt werden, indem ich das Array in printf von der Summenmatrix zur Eingabe ändere und auch Nullen erhalte. Ist das ein Problem beim Abrufen der Werte für das Eingabearray?Hey kann jemand mir bei dieser Aufgabe helfen in C

Also habe ich den Code so anstelle von% .2lf seine% .2f und alles funktioniert eine Suche auf Google zeigte mir, dass $ lf macht diese Art von Sache manchmal.

for(i=1;i<=n;i++) 
{ 
    for(j=1;j<=n;j++) 
    { 
     ncells=i*j; 
     sum+=input[i][j]; 
     avrage=(sum)/(ncells); 
     sumatrix[i][j]=avrage; 
    } 
} 

Dies wird allgemein als gute Praxis zu setzen geschweiften Klammern um alle:

+0

Gibt es etwas Besonderes Arrays mit 78 Elementen sein würde? (In Ascii, das ist). – EOF

+1

Sie sollten keine Profanität in Ihre Fragen aufnehmen. Außerdem haben Sie nichts in geschweiften Klammern umgeben. Dein Code wird alle möglichen Dinge tun, die du nicht willst. –

+1

'für (i = 1; i <=n;i++)'-->' für (i = 0; i BLUEPIXY

Antwort

3

Basierend auf Ihrem Einzug, Sie geschweiften Klammern ({ und }) um Ihre Zeilen Code als solche bleiben gehen zu wollen, Ihre Bedingungen und Schleifen, nur um es explizit klar zu machen, welchen Code Sie in die Bedingung oder Schleife einfügen möchten. Entfernen Sie nur die geschweiften Klammern, wenn Sie absolut sicher sind, dass die Schleife oder Bedingung nicht mehr als eine Zeile enthält.

+0

es ist nicht als gute Codierung Stil, es ist eine Kompilation Anforderung. es ist jedoch als gute Codierung Stil zu OMIT geschweiften Klammern um single -argument conditionals and loops – Adalcar

+0

@ Adalcar1 Nicht in meiner Erfahrung, zum Beispiel ist es ausdrücklich verboten, dies zu tun, wo ich arbeite, aber andere halten es für sauberer, nehme ich an. – DBPriGuy

+0

Mein schlechter dann, ich bin immer noch Student, und ich dachte, wenn unser recht strenger Codierungsstil das zuließ, war es wahrscheinlich ein allgemeiner Standard – Adalcar

0

Um mehr „stark“ DBPriGuy's answer zu wiederholen, In C conditionals wie for, if und while wird nur die nächste statement (Einzelunterricht oder von geschweiften Klammern umgeben) beeinflussen.

for(i=1;i<=n;i++) 
    for(j=1;j<=n;j++) 
     ncells=i*j; 
     sum+=input[i][j]; 
     avrage=(sum)/(ncells); 
     sumatrix[i][j]=avrage; 

entspricht (mit aktueller Vertiefung)

for(i=1;i<=n;i++) 
    for(j=1;j<=n;j++) 
     ncells=i*j; 
sum+=input[i][j]; 
avrage=(sum)/(ncells); 
sumatrix[i][j]=avrage; 

Ein besserer Weg, es zu setzen

for(i=1;i<=n;i++) 
    for(j=1;j<=n;j++) 
    { 
     ncells=i*j; 
     sum+=input[i][j]; 
     avrage=(sum)/(ncells); 
     sumatrix[i][j]=avrage; 
    } 
+0

Es wird nicht eine * Anweisung * genannt, es heißt eine * Anweisung *. Ein Block * ist * eine * Aussage *. – EOF

+0

Ich stehe korrigiert – Adalcar

Verwandte Themen