begin process at 2012 02 13 05:38:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

matrice a 2 dimensions de grande taille


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

matrice a 2 dimensions de grande taille

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ée 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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales