Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1396 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++]Réduction zone de travail dans une matrice

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++]Réduction zone de travail dans une matrice

n°551880
Aschrack
Vive Pen²
Posté le 27-10-2003 à 20:09:48  profilanswer
 

[débutant inside]
Vala, suppose que j'ai
Fonction, une fonction effectuant certaines opérations sur une matrice carrée V[n][n]
 
une fonction main qui crée une matrice carrée A[j][j]
 
main fait appel à Fonction
 
seulement, on voudrait que Fonction ne travaille pas sur la matrice A
mais sur la matrice B, qui serait la matrice A dont on aurait retiré la première colonne et la dernière ligne (donc on réduit la dimension de 1)
et cela sans passer par une matrice intermédiaire
 
comment faire?
(jsuppose qu'il faut jouer avec des pointeurs mais je ne connais pas assez le liens matrices-pointeurs)
 
Exemple
Fonction est la fonction qui calcule la Trace de la matrice (somme des éléments diagonaux, pour ceux qui l'ont oublié (j'entends déja les airs de nostalgies :D)
 
on voudrait calculer la somme de toutes les diagonales d'une matrice A (diagonale commençant en haut à gauche, et terminant en bas à droite)
donc on se dit, ohoh, on a déja la fonction nous donnant la trace
alors pourquoi ne pas "réduire" la matrice qu'on enverra à la fonction au fur et à mesure dans une chtite boucle for?
Ainsi, en un appel de Fonction (pour la diagonale principale de A), une boucle for (pour les diagonales "supérieures" et parallèle à la diagonale principale) contenant l'appel à Fonction, et une boucle for (pour les diagonales "inférieures" et parallèle à la diagonale principale) contenant l'appel à la Fonction
 
on aura toutes les sommes des diagonales parallèles


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
mood
Publicité
Posté le 27-10-2003 à 20:09:48  profilanswer
 

n°552033
Riot
Buy me a riot
Posté le 27-10-2003 à 22:39:51  profilanswer
 

euh... à partir de l'ex g pu rien compris mais bon...
 
dans ta Fonction, tu fais:
for(int i = 0; i<n; i++)
{
 for(int j = 0; j<n; j++)
 {
  B[i][j] = V[i+1][j+1];
 }
}
 
ps: comme tu es en c++ ,je pense que dans ton cas un valarray aurait été mieux...
 
++

n°552169
Joel F
Real men use unique_ptr
Posté le 28-10-2003 à 09:17:53  profilanswer
 

un Blitz array serait meme de bon [:aloy]

n°552776
Aschrack
Vive Pen²
Posté le 28-10-2003 à 16:44:39  profilanswer
 

Riot a écrit :

euh... à partir de l'ex g pu rien compris mais bon...
 
dans ta Fonction, tu fais:
for(int i = 0; i<n; i++)
{
 for(int j = 0; j<n; j++)
 {
  B[i][j] = V[i+1][j+1];
 }
}
 
 

euh oui mais non
le but est justement de ne pas passer par une matrice intermédiaire
 
donc on a une matrice A
et on veut que la fonction ne travaille que sur une partie de cette matrice en considérant que cette partie est une matrice à part entière
et le tout, sans utiliser de matrice intermédiaire
autrement c trop facile


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
n°552807
Moktar1er
No one replies...
Posté le 28-10-2003 à 17:00:00  profilanswer
 

bah pourquoi tu commences pas tes indices à A[1][1] et tu fais un parcours de 1 à N au lieu de 0 à N ???

n°552886
Aschrack
Vive Pen²
Posté le 28-10-2003 à 18:10:44  profilanswer
 

ben pcq ce que je voudrais c'est par exemple avoir une sous matrice commençant en (si n est la dimension, donc colonnes et lignes de 0 à n-1)
A[0][1]
et finissant en A[n-2][n-1]
et calculer la trace de cette sous matrice
or la fonction trace se décrit simplement en
 
somme de A[i][i]
 
et déja on voit que A[0][1] n'a pas vraiment une tête de A[i][i]


---------------
Je viens d'apprendre que les ventes de voitures ont encore baissé de 7% en France. Y'en a marre de ces pirates qui téléchargent les voitures sur internet ! (antp était prems et est admin) - "Le travail est l'opium du peuple et je ne veux pas mourir dr
n°553141
Dag elg
Posté le 29-10-2003 à 01:28:59  profilanswer
 

Si tu pars de l'indice i0,j0 et tu t'arretes a n,m
trace=A[i0][j0];
while((i0++ <= n) && (j0++ <= m)) trace+=A[i0][j0];
ca irait?


Message édité par Dag elg le 29-10-2003 à 01:38:29
n°564750
Riot
Buy me a riot
Posté le 12-11-2003 à 10:28:10  profilanswer
 

erf! g vu ça hier dans mon bouquin...
il faut utiliser un gslice pour récuperer ta sous matrice.
 
++


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++]Réduction zone de travail dans une matrice

 

Sujets relatifs
[Python] Imprimer une liste dans une zone texte...Méthode de travail ?
[TI 89] Comment rajouter une ligne a une matrice ...somme dune ligne dune matrice
[VBA - Access] - Comment remplir en VBA une zone de liste ?Ecriture zone mémoire dans un fichier donne n'importe quoi (resolu)
Reduction d'images numeriquesRemplir une zone de liste avec 2 plages nommées ???
[Travail de Style] Planning en PHP et MysqlPb de comparaison Object / Int d'une matrice d'Objects
Plus de sujets relatifs à : [C++]Réduction zone de travail dans une matrice


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR