Monday, 28 November 2016

TP 6, code sources et complement

1. Code source du TP6
#include <stdio.h>
#define LIGNE_MAX 5
#define COL_MAX 5
int main(){
    //en plus
    /*int taille;
    scanf("%d",&taille);
    int tmpTab[taille];*/ //votre compilateur peut accepter de declarer des tab comme ca localement mais ...
    //sulp ne

    unsigned int i,j,nbrLigne,nbrCol;
    int somCol,
         matElem[LIGNE_MAX][COL_MAX]={{4,2,3,5,1},{1,2,3,4,0},{1,2,3,4,0},{1},{0}},
         tabSomColImpaire[(COL_MAX/2)+1]={0};
    //lecture de la taille
    printf(" Donner le nbr de lignes <=%u:",LIGNE_MAX);
    scanf("%u",&nbrLigne);
    printf(" Donner le nbr de colonnes <=%u:",COL_MAX);
    scanf("%u",&nbrCol);

    printf("\nVotre matrice est initialisee a:\n");
    for(i=0;i<nbrLigne;i++){                                               //indices de 0 a taille-1
        for(j=0;j<nbrCol;j++){
            printf("\t%3d",matElem[i][j]);                                 //les crochets pour degrouper
        }
        printf("\n");
    }
    //lecture des elements1
    for(i=0;i<nbrLigne;i++){                                              //parcours ligne par ligne
        for(j=0;j<nbrCol;j++){
            printf("\nDonner l'element(%u,%u):",i+1,j+1);                 //pourquoi +1?
            scanf("%d",&matElem[i][j]);
        }
    }

    //traitements
    for(j=0;j<nbrCol;j+=2){                                                 //parcours col par col
        somCol=0;
        for(i=0;i<nbrLigne;i++){
            somCol+=matElem[i][j];
        }
        tabSomColImpaire[j/2]=somCol;
    }
    //Affichage
    printf("\nVous avez introduit la matrice:\n");

    for(i=0;i<nbrLigne;i++){                                               //indices de 0 a taille-1
        for(j=0;j<nbrCol;j++){
            printf("\t%3d",matElem[i][j]);
        }
        printf("\n");
    }
    for(j=0,i=1;j<nbrCol;j+=2,i++){                                         //combiner 2 compteurs
        printf("La somme des elements de la colonne %u est %d\n",i,tabSomColImpaire[i-1]);
    }
    return 0;
}

2. Exécuter le code suivant puis essayer de comprendre comment il effectue sa tache
#include <stdio.h>
#include <stdlib.h>

int main()
{
    const int maxTaille=10;
    int vectVal[maxTaille],i,nbrVal,val,isValIn,tmpVal;
    printf("Donnez vos valeurs (pas plus de %d). Lorsque vous voulez arreter entrez zero",maxTaille);
    i=0;
    do{ //On met les accolades pour differencier rapidement entre while et do while
        printf("\nVal(%d)=",i+1);
        scanf("%d",&tmpVal);
        if(!i&&!tmpVal){printf("\nIl faut au moins une val non nulle!");}
        else{if(tmpVal)vectVal[i++]=tmpVal;}
    }while(((i<maxTaille)&&(tmpVal))||(!i&&!tmpVal));

    printf("\nLe nombre de valeurs a considerer est %d "
           "\nDonner une valeur, je vais vous donner son premier rang "
           "dans votre liste:",nbrVal=i);
    scanf("%d",&val);
    i=isValIn=0;
    while(!isValIn &&(i<nbrVal)){
       if(vectVal[i]==val){isValIn=1;}
       i++;
    }
    if(isValIn){
        printf("\n Le premier rang de votre valeur est %d",i);
    }else{
        printf("\n Votre valeur n'existe pas");
    }
    return 0;
}

3. Réaliser la même tache avec des boucles for.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.