Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : matrice a 2 dimensions de grande taille [ Algorithme / Maths ] (onedream)

lundi 10 novembre 2008 à 23:15:46 | matrice a 2 dimensions de grande taille

onedream

salut;
je viens de faire un programme mais sa marche pas bien .l énoncé d éxercice est :

le probleme en général c de saisir un nombre n <5 et saisir un nombre que je vais l appeler : dim
ensuite remplir une matrice qui sera de cette forme A[dim][n^dim]
n^dim=n puissance dim
et cette matrice sera rempli par les chifrres: 0,1,2,..,n
cad si n=4 et dim =18 la matrice sera de la taille A[18][4^18]
ensuite saisir un vecteur par example B[de 1 jusqu à dim][1] en suite saisir le nbre minimal de différence(diff) entre les colonnes et le vecteur saisi
et en résultat : afficher un tableau résultant qui regroupe des colonnes qui ont un nombre de différence supérieur ou égale au nombre saisi(diff)
et voila mon programme mais comme je vous ai dit il y a certain beug comme la taille qui n est pas acceptée car pour un dim= 18 pour une base ternaire n=3 ou quaternaire n=4 sa se bloque
et encore pour la différence je vois qu il y a en résultat certaine colonne qui se répétent ou que la différence est inférieure a la différence demandée

#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
int main()
{  
    int dim,dim2,diff,m,d,di,i;
    int i2,i3,n,e,col,jm,j;
    int A[10][50000000];
 int x,w,k;
    cout <<"donner la puissance de la matrice :";
    cin >>n;
    cout <<"donner la dimension (puissance) de la matrice :";
    cin >> dim;

    e=3^dim;
    cout <<"\n 3 puissance "<<dim<<"est "<< e<<"\n";
   

// remplissage de la matrice par des 1,2,3...
// de telle sorte que chaque ligne soit differente de l autre

    for(m=1;m<dim+1;m++)
      { x=3^(m-1);
     w=3^(dim-m);
     k=3^(dim-m+1);
     for(i=0;i<x;i++)
       for(j=1;j<w+1;j++)
       for(i3=1;i3<n;i3++)
    {  
     col=j+i*k+(i3-1)*w;
     A[m][col]=i3;
      
       }
      }

//saisir le vecteur qu on veux comparer
cout<<"\n Entrer le vecteur qu on veux comparer:\n");
for(m=1;m<dim+1;m++)
{ cout<< "A["<<m<<"][0]="; cin>>A[m][0];
}

//saisir le nombre de difference entre les lignes

do { cout <<"\nEntrer le nombre de difference entre les lignes :";
  cin >>di;
      }
while (di>=dim);
// traitement sur les difference entre les lignes
// je ne retiens que les lignes qui ont une difference >= di


for(i2=1;i2<10;i2++)
{ for(i=0;i<e+1;i++)
   {diff=0;jm=i;
     for(j=i+1;j<e+1;j++)
      { diff=0;
     for(m=1;(m<dim+1)&&(diff<di);m++)
  // une fois la difference >= di je sors de la boucle m
  { if(A[m][i]!=A[m][j])
       {  diff=diff+1;
   if (diff>=di)
        { jm=jm+1;dim2=jm;
   for(d=1;d<dim+1;d++)
   { A[d][jm]=A[d][j];
   }
        }


       }
 }
      }e=jm;dim2=jm;
    }
}
cout <<"\n le nombre de lignes resultantes est :"<<dim2;
for(k=1;k<dim2+1;k++)
{cout <<"\n";  // pour voir les resultats
if(k%40==0){ cout<<"\n appuyer sur touche....!\n";
cinb;}
for(m=1;m<dim+1;m++)
  { cout <<A[m][k];}
  }

   return 0;

}

fin du programme...

s il y ades erreurs c que j ai traduit le programme de c a visual c++


mardi 11 novembre 2008 à 07:08:20 | Re : matrice a 2 dimensions de grande taille

Lucky92

En C/C++, l'opérateur ^ est l'opérateur "ou exclusif bit à bit".


mardi 11 novembre 2008 à 09:41:54 | Re : matrice a 2 dimensions de grande taille

onedream

merci pour la remarque j ai pensé que c est une puissance
pow(3,2)=3^2=9
mais il n accepte pas la fonction pow
ce programme je l ai fais en c mais en déclarant une matrice de grande taille A[20][5 000 000] sa passe pas il me donne erreur de size array so long
j ai pensé le faire en visual c++ car cette déclaration pass en v c++ et j aimerais bien le traduire en ce language.
en visual c++ je ss trés trés debutant.
le remplissage de la matrice consisite que chaque ligne soit différente de l autre en suite saisir un vecteur et en résultat ne retenir que les lignes qui ont une différence >= di
merci de votre aide.

mardi 11 novembre 2008 à 16:28:15 | Re : matrice a 2 dimensions de grande taille

Lucky92

Tu n'y arriveras pas, et à cette échelle, ça ne dépend pas du langage. Ton tableau A[20][5 000 000] occupe déjà 400 Mo de mémoire juste avec une dimension de 5 000 000, alors imagine avec une dimension de 4^18 !!!

Et même si tu réussissais à réaliser une telle matrice, tu ne pourras faire aucun calcul avec un PC.

Tu devrais coller dans ce post l'énoncé exact du problème, car il y a forcément quelque chose qui t'a échappé. La plupart du temps, les matrices géantes sont des matrices parsées, c'est-à-dire, dont tous les coefficients sont nuls sauf quelques-uns, et leur gestion ne se fait pas dans des tableaux classiques.

PS : pour utiliser pow, il faut ajouter en c++ la directive #include <cmath>








mardi 11 novembre 2008 à 18:27:31 | Re : matrice a 2 dimensions de grande taille

onedream

merci pour l explication
mon pc portable a 2go de ram en + si je fais exécuter le programme en déclarant un autre e2 par example, et je la remplace avec dim2 :
long int e2
cout <<"\n le nombre de lignes resultantes est :"<<e2;
for(k=1;k<e2+1;k++)
{cout <<"\n";  // pour voir les resultats
if(k%40==0){ cout<<"\n appuyer sur touche....!\n";
cinb;}
for(m=1;m<dim+1;m++)
  { cout <<A[m][k];}
  }

et puisque e2 est de type long elle va prendre une drande valeur 116 235 116(il a pris une valeur équivalent a sa) le programme tourne et il me donne la matrice en la remplissant par des valeurs aléatoires.cad sa peut fonctionner je crois.
et si on se limite a 4^9 et 3^13 est ce qu il y a une solution? et merci d avance.



Cette discussion est classé dans : for, cout, matrice, diff, jm


Répondre à ce message

Sujets en rapport avec ce message

Affichage ss Visual C++ avec MFC [ par pipic ] G un souci:G réalise une appli win 32 qui me sortait le resultat a partir du code suivant : for (i=0;i for (i=0; i Besoin d'aide en C - Fonction [ par bugs2600 ] Voici mon programme quelqu'un pourrait-il m'aider je dois faire une fonction et je ne vois pas comment la faire le non de ma fonction doit etre PRODMA c++ algo [ par altay ] L'analyste programmeur a 3 dimensionest ce que quelqu'un pourrait me faire l'algo de ce code merci d'avance :#pragma hdrstop#include #include algo C++ [ par altay ] L'analyste programmeur a 3 dimensionest ce que quelqu'un pourrait me faire l'algo de ce code merci d'avance :#pragma hdrstop#include #include tableaux dans prototype erreur [ par darmoor ] Bonjour tout le monde! bon, j'ai un petit probleme de compilation au niveau d'un tableau 2D dans un prototype. J'ai demandé à quelqu'un qui s'y conna compilation mai erreur a l execution [ par touny23 ] bon j ai fai une amélioration de mon programme . je galere un peu avec le C mai bon  c est un projet , soit disan la base de la methode num.(je croi q URGENT!!!!! SVP moindres carrés [ par CeNedra83 ] salut, je suis en stage et je code en C++. j'ai trouvé ce code qui fait exactement la fonction que je veux, je l'ai donc transformé en C++. Sub Moin Aide sur la construction d'une fonction [ par iamor ] Bonsoir, je souhaite améliorer un programme que j'ai codé pour qu'il soit plus clean, mais pour se faire j'aurai besoin d'avoir une petite aide sur la probleme dans l'algorithme de jacobi [ par mino1001 ] voila mon programme ,et je ne c pas pourquoi il ne calcule pas les solutions du systeme Ax=b telles que:        5   -1 -1 -1                  -4       probleme avec un tableau a 3 dimensions [ par tomalille ] bonjour, j'utilise un tableau a 3 dimensions dans un procedure. Je ne comprend pas du tout les resultats de l'algo que j'ai implemente. Je modifie les


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.