J'essaie de travailler sur un programme où l'utilisateur entre une matrice de taille n
x n
où n est 10 ou moins, et le programme doit le faire pivoter de 90, 180, 270 degrés etc. L'utilisateur va d'abord entrer quelle sera la taille de la matrice ("entrez n:"), puis remplira la matrice en entrant plusieurs nombres à la fois séparés par des espaces. Donc le programme dira "entrez la ligne 0 de la matrice:" et l'utilisateur tapera "1 2 3", "entrez la ligne 1 de la matrice:" etc.Comment scanner un nombre inconnu d'entiers séparés par des espaces dans C?
Mes questions sont, comment puis-je écrire un programme où je analyser des entiers dans un tableau multidimensionnel n
x n
lorsque je ne saurais pas quelle taille n
va être jusqu'à ce que l'utilisateur entre. Je sais que scanf("%d %d %d", matrix[0][0], matrix [0][1], matrix[0][2]);
peut être utilisé pour la première ligne si je sais à l'avance que ça va être une matrice 3 par 3 ou scanf("%d %d %d %d", matrix[0][0], matrix [0][1], matrix[0][2], matrix[0][3]);
pour une matrice 4 par 4, mais dans ce cas je ne connaîtrais pas n après que le code soit écrit et l'utilisateur l'entre. Tout ce que je peux penser en ce moment est:
printf("Enter n: ");
scanf("%d", &n);
if (n == 3){
printf("Enter row 0 of matrix:);
scanf("%d %d %d", matrix[0][0], matrix [0][1], matrix[0][2]);
printf("Enter row 1 of matrix:);
scanf("%d %d %d", matrix[1][0], matrix [1][1], matrix[1][2]);
printf("Enter row 2 of matrix:);
scanf("%d %d %d", matrix[2][0], matrix [2][1], matrix[2][2]);
// code to rotate 3x3 matrix
}
else if (n == 4){
printf("Enter row 0 of matrix:);
scanf("%d %d %d", matrix[0][0], matrix [0][1], matrix[0][2], matrix[0][3]);
printf("Enter row 1 of matrix:);
scanf("%d %d %d", matrix[1][0], matrix [1][1], matrix[1][2], matrix[1][3]);
printf("Enter row 2 of matrix:);
scanf("%d %d %d", matrix[2][0], matrix [2][1], matrix[2][2], matrix[2][3]);
printf("Enter row 3 of matrix:);
scanf("%d %d %d", matrix[3][0], matrix [3][1], matrix[3][2], matrix[3][3]);
// code to rotate 4x4 matrix
}
else if (n == 5) {
// and so on...
}
Cependant, je sais que cela va prendre trop de temps. Y a-t-il quelqu'un qui peut aider? Merci!
Veuillez lire à propos des boucles 'for' - couvertes au chapitre 1 de tout livre de programmation en C –
Je me suis dit que je devrais utiliser une boucle for, mais comment numériser en plusieurs numéros sur une ligne sans savoir combien de nombres w être inscrit à l'avance? – John
Appels répétés à 'scanf' - ie' scanf ("% d", ....) ' –