Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 06-05-2010 11:31:26

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

[C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Bonjour à tous,
j'ai besoin de votre aide: la programmation ne m'a jamais trop parlé!
J'ai une matrice   carrée de taille 4x4:

a b c d
e f g h
i  j  k l
m n p o 

C'est une matrice de 4 lignes  et 4 colonnes. Les coefficients de la matrice sont à coefficients réels.
Question:
Écrire un programme en C qui demande à l'utilisateur de taper les coefficients de matrice et qui affiche les matrices triangulaires inférieures et supérieures (ou l'une de deux).
Je ne vois pas trop comment faire le code en C.
Merci,
Valentin

Dernière modification par Valentin (07-05-2010 09:21:00)

Hors ligne

#2 07-05-2010 09:51:59

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut Valentin,

Je présume qu'en C, les tableaux existent à l'état natif contrairement à python : je ne connais pas le C, donc je vais travailler en pseudo-code
Je présume que c'est quelque chose ça que tu attends :
[tex]\begin{pmatrix}a(1,1)&a(1,2)&a(1,3)&a(1,4)\\a(2,1)&a(2,2)&a(2,3)&a(2,4)\\a(3,1)&a(3,2)&a(3,3)&a(3,4)\\a(4,1)&a(4,2)&a(4,3)&a(4,4)\end{pmatrix}[/tex]
Donc tu vas devoir disposer de 3 tableaux :
- un tableau a de dimension  (4,4) a pour stocker ta matrice A de départ
- un tableau mti de dimension  (4,4) pour stocker la matrice triangulaire TI inférieure
- un tableau mts de dimension  (4,4) pour stocker la matrice triangulaire TS supérieure
Tu vas devoir les déclarer et préciser que ce sont des tableaux de réels.

Il me semble (j'ai oublié la technique) que tu auras besoin du déterminant de a, non ?
Toutes les variables dont tu vas te servir devront être déclarées ainsi que leurs types.
Tu vas avoir des nombres réels. Veux-tu que le cas de racines ou de fractions soit géré ? Exemple que : [tex]{2 \over 3}\times \sqrt 5[/tex] ne soit pas géré comme une valeur approchée ?
Si oui, on n'est pas sortis de l'auberge...


Ensuite
1. Initialisation double boucle
    de j = 1 à j = 4 (en python j= 5, puisqu'il s'arrête en détectant le départ du 5e tour)
           de i = 1 à i = 4 (ou 5 si comme en python)
                  Invite à rentrer un : nombre
                   (contrôle éventuel que quelqu'un rentre bien un nombre : si c'est pour toi seul, alors osef...)
                  a(j,i)= nombre
            next i (pas nécessaire en Python)
     next j (pas nécessaire en Python)
2. Phase de calculs
    J'ai besoin que tu me décrives les calculs pour un exemple de matrice, pour que je puisse aviser
     Exemple
      [tex]\begin{pmatrix}1 & 2 & 3 &  4 \\2 & 3 & 4 & 1 \\ 3 & 4 & 1 & 2\\4 & 1 & 2 & 3\end{pmatrix}[/tex]

J'ai cherché sur le net : beaucoup de théorie, peu de pratique (ou sur des matrices 2 x 2, rarement 3 x3)

3. Phase d'affichage.

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#3 07-05-2010 11:48:06

freddy
Membre chevronné
Lieu : Paris
Inscription : 27-03-2009
Messages : 7 457

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut Valentin,

pour quelqu'un qui est en L1 de Maths et Informatiques Appliquées, je crains que ton manque de goût pour la programmation ne soit un "défaut" handicapant à terme.

En fait, c'est assez amusant, car la programmation fait appel à des capacités intellectuelles rarement développées durant les études secondaires.

Bon courage !


De la considération des obstacles vient l’échec, des moyens, la réussite.

Hors ligne

#4 07-05-2010 14:44:04

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut Yoshi,
Effectivement, on aurait besoin de trois tableaux, mais on va garder deux tableaux: tableau de la matrice A et un autre de la matrice TS. Il faudrait nécessairement initialiser ces tableaux. Comme on connaît le nombre d'itération ou de compteur, en C, on utilise la boucle for (i=1;i<=4;i++) et for(j=1;j<=4;j++) {printf("entrer un nombre:\n"); après je ne sais pas!!!
2) phase des calculs
On considère ton exemple de la matrice A proposé. Pour triangulariser A, on utilise pivot de Gauss de Jordan sur les lignes de A et les opérations élémentaires. On a un pivot sur la ligne 1 de A don la ligne 2 devient :  [tex]{L}_{2}-2{L}_{1\,}puis\,{L}_{3}\rightarrow {L}_{3}-3{L}_{1}ensuite\,{L}_{4}\rightarrow {L}_{4}-4{L}_{1}[/tex] On obtient une nouvelle matrice, puis recommence le pivot sur la ligne 2, on aurait donc la ligne 3 de la nouvelle matrice A' devient  [tex]{L}^{'}_{3}\rightarrow {L}^{'}_{3}+2{L}^{'}_{2}\,puis\,{L}^{'}_{4}\rightarrow {L}^{'}_{4}+7{L}^{'}_{2}[/tex]
Enfin, dernier pivot sur la ligne 3 de la nouvelle matrice A''  [tex]{L}^{''}_{4}\rightarrow {L}^{''}_{4}-4{L}^{''}_{3}[/tex]
D'où on obtient la matrice TS suivante:
1 2 3 4
0 1 2 7
0 0 1 -1
0 0 0 1
je ne sais pas comment faire le programme en C!!!
Valentin

Hors ligne

#5 07-05-2010 21:16:25

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut,

for (i=1;i<=4;i++) et for(j=1;j<=4;j++) {printf("entrer un nombre:\n"); après je ne sais pas!!

Après il faut ranger le bon nombre à la bonne place dans le tableau : a(j,i) = nombre entré.
Ca, ce n'est pas un problème...

Ok, pour le Pivot de Gauss, ça je sais faire...
Mais là où le problème se pose c'est pour le faire appliquer par un progr sans intervention humaine : c'est bien plus coton.
Un problème intermédiaire se pose et que je t'avais signalé mais tu ne m'as pas répondu : es-tu bien sûr de vouloir gérer une matrice à coefficients réels ???
Parce qu'alors, il faudra distinguer le cas des rationnels purs et celui des réels purs si tu souhaites des valeurs exactes.
Ce qui veut dire que le programme devra demander pour chacune des 16 entrées :
nombre décimal relatif O/N ?
Si non : nombre rationnel pur O/N ?
Si non (c'est donc un réel pur) distinguer les racines simples, les quotients de racines par des entiers, les nombres transcendants...
On n'est pas couchés, hein ?!!
Les calculs sont déjà suffisamment foireux avec des coeff entiers, si en plus il les faut réels...
Cela correspond-t-il à un exo qu'on t'a donné ?
Je crois que j'ai déjà qq part le pivot de gauss sur des entiers, je vais vérifier...
Sinon, comme ça à l'arrache, il y a un calcul bourrin qui doit marcher :
supposons 1ere col : a e i m..
Je calcule n = e*i*m
Le multiplie la 2e ligne par 2*i*m j'obtiens 2*e*i*m et je lui soustrais (e*m*L3+e*i*L4) et je trouve 0 à la position pour a(2,2) mais ça m'oblige à stocker une matrice temporaire B avec au départ B = A et modif des coeff au fur et à mesure...
Tu vois ou pas ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#6 08-05-2010 18:17:42

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Re,

Bon, mon idée de multiplication donne des nombres vite inutilement trop gros.
J'ai essayé d'améliorer via ppcm, c'est à peine mieux...
Je suis donc reparti à la source de la théorie, et j'ai trouvé ça :
http://www.mathaphy.net/index.php?mod=p … id_page=52
Ca tourne, mais c'est moche comme tout, il me reste à factoriser ça en écrivant des sous-programmes.
Puis cette histoire de "normalisation", c'est bien gentil, mais les divisions et le travail avec des éventuellement des quotients décimaux approchés, c'est pas le "top"...
Je modifie la matrice proposée : trop facile pour une bécane avec des 1 :
[tex]\begin{pmatrix}7 & 2 & 3 &  4 \\3 & 3 & 4 & 7 \\ 3 & 4 & 11 & 2\\4 & 7 & 2 & 3\end{pmatrix}[/tex]
Je vais reprendre mon idée de ppcm, mais sur 2 nombres et comparer les méthodes...

Peut-on "simplifier" une matrice ?


@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#7 09-05-2010 11:56:46

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Re,

Programme repris, réécrit, nettoyé sans m'occuper de celui d'hier soir
Que ce soit celui d'hier soir, ou celui de ce matin, j'ai un désaccord avec A(3,3) tu trouves 1, le prog trouve 40.
Il y a donc un os... Où ?

# usr/bin/env python
# -*- coding: utf-8 -*-

# Destiné à obtenir quotient décimal par / (et entier par //)
from __future__ import division

def normalisation(db,TS):
    # Je ramène le 1er coefficient non nul de la ligne à 1
    piv=TS[db][db]
    for i in range(db,4):
        TS[db][i]=TS[db][i]/piv
    return TS

def annulation(db,TS):
    # Pour chaque valeur de db, je dois soustraire :
    # les Lignes de db+1 à 3 à la ligne db x 1er coeff non nul de la ligne
    for j in range(db+1,4):
        coeff=TS[j][db]
        for i in range(db,4):
            TS[j][i]=TS[j][i]-coeff*TS[db][i]
    return TS

# J'initialise mes matrices
A=[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]]
TS=[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]]

# Je dois normaliser successivement les lignes 0 à 2
# Puis annuler les lignes suivantes

for db in range(3):
    TS=normalisation(db,TS)
    TS=annulation(db,TS)

# Affichage arrondi à 2 chiffres après la virgule
for j in range(4):
    for i in range(4):
        print round(TS[j][i],2),
    print
    print

Affichage :

1.0 2.0 3.0 4.0

0.0 1.0 2.0 7.0

0.0 0.0 1.0 -1.0

0.0 0.0 0.0 40.0

Heureusement pour toi, Python, dans sa syntaxe est assez, transparent : tu devrais pouvoir transposer facilement en C.
Besoin d'explications supplémentaires ?
Je m'attaque à la version ppcm.


@+
Si on veut améliorer ça, il faut pouvoir gérer les calculs fractionnaires, ce que Python sait faire à l'état natif. Et en C, c'est possible ?


Arx Tarpeia Capitoli proxima...

Hors ligne

#8 09-05-2010 19:12:36

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

RE,

Version ppcm opérationnelle :

# usr/bin/env python
# -*- coding: utf-8 -*-

# Destiné à obtenir quotient décimal par / (et entier par //)
from __future__ import division
from fractions import gcd

def coefficients(a,b):
    ppcm = a*b//gcd(a,b)
    coeff_a=ppcm//b
    coeff_b=ppcm//a
    return coeff_a,coeff_b

def annulation(db,TS):
    # Pour chaque valeur de db, je dois soustraire :
    # les Lignes de db+1 à 3, x coeff_a,  à la ligne db x coeff_b non nul de la ligne
    for j in range(db+1,4):
        a,b=TS[db][db],TS[j][db]
        coeff_a,coeff_b= coefficients(a,b)    
        for i in range(db,4):
            TS[j][i]=coeff_a*TS[j][i]-coeff_b*TS[db][i]
    return TS

# J'initialise mes matrices
A=[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]]
TS=[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]]

for db in range(3):
    TS=annulation(db,TS)

# Affichage arrondi à 2 chiffres après la virgule
for j in range(4):
    for i in range(4):
        print round(TS[j][i],2),
    print
    print

Résultat

1.0 2.0 3.0 4.0

0.0 -1.0 -2.0 -7.0

0.0 0.0 -4.0 4.0

0.0 0.0 0.0 -40.0

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#9 10-05-2010 09:37:00

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Bonjour Yoshi,
Les coefficients de la matrice peuvent être réels ou complexe ou pas. En C, il y a les différents types (int pour des entiers, float pour déclarer les réels ou complexes, les autres je connais pas...)
Si on peut suivre ton premier exemple de la matrice donnée A:
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
Sa matrice triangulaire sup TS:
1 2 3 4
0 1 2 7
0 0 1 -1
0 0 0 39
J'ai pensé que dans le programme en C, on peut donner des relation trouvés pour avoir cette matrice:
[tex]{L}_{1TS}={L}_{1A}\,{L}_{2TS}=-{L}_{2}+2{L}_{1}\,{L}_{3TS}=\frac{-1}{4}{\left({L}_{1}+{L}_{3}-2{L}_{2}\right)}_{A}\,{L}_{4TS}={L}_{4}+11{L}_{1}-9{L}_{2}+{L}_{3}[/tex]
il faut les mettre en code  C, je ne sais pas faire!
Valentin

Hors ligne

#10 10-05-2010 10:05:15

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut p'tit gars,


[tex]{L}_{1TS}={L}_{1A}\,{L}_{2TS}=-{L}_{2}+2{L}_{1}\,{L}_{3TS}=\frac{-1}{4}{\left({L}_{1}+{L}_{3}-2{L}_{2}\right)}_{A}\,{L}_{4TS}={L}_{4}+11{L}_{1}-9{L}_{2}+{L}_{3}[/tex]

Rien compris...
A quoi veux-tu jouer ?
Tu veux "fabriquer" pour chaque Ligne sa formule de construction en seul bloc ? Et ainsi te passer des boucles ?
Si c'est ça, alors t'as raison, pourquoi faire simple quand on peut faire compliqué ?
C, Python, Ocaml,  VB.. même combat : ce n'est pas un problème de langage, c'est un problème de maths !
Il faut donc commencer par écrire les formules littérales avec les [tex]a_{ji}[/tex] et après entreprendre l'écriture info : ça risque d'être imbuvable !
Tu ne feras pas l'économie des boucles, sauf à écrire les formules pour chacun des coeff : d'un point de vue programmation c'est assez moche, mais si c'est c'est bien ça, ça doit pouvoir se faire.
En plus, avec mes prog qui tournent sans pb, j'ai juste à adapter les indices de fin de boucles pour pouvoir traiter indifféremment des matrices 4x4, 5x5, 6x6...

Je vais voir tes formules, mais le meilleur matheux des 2, c'est toi, normalement, hein...

@+

PS c'est pas 39, c'est 40, hein ! Mes 2 prog sont d'accord et je l'ai refait à la main... ;-)


Arx Tarpeia Capitoli proxima...

Hors ligne

#11 10-05-2010 10:39:37

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Avec mes dernière formule  [tex]{L}_{4TS}={L}_{4}+11{L}_{1}-9{L}_{2}+{L}_{3}[/tex], je trouve aussi 40! j'ai dû faire une erreur quelque part! je recommence mes calculs

Hors ligne

#12 10-05-2010 11:23:36

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

yoshi a écrit :

RE,

Version ppcm opérationnelle :

# usr/bin/env python
# -*- coding: utf-8 -*-

# Destiné à obtenir quotient décimal par / (et entier par //)
from __future__ import division
from fractions import gcd

def coefficients(a,b):
    ppcm = a*b//gcd(a,b)
    coeff_a=ppcm//b
    coeff_b=ppcm//a
    return coeff_a,coeff_b

def annulation(db,TS):
    # Pour chaque valeur de db, je dois soustraire :
    # les Lignes de db+1 à 3, x coeff_a,  à la ligne db x coeff_b non nul de la ligne
    for j in range(db+1,4):
        a,b=TS[db][db],TS[j][db]
        coeff_a,coeff_b= coefficients(a,b)    
        for i in range(db,4):
            TS[j][i]=coeff_a*TS[j][i]-coeff_b*TS[db][i]
    return TS

# J'initialise mes matrices
A=[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]]
TS=[[1,2,3,4],[2,3,4,1],[3,4,1,2],[4,1,2,3]]

for db in range(3):
    TS=annulation(db,TS)

# Affichage arrondi à 2 chiffres après la virgule
for j in range(4):
    for i in range(4):
        print round(TS[j][i],2),
    print
    print

Résultat

1.0 2.0 3.0 4.0

0.0 -1.0 -2.0 -7.0

0.0 0.0 -4.0 4.0

0.0 0.0 0.0 -40.0

@+

Ton code python est juste, il te donne ce que je veux, mais comment traduire en C?

Hors ligne

#13 10-05-2010 13:02:52

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Ok !

Je vois que je vais devoir me trouver les mots-clés du langage C et apprendre un minimum sur sa gestion des tableaux...

@+

PS
Bien sûr que mes codes Python sont justes, sinon, je ne vous les aurais pas jetés en pâture ;-)


Arx Tarpeia Capitoli proxima...

Hors ligne

#14 10-05-2010 13:29:04

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Re,

Bon, Valentin, sérieux, il va falloir t'y mettrre..
Je viens de de tomber là-dessus :
http://www-ipst.u-strasbg.fr/pat/program/tpc.htm
En cliquant sur tableaux multidimensionnels :
- tu trouveras la méthode de déclaration
- la méthode de lecture de la matrice
- la façon d'accéder à l'élément l,c

Je continue mes recherches...

@+

PS1
Calcul de PGCD en C :

include <stdio.h>

int pgcd(int a, int b)
{
  while (a && (b %= a) && (a %= b));

  return a+b;
}

int main(void)
{
  int a = 267064, b = 259032;

  printf("pgcd(%d, %d)  = %d\n", a, b, pgcd(a, b));
  return 0;
}

Apparemment pour demander une entrée, il faut un complément à ton {printf("entrer un nombre:\n"); : un scanf après... Il me semble donc, contrairement à Python (et d'autres) qui permet les 2 en 1
nombre=int(raw_input("entrer un nombre : "))
(input tout court à partir des versions 3.x)
Le C me paraît incroyablement verbeux... !


Arx Tarpeia Capitoli proxima...

Hors ligne

#15 10-05-2010 13:43:39

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

J'ai essayé de faire ça, ça ne marche pas!
#include<stdio.h>
float matrice(int A[4][4]){
int i,j;
for(i=0;i<4;i++){
printf("entrer la valeur de la case numero%d de la ligne de A:\n",i);
scanf("%f",&A[i];}
for(j=0;j<4;j++){
scanf("%f",&A[j]);}
return;
}

main(){
float A[4][4];
float L'1,L'2,L'3,L'4;
L'1=0,L'2=0,L'3=0,L'4=0;
printf("entrer les valeurs de L1 L2 L3 et L4 de la matrice A:\n",L1,L2,L3,L4);
for(i=0;i<4;i++){
scanf("%f",&L1[i]);
}
L'1=L1;
L'2=-L2+2L1;
L'3=-0.25(L1+L3-2L2);
L'4=L4+11L1-9L2+L3;
printf("L'1:%f,L'2:%f,L'3:%f,L'4:%f:\n",L'1,L'2,L'3,L'4);
}
ça ne marche!!! comment faire?
Valentin

Hors ligne

#16 10-05-2010 13:59:22

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

RE,

Ça ne marche pas

Vague, très vague... Ça veut dire quoi exactement ?
Ton progr plante ou plante pas ?
Si plantage, message d'erreur ?
Si non, boucle sans fin ou affichage farfelu ?

Avant de "jouer" avec des entrées, essaie donc de récrire un programme pour lire et calculer à partir de ma matrice exemple.
1. 1er temps. Donne la matrice. Lis-la. Affiche-la. Si cette étape est bonne, on passe à la suite.
2. La suite, par exemple multiplier la 1ere ligne (par ex) de la matrice TS (au départ TS et a identiques), réafficher la nouvelle matrice.
    Pourquoi ? Ca me (nous) permettra de voir
    * si tu sais accéder à un élément quelconque l,c de la matrice
    * si tu sais effectuer une opération arithmétique quelconque sur l'élément l,c
    * si tu sais le remettre à sa place.
3. si ça marche, alors il sera temps d'envisager la suite.

Technique de débogage efficace : mon plus gros progr écrit en Python (Phynance) a été purgé de ses gaffes comme ça.
Pars du principe qu'un progr info ne marchera JAMAIS du premier coup : tu seras moins surpris...

@+

PS1
Tu es sûr de : L'4=L4+11L1-9L2+L3;
11L1 et 9L3 ? Ce n'est pas plutôt 11*L1 et 9*L3 : ce serait bien le 1er langage qui se passerait de *...

Ps2

printf("entrer la valeur de la case numero%d de la ligne de A:\n",i);
scanf("%f",&A[i];}
.............................
L'1=0,L'2=0,L'3=0,L'4=0;
printf("entrer les valeurs de L1 L2 L3 et L4 de la matrice A:\n",L1,L2,L3,L4);

Comprends pas : tu fais 2 fois la même chose ??


Arx Tarpeia Capitoli proxima...

Hors ligne

#17 10-05-2010 16:09:52

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Il me marque des erreurs de syntaxes partout! je vais essayer de lire le lien que tu m'as envoyé. Là je nage complétement dans le nuage!
Pour le calcul, je le refais plusieurs fois, et j'obtiens le même résultat: la dernière de TS c'est : L'4=L4+11L1-9L2+L3 qui donne la dernière matrice TS

Hors ligne

#18 10-05-2010 16:22:56

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

RE,

Après vérification, sauf erreur (j'ai fait vite), tu ne peux pas programmer ça :
L'4=L4+11L1-9L2+L3
mais plutôt :
L'4=L4+11*L1-9*L2+L3
Il m'étonnerait que la multiplication de la variable x par 9 s'écrive 9x et ce quel que soit le langage...
Il y a opérateurs de base +, -, *, / ce n'est pas pour les chiens...
Je n'ai pas dit que ta formule était fausse.
Pour les erreurs de syntaxe :
1. je regarderais déjà du côté des printf et scan
2 Je me demande si c'est bien légal d'écrire : scanf("%f",&A[i]) : je préférerais demander un nombre a (par exemple) puis faire A[i]=a
3. Est sûr des virgules pour séparer plusieurs instructions sur une ligne ? Ce ne serait pas des points-virgules ?

Pourquoi ne veux-tu pas procéder aux tests progressifs suggérés ? Ce serait avilissant ? ;-)

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#19 10-05-2010 16:43:53

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

tu as raison c'est une multiplication (11*L).
3)on peut écrire : int i,j,k; (le point virgule sert à  signifier instruction)

Hors ligne

#20 10-05-2010 19:21:18

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

RE,

Ok ! Ce n'est pas ça que je pensais, mais à
L'1=0,L'2=0,L'3=0,L'4=0;

Je vais commencer par le commencement, c'est plus sage :
http://melem.developpez.com/tutoriels/l … mo#LII-A-1
je poursuivrai avec la suite :
http://melem.developpez.com/tutoriels/l … langage-c/

Alors, ce débogage, tu as avancé ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#21 11-05-2010 08:48:08

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut Yoshi,
Pour n'instant j'ai fait la lecture de la matrice dont voici le code:

#include <stdio.h>
#include <stdlib.h>
#define DIM 4
typedef float ligne[DIM];
typedef ligne matrice[DIM];
typedef float *pointeur;

void lecture(matrice A,int *lig,int *col){
     int l,c;
     float f;
     printf("quel est le nombre de lignes de la matrice?");
     scanf("%d",&lig);
     printf("quel est le nombre de colonnes de la matrice?");
     scanf("%d",&col);
     for(l=0;l<*lig;l++){
                         for(c=0;c<*col;c++){
                                             printf("element[%d,%d]?",l,c);
                                             scanf("%f",&f);
                                             }
                                             A[l][c]=f;
                                             }
                                             getchar();
                                             }                                                                                          }

Hors ligne

#22 11-05-2010 16:10:08

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Re,


As-tu testé ce morceau ?
Ton prog est-il destiné à traiter des matrices autres que (4;4) ?
Si non, tu déclares une matrice (4;4) et après tu demandes quelles sont les dimensions de la matrice...
Là, il me semble qu'il y a quelque chose que je ne m'explique pas : est-ce lié à C ?

Bon, j'ai dl et installé un compilateur C, je vais pouvoir faire des tests...

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#23 11-05-2010 16:16:13

Valentin
Membre
Inscription : 17-02-2010
Messages : 143

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Je l'ai testé et ça ne m'affiche rien!

Hors ligne

#24 11-05-2010 20:13:37

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Salut,

J'ai viré mon compilateur C MgWin, un vrai fatras d'applic : je n'ai pas su quoi en faire...
J'en ai dl un autre Dev c+=.
Qu'est-ce qu'on fait de ce genre de truc ? ça se lance comment ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#25 11-05-2010 20:53:43

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

Re : [C (et PYTHON)] matrice triangulaires supérieures et inférieures!

Re,

Je crois avoir corrigé une erreur :

#include<stdio.h>
float matrice(int A[4][4]){
int i,j;
for(i=0;i<4;i++)
{
    printf("entrer la valeur de la case numero%d de la ligne de A:\n",i);
    scanf("%f",&A[i]);
}
    for(j=0;j<4;j++)
    {
        scanf("%f",&A[j]);} <--- ici parenthèse
return 0;
}

main(){
    float A[4][4];
    float L'1,L'2,L'3,L'4;
    L'1=0,L'2=0,L'3=0,L'4=0;
    printf("entrer les valeurs de L1 L2 L3 et L4 de la matrice A:\n",L1,L2,L3,L4);
    for(i=0;i<4;i++){
        scanf("%f",&L1[i]);
}
    L'1=L1;
    L'2=-L2+2*L1;
    L'3=-0.25*(L1+L3-2*L2);
    L'4=L4+11*L1-9*L2+L3;
    printf("L'1:%f,L'2:%f,L'3:%f,L'4:%f:\n",L'1,L'2,L'3,L'4);
return 0;
}

Mais le compilo Dev C++ me signale encore :
valentin.png

Tu as sûrement plus d'expérience que moi (1 ou 2 h de lecture) : ça doit te parler plus qu'à moi.
Alors ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt neuf plus quatre-vingt un
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums