2014-06-15 4 views
0

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?

+0

Avez-vous essayé de rechercher 'comment saisir des valeurs dans un tableau en C'? –

Répondre

0

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); 
} 
+0

Désolé, fixe! Merci! – nrofis

+0

Mineur: Mieux vaut utiliser 'size_t size' 2) La valeur de retour de' malloc()/realloc() 'n'est pas nécessaire. 3) Simplification 'int * arr = NULL;' – chux

5

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.

1

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.