0% ont trouvé ce document utile (0 vote)
92 vues5 pages

Solution Fiche de TP-TD - 3 - Exo7-Exo8

Transféré par

Hichem Sari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
92 vues5 pages

Solution Fiche de TP-TD - 3 - Exo7-Exo8

Transféré par

Hichem Sari
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Solution Fiche de TP n°3 – (suite2)

Exo7_Fiche3

Algorithme Exo7_Fiche3

Calcule de la somme d'une matrice avec un vecteur.

Variables
Entier M, N, i, j
Tableau d’Entier (1..20,1..10) A
Tableau d’ Entier (1..20) B
Début
Ecrire (‘' Donner le nombre de lignes et colonnes de A ')
Lire (M, N)

Ecrire (' Donner les éléments de la matrice colonne par colonne')


Pour i = 1, N, 1 faire
Pour j = 1, M, 1 faire
Ecrire ("A(", j, ",", i, ") = ")
Lire (A[j,i])
F.F.P
F.F.P

Ecrire (' Donner les éléments du vecteur')


Pour i = 1, M, 1 faire
Ecrire ("B(",i,") = ")
Lire (B[i])
F.F.P

Pour i = 1, N, 1 faire
Pour j = 1, M, 1 faire
A[j,i]  A[j,i] + B[j]
F.F.P
F.F.P

Ecrire (' affichage des éléments de la matrice ligne par ligne')


Pour i = 1, M, 1 faire
Pour j = 1, N, 1 faire
Ecrire (A[i,j])
F.F.P
F.F.P

Si (M < > N) alors


Ecrire ("matrice non carrée")
Sinon
Ecrire ('affichage des éléments diagonaux')
Pour i = 1, M, 1 faire
Ecrire (A[i,i])
F.F.P

Ecrire (' affichage des éléments anti-diagonaux')


Pour i = 0, M-1, 1 faire
Ecrire (A(i+1,M-i])
F.F.P
Fin si
Fin

Programme Exo7_Fiche3
!*************************************************
!programme qui calcule la somme d'une matrice avec
!un vecteur
!*************************************************

integer M, N, i, j
integer, dimension(20,10) :: A
integer, dimension(20) :: B
write(*,*) ' Donner le nombre de lignes et colonnes de A '
read(*,*) M, N

write(*,*) ' Donner les elements de la matrice colonne par colonne'


do i = 1, N, 1
do j = 1, M, 1
write(*,"(a3,i1,a1,i1,a3,$)") "A(",j,",",i,")= " !voir cours no5 pour Format affichage
read(*,*) A(j,i)
end do
end do

write(*,*) ' Donner les elements du vecteur'


do i = 1, M, 1
write(*,"(a3,i1,a2,$)") "B(",i,")= " !voir cours no5 pour Format affichage
read(*,*) B(i)
end do

do i = 1, N, 1
do j = 1, M, 1
A(j,i) = A(j,i) + B(j)
end do
end do

write(*,*) ' affichage des elements de la matrice ligne par ligne'


do i = 1, M, 1
print*, A(i,1:N) ! 1:N veut dire de la colonne 1 à la colonne N
end do

if(M .ne. N)then


write(*,*) "matrice non carree"
else
write(*,*) ' affichage des elements diagonaux' ! ici l'indice de ligne égale l'indice de colonne
do i = 1, M, 1
print*, A(i,i)
end do

write(*,*) ' affichage des elements anti-diagonaux' ! ici l'indice de ligne s'incrémente de 1 vers M
do i = 0, M-1, 1 ! l'indice de colonne décrémente de M vers 1
print*, A(i+1,M-i)
end do
end if
End

Exo8_Fiche3

Algorithme Exo8_Fiche3

Calcul du remplissage d'un réservoir avec deux pompes.

Variables
Entier D1, D2
Réel V, V1, V2, V1T, V2T, Vd, VT, Vs ! Vd :volume débité, Vs : volume seuil test
Caractère[1] p ! variable pompe

Début
Ecrire (' Donner le Volume du reservoir')
Lire (V)
Ecrire (' Donner le Volume debite par la pompe P1')
Lire (V1)
Ecrire (' Donner le Volume debite par la pompe P2')
Lire (V2)
Ecrire (' Donner le Volume seuil de test')
Lire (Vs)

D1  0
D2  0
V1T  0
V2T  0
VT  0
p  '1'
Tant que (VT < V) faire
Si (p=='1') alors ! test démarrage pompe1
p  '2'
Vd  0
D1  D1 + 1
Tant que ((Vd < V1) ET (VT < V)) faire ! cycle pompe 1
Vd  Vd + Vs
VT  VT + Vs
V1T  V1T + Vs
F.F.T
sinon ! test démarrage pompe2
p  '1'
Vd  0
D2  D2 + 1
Tant que ((Vd < V2) ET (VT < V)) faire ! cycle pompe 2
Vd  Vd + Vs
VT  VT + Vs
V2T  V2T + Vs
F.F.T
Fin si
F.F.T
Ecrire ( 'D1= ',D1, ' D2= ', D2)
Ecrire ( 'V1T= ',V1T, ' V2T= ', V2T)
Fin

Programme Exo8_Fiche3

!*************************************************
!programme qui calcule le remplissage d'un réservoir
! avec deux pompes
!*************************************************
integer D1, D2
real V, V1, V2, V1T, V2T, Vd, VT, Vs ! Vd : volume débité, Vs : volume seuil test
Character(1) :: p ! p : variable pompe

write(*,*) ' Donner le Volume du reservoir'


read(*,*) V
write(*,*) ' Donner le Volume debite par la pompe P1'
read(*,*) V1
write(*,*) ' Donner le Volume debite par la pompe P2'
read(*,*) V2
write(*,*) ' Donner le Volume seuil de test'
read(*,*) Vs

D1 = 0
D2 = 0
V1T = 0
V2T = 0
VT = 0
p = '1'
do while(VT < V)
if(p=='1')then ! test démarrage pompe1
p = '2'
Vd = 0
D1 = D1 + 1
do while ((Vd < V1) .and. (VT < V)) ! cycle pompe 1
Vd = Vd + Vs
VT = VT + Vs
V1T = V1T + Vs
end do
else ! test démarrage pompe2
p = '1'
Vd = 0
D2 = D2 + 1
do while ((Vd < V2) .and. (VT < V)) ! cycle pompe 2
Vd = Vd + Vs
VT = VT + Vs
V2T = V2T + Vs
end do
end if
end do
write(*,*) 'D1= ',D1, ' D2= ', D2
write(*,*) 'V1T= ',V1T, ' V2T= ', V2T
End

Pompe2 V2 Pompe1
Vs V1

puit

Schéma illustratif

Vous aimerez peut-être aussi