Php algo td4

De The Linux Craftsman
Révision datée du 5 janvier 2022 à 19:39 par Jc.forton (discussion | contributions) (→‎Exercice 2)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

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 :

---------------------
| 0 | 1 | 2 | 3 | 4 |
---------------------
| 5 | 0 | 1 | 2 | 3 |
---------------------
| 6 | 5 | 0 | 1 | 2 |
---------------------
| 7 | 6 | 5 | 0 | 1 |
---------------------

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 PHP.

Exercice 1

<?php
$args_num = 4;
function main($argv) {
    global $args_num;
    if (sizeof ( $argv ) < $args_num) {
        echo "Pas assez d arguments !";
        return false;
    }
    $ligne = $argv [1];
    $colonne = $argv [2];
    $seq_size = $ligne + $colonne - 1;
    $sequence = explode ( ',', $argv [3] );
    if (sizeof ( $sequence ) < $seq_size) {
        echo "La taille de la sequence d initialisation ne correspond pas !";
        return false;
    }
    echo "Generation d une matrice de " . $ligne . " lignes et " . $colonne . " colonnes avec la sequence " . $argv [3];
    $matrice = array ();
    for($i = 0; $i < $ligne; $i ++) {
        for($j = 0; $j < $colonne; $j ++) {
            if ($i == 0) {
                $matrice [$i] [$j] = $sequence [$j];
            } else {
                if ($j == 0) {
                    $matrice [$i] [$j] = $sequence [$colonne - 1 + $i];
                } else {
                    $matrice [$i] [$j] = $matrice [$i - 1] [$j - 1];
                }
            }
        }
    }
    echo "Voici le resultat:\n";
    for($i = 0; $i < $ligne; $i ++) {
    echo "| ";
    for($j = 0; $j < $colonne; $j ++) {
        echo $matrice [$i] [$j];
        if($j < $colonne-1){
            echo ", ";
        }
    }
    echo " |\n";
    }
}

main($argv);
?>

Exécution

# php -f toeplitz.php 4 5 0,1,2,3,4,5,6,7
Generation d une matrice de 4 lignes et 5 colonnes
avec la sequence 0,1,2,3,4,5,6,7
Voici le resultat:
| 0, 1, 2, 3, 4 |
| 5, 0, 1, 2, 3 |
| 6, 5, 0, 1, 2 |
| 7, 6, 5, 0, 1 |

Exercice 2

Écrire un programme permettant de manipuler des polynômes. Un polynôme de degré d peut s’écrire sous la forme :

P(X) = aX^0 + bX^1 + cX^2 + ... + dX^d

On limitera le degré de nos polynômes à la valeur 10 et nous considérerons seulement les polynômes dans N.

Question 1

Écrire un programme permettant la saisie des coefficients d’un polynôme de degré d.

Question 2

Ajouter des instructions permettant l’affichage à l’écran un polynôme de degré d.

Question 3

Ajouter des instructions permettant d’effectuer la somme de deux polynômes de degrés au plus d.

Question 4

Ajouter des instructions permettant d’évaluer un polynôme pour une valeur x particulière.