Différences entre versions de « C algo td4 »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
Ligne 1 : Ligne 1 :
<source lang="c">
+
= Exercice 1 =
#include <stdio.h>
+
Une matrice de Toeplitz (du nom du mathématicien allemand Otto Toeplitz 1881-1940) est une matrice dont les coefficients sur une diagonale descendant de gauche à droite sont les mêmes.
 +
 
 +
Par exemple, la matrice suivante est une matrice de Toeplitz :
 +
<center><math>A=\begin{pmatrix}
 +
0 &1 & 2 & 3 & 4\\
 +
5 & 0 & 1 & 2 & 3\\
 +
6 & 5 & 0 & 1 & 2\\
 +
7 & 6 & 5 & 0 & 1\\
 +
\end{pmatrix}</math></center>
 +
 
 +
On souhaite écrire un programme qui permette de créer et d’afficher des matrices de Toeplitz. Ce programme devra effectuer les opérations suivantes :
 +
*Demander à l’utilisateur la saisie d’un nombre de lignes et d’un nombre de colonnes ;
 +
*Demander à l’utilisateur la saisie d’une séquence d’initialisation ;
 +
*Générer la matrice correspondante ;
 +
*Afficher cette matrice.
  
int main()
+
Faire une analyse du sujet en décrivant les fonctionnalités du programme en langage naturel ou sous forme d’algorigramme et écrivez le en ''C''.
{
 
    int ligne,colonne,i,j;
 
   
 
    printf("Combien de lignes : "); //Le nombe de colonnes pour la matrice voulue
 
    scanf("%d", &ligne);
 
    printf("Combien de colonnes : "); //Le nombre de colonnes pour la matrice voulue
 
    scanf("%d", &colonne);
 
   
 
    int sqc=ligne+colonne-1, sequence[sqc];
 
    int mat[ligne][colonne];
 
   
 
    printf("\n");
 
   
 
    for (i=0; i<sqc; i++) { //On connait le nombre de séquence c'est "sqc"
 
        printf("Rentrez la valeur de l'index %d : ",i+1);
 
        scanf("%d", &sequence[i]); //On rentre les valeurs de la matrice
 
    }
 
   
 
    for (i=0; i<ligne; i++) {
 
        for (j=0; j<colonne; j++) {
 
            if (i==0) {
 
                mat[i][j]=sequence[j];
 
            }else{
 
                if(j == 0){
 
                    mat[i][j]=sequence[colonne+i-1];
 
                }else{
 
                    mat[i][j]=mat[i-1][j-1];
 
                }
 
            }
 
        }
 
    }
 
    for (i=0; i<ligne; i++) {
 
        printf("|");
 
        for (j=0; j<colonne; j++) {
 
            printf("%d",mat[i][j]);
 
            if (j<colonne-1) {
 
                printf(",");
 
            }
 
        }
 
        printf("|\n");
 
    }
 
   
 
   
 
    return 0;
 
}
 
</source>
 
  
<source lang="c">
+
<div class="toccolours mw-collapsible mw-collapsed" style="width:700px">
 +
<big>Afficher la solution:</big>
 +
<source class="mw-collapsible-content" lang="c">
 
#include <stdio.h>
 
#include <stdio.h>
#include <string.h>
+
#include <stdlib.h>
  
int main(int argc, const char * argv[])
+
int main(void) {
{
+
  int ligne, colonne, i, j;
    int degre,i;
+
  /* Récupération des paramètres de la matrice */
    char poly[50];
+
  printf("Combien de lignes : ");
   
+
  scanf("%d", &ligne);
    printf("Quel degre : ");
+
  printf("Combien de colonnes : ");
    scanf("%d", &degre);
+
  scanf("%d", &colonne);
   
+
  /* Déduction des paramètres de la séquence d'initialisation */
    int coef[degre];
+
  int seq_size = ligne + colonne - 1, sequence[seq_size];
   
+
  int mat[ligne][colonne];
    printf("\n");
+
  printf("\n");
   
+
  for (i = 0; i < seq_size; i++) {
    for (i=0; i<degre; i++) {
+
      printf("Rentrez la valeur de l'index %d : ", i + 1);
        printf("Rentrez la valeur du coefficient %d : ",i+1);
+
      scanf("%d", &sequence[i]);
        scanf("%d", &coef[i]);
+
  }
        sprintf(poly, "X^%d", coef[i]);
+
  /* Construction de la matrice */
        if (i < degre-1) {
+
  for (i = 0; i < ligne; i++) {
             strcat(poly, "X");
+
      for (j = 0; j < colonne; j++) {
            strcat(poly, " + ");
+
        if (i == 0) {
        }else if (i != degre){
+
            mat[i][j] = sequence[j];
            sprintf(poly, "X^%d", degre-i);
+
        } else {
             strcat(poly, " + ");
+
            if (j == 0) {
        }
+
              mat[i][j] = sequence[colonne + i - 1];
    }
+
            } else {
   
+
              mat[i][j] = mat[i - 1][j - 1];
    printf("%s", poly);
+
             }
   
+
        }
    return 0;
+
      }
 +
  }
 +
  /* Affichage de la matrice */
 +
  for (i = 0; i < ligne; i++) {
 +
      printf("|");
 +
      for (j = 0; j < colonne; j++) {
 +
        printf("%d", mat[i][j]);
 +
        if (j < colonne - 1) {
 +
             printf(",");
 +
        }
 +
      }
 +
      printf("|\n");
 +
  }
 +
  return EXIT_SUCCESS;;
 
}
 
}
 
</source>
 
</source>
 +
</div>
 +
= Exercice 2 =

Version du 12 mars 2014 à 13:24

Exercice 1

Une matrice de Toeplitz (du nom du mathématicien allemand Otto Toeplitz 1881-1940) est une matrice dont les coefficients sur une diagonale descendant de gauche à droite sont les mêmes.

Par exemple, la matrice suivante est une matrice de Toeplitz :

On souhaite écrire un programme qui permette de créer et d’afficher des matrices de Toeplitz. Ce programme devra effectuer les opérations suivantes :

  • Demander à l’utilisateur la saisie d’un nombre de lignes et d’un nombre de colonnes ;
  • Demander à l’utilisateur la saisie d’une séquence d’initialisation ;
  • Générer la matrice correspondante ;
  • Afficher cette matrice.

Faire une analyse du sujet en décrivant les fonctionnalités du programme en langage naturel ou sous forme d’algorigramme et écrivez le en C.

Afficher la solution:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
   int ligne, colonne, i, j;
   /* Récupération des paramètres de la matrice */
   printf("Combien de lignes : ");
   scanf("%d", &ligne);
   printf("Combien de colonnes : ");
   scanf("%d", &colonne);
   /* Déduction des paramètres de la séquence d'initialisation */
   int seq_size = ligne + colonne - 1, sequence[seq_size];
   int mat[ligne][colonne];
   printf("\n");
   for (i = 0; i < seq_size; i++) {
      printf("Rentrez la valeur de l'index %d : ", i + 1);
      scanf("%d", &sequence[i]);
   }
   /* Construction de la matrice */
   for (i = 0; i < ligne; i++) {
      for (j = 0; j < colonne; j++) {
         if (i == 0) {
            mat[i][j] = sequence[j];
         } else {
            if (j == 0) {
               mat[i][j] = sequence[colonne + i - 1];
            } else {
               mat[i][j] = mat[i - 1][j - 1];
            }
         }
      }
   }
   /* Affichage de la matrice */
   for (i = 0; i < ligne; i++) {
      printf("|");
      for (j = 0; j < colonne; j++) {
         printf("%d", mat[i][j]);
         if (j < colonne - 1) {
            printf(",");
         }
      }
      printf("|\n");
   }
   return EXIT_SUCCESS;;
}

Exercice 2