Δημοσιεύτηκε: 25 Φεβ 2012, 03:51
από migf1
Ilias95 έγραψε:5o programming project σελ.50 στο βιβλίο του King:
έγραψε:Write a program that asks the user to enter the numbers from 1 to 16 (in any order) and then displays the numbers in a 4 by 4 arrangement, followed by the sums of the rows, columns, diagonals:
Spoiler: show
Μορφοποιημένος Κώδικας: Επιλογή όλων
Enter the numbers from 1 to 16 in any order:
16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1

16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

Row sums: 34 34 34 34
Column sums: 34 34 34 34
Diagonal sums: 34 34

Η λύση μου:
Spoiler: show
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>

int main(void)
{
int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16,\
row_1_sum, row_2_sum, row_3_sum, row_4_sum, column_1_sum, column_2_sum,\
column_3_sum, column_4_sum, diagonal_1_sum, diagonal_2_sum;

printf("Enter the numbers from 1 to 16 in any order:\n");
scanf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", \
&n1, &n2, &n3, &n4, &n5, &n6, &n7, &n8, &n9, &n10, &n11, &n12, &n13, &n14, &n15, &n16);

printf("\n%2d %2d %2d %2d\n", n1, n2, n3, n4);
printf("%2d %2d %2d %2d\n", n5, n6, n7, n8);
printf("%2d %2d %2d %2d\n", n9, n10, n11, n12);
printf("%2d %2d %2d %2d\n\n", n13, n14, n15, n16);

row_1_sum = n1 + n2 + n3 + n4;
row_2_sum = n5 + n6 + n7 + n8;
row_3_sum = n9 + n10 + n11 + n12;
row_4_sum = n13 + n14 + n15 + n16;
column_1_sum = n1 + n5 + n9 + n13;
column_2_sum = n2 + n6 + n10 + n14;
column_3_sum = n3 + n7 + n11 + n15;
column_4_sum = n4 + n8 + n12 + n16;
diagonal_1_sum = n1 + n6 + n11 + n16;
diagonal_2_sum = n4 + n7 + n10 + n13;

printf("Row sums: %d %d %d %d\n", row_1_sum, row_2_sum, row_3_sum, row_4_sum);
printf("Column sums: %d %d %d %d\n", column_1_sum, column_2_sum, column_3_sum, column_4_sum);
printf("Diagonal sums: %d %d\n", diagonal_1_sum, diagonal_2_sum);

return 0;
}

Το αποτέλεσμα που παίρνω είναι το επιθυμητό, αλλά η υλοποίηση δεν μου αρέσει καθόλου.
Υπάρχει κάποιος καλύτερος τρόπος να κάνω το παραπάνω; (Δεδομένου ότι δεν ξέρω πολλά περισσότερα προς το παρών απ' το να χρησιμοποιώ τις printf() και scanf().)

Δεδομένου πως δεν έχει μιλήσει για τίποτε άλλο, σωστά το έχεις κάνει Ηλία.
Μια μικρή σημείωση, αντί για \ στον ορισμό των μεταβλητών, μπορείς να ξεκινήσεις νέους ορισμούς σε νέα γραμμή, δηλαδή...

Μορφοποιημένος Κώδικας: Επιλογή όλων
...
int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16;
int row1sum, row2sum, row3sum, row4sum;
int col1sum, col2sum, col3sum, col4sum;
int diag1sum, diag2sum;
...