Matrice en langage c [Fermé]

Signaler
-
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
-
Bonjour a tous !!
je dois remplir une matrice d'une maniére un peu delicate :
j'ai le nbr de colones et de lignes , mé je dois remplir de façon que chaque colonne code son numero en binaire !!!
en gros la matrice ne contiendra que des 1 et des 0 ...
si nbr colonne =5
et nbr ligne = 3
la matrice serait comme suit :

1 0 1 0 1
0 1 1 0 0
0 0 0 1 1


AIDEZ MOI SVP !!

je vous attend !!!
A voir également:

3 réponses

Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
#include <stdio.h>
#include <stdlib.h>

#include <math.h>

main() {

        long *matrice[3];

        int i;
        for(i=0; i<3; i++) {
                int taille = sizeof(long[5]);
                matrice[i] = (long *)malloc(taille);
                int j;
                for(j=0; j<5; j++) {
                        matrice[i][j] = ((j+1) & (int)pow(2,i)) >> i;
                }
        }


        for(i=0; i<3; i++) {
                int j;
                for(j=0; j<5; j++) {
                        printf("%d ", matrice[i][j]);
                }
                printf("\n");
        }



        for(i=0; i<3; i++) {
                free(matrice[i]);
        }
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

bonjour,
#include <stdio.h>
#include <math.h>

#define C 5   //colonnes
#define L 3   //lignes

int main()
{

int i,j;
int tab[C][L];

for (i=0;i<C;i++)
{
for (j=0;j<L;j++)
	{if (((i+1) & (int) pow(2,j)) == (int) pow(2,j)) tab[i][j]=1;
	 else tab[i][j]=0;}
}

for (j=0;j<L;j++)
{
for (i=0;i<C;i++) printf("%d ",tab[i][j]);
printf("\n");
}

return 0;
}
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
123
Bonjour,

Voici une version sans math.h

#include <stdio.h>

#define N_LINES 3
#define N_COLUMNS 5

int main()
{
	unsigned int iLine;
	unsigned int iColumn;

	unsigned int matrice[N_LINES][N_COLUMNS];

	// Initialisation
	for ( iColumn = 0 ; iColumn < N_COLUMNS ; iColumn++ )
	{
		for ( iLine = 0; iLine < N_LINES ; iLine++ ) 
		{
			matrice[iLine][iColumn] = ((iColumn+1) >> iLine) & 1;
		}
	}

	// Affichage
	for ( unsigned int iLine = 0; iLine < N_LINES ; iLine++ ) 
	{
		for ( unsigned int iColumn = 0 ; iColumn < N_COLUMNS ; iColumn++ )
		{
			printf("%d ", matrice[iLine][iColumn]);
		}
		printf("\n");
	}
}



matrice[iLine][iColumn] = ((iColumn+1) >> iLine) & 1;

On ramène le bit du numéro de la colonne au rang de bit de poids faible via un décallage à droite, on supprime les autres bits avec un Et binaire.
Pas besoin d'une librairie mathématique pour des opérations que tout processeur sait faire de base. (ou presque)

M.
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
Pas besoin d'une librairie mathématique pour des opérations que tout processeur sait faire de base. (ou presque)

Tu as raison ;-)

Ca doit faire 10 ans que je suis sorti de la fac et tout cela est loin derrière moi, je n'ai pas été très finaud sur ce coup-là.
Ca doit faire tout autant de temps que je n'avais pas fait de C... maintenant plutôt du Perl ou du PHP (voire du OpenOffice.org... :-)

Raph