Comment numériser les valeurs d'une matrice? Comme:C: Analyse matricielle avec entiers
Input: 3 4 5 6 7
What I want:- ar[5] = {3, 4, 5, 6, 7};
Cela semble facile, mais je suis coincé là. Quelqu'un peut-il aider?
Comment numériser les valeurs d'une matrice? Comme:C: Analyse matricielle avec entiers
Input: 3 4 5 6 7
What I want:- ar[5] = {3, 4, 5, 6, 7};
Cela semble facile, mais je suis coincé là. Quelqu'un peut-il aider?
Vous devez déclarer la taille du tableau avant (recommandé avec #define
), ce qui signifie que vous devez connaître la taille de l'entrée avant.
#define LEN 5
void main()
{
int arr[LEN];
for (i =0; i < LEN; i++)
scanf("%d", &arr[i]);
}
Si vous souhaitez cearte dynamiquement un tableau, vous devez utiliser des pointeurs (avec malloc et realloc).
void main()
{
int* arr = (int*) malloc(0);
int size = 0;
int val;
for (size = 0; scanf("%d", &val) != EOF; size++)
{
arr = (int*) realloc(arr, size + 1);
arr[size] = val;
}
free(arr);
}
Vous pouvez le lire comme vous lisiez cinq entiers un après l'autre:
for (i = 0; i < 5; i++)
scanf("%d", &array[i]);
Vous pouvez entrer 3 4 5 6 7
normalement.
Tous ci-dessus sont des réponses valides, vous pouvez également utiliser un tableau alloué dynamiquement si vous ne savez pas combien d'éléments il y a. Il y a beaucoup de versions différentes telles que l'augmentation de la taille du tableau de 1 à chaque nouvel élément ou inputing la taille au début ...
#include<stdio.h>
#include<stdlib.h>
int main(){
int *ar, i, j, h;
scanf("%d", &i); // Input the size of an array
ar = (int*)malloc(sizeof(int)*i); // allocate the memory for your array
for(j = 0; j < i; j++){
scanf("%d", &h);
*(ar+j) = h;
}
for(j = 0; j < i; j++) printf("%d\n", ar[j]);
free(ar);
return 0;
}
Et voici un exemple où vous augmentez la taille de 1 à chaque nouvel élément en utilisant realloc();
. Pour cet exemple, disons que vous entrez des nombres jusqu'à ce que vous entrez -1.
#include<stdio.h>
#include<stdlib.h>
int main(){
int *ar, i, s = 1;
ar = (int*)malloc(sizeof(int));
do{
scanf("%d", &i);
if(i == -1) break;
ar[s-1] = i;
realloc(ar, ++s);
}while(1);
for(i = 0; i < s - 1; i++) printf("%d\n", ar[i]);
free(ar);
return 0;
}
chose très importante avec des tableaux alloués dynamiquement est que vous devez libérer la mémoire à l'aide free();
avant de quitter le programme.
Avez-vous essayé de rechercher 'comment saisir des valeurs dans un tableau en C'? –