begin process at 2012 05 28 13:55:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

besion d' aide


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

besion d' aide

mercredi 28 mars 2007 à 15:27:40 | besion d' aide

ccfacile

j'ai  fais un programme sur devc++ pour resoudre l'equation matricielle : A*X=B ,  je vois pas ou est elle euruer ?

est ce que vous pouvez aidez SVP,

voila le programme

/* ========================================================================== */
/*                Gauss pivot pariel et total                                                            */
/* ========================================================================== */
#include<iostream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include<windows.h>

int i,j,k;
int n;
float a[19][19],b[19];
char valider;

// fonction de remplissage
void remplissage(void)
{
// entrer le système
printf("\n\n * Nombre d'equation-inconues : \n\n N= ");scanf("%d",&n); 
printf("\n * La matrice A:\n\n");
for (i=0;i<n;i++)
{printf(" Equation %d : ",i+1);for (j=0;j<n;j++) scanf("%f",&a[i][j]);}
printf("\n * Le vecteur B:\n\n");
for(i=0;i<n;i++)
{printf(" Equation %d : ",i+1);scanf("%f",&b[i]);}
}

// fonction d'affichage matrice

void affichage_mat(float a[19][19],int n)
{
for (i=0;i<n;i++)
{
printf(" [");
for (j=0;j<n;j++)
{
printf("  %.4f  ",a[i][j]);
}
printf("]\n");
}
}

// fonction d'affichage système

void affichage(float a[19][19],float b[19],int n)
{
for (i=0;i<n;i++)
{
printf(" [");
for (j=0;j<n;j++)
{
printf("  %.4f  ",a[i][j]);
}
printf("] [  %.4f  ]",b[i]);
printf("\n");
}
}


// -------------------------------------------------------------
//              Résolution Par Gauss pivot pariel
// -------------------------------------------------------------

/*
void gauss_pivot_partiel(float a[19][19],float b[19],int n)
{
float x[19],p,eps=1e-6,ref,pivot;int ligne;    
for(k=0;k<n-1;k++)
{
// max pour le pivot partiel               
ref=0;
for(i=k;i<n;i++) if(fabs(a[i][k])>ref) {ref=fabs(a[i][k]);ligne=i;}

// pivotations
for(j=k;j<n;j++)
{pivot=a[k][j]; a[k][j]=a[ligne][j] ;a[ligne][j]=pivot; }

pivot=b[k]; b[k]=b[ligne]; b[ligne]=pivot;

for(i=k+1;i<n;i++)
{
p=a[i][k]/a[k][k];
for (j=k;j<n;j++)
{
a[i][j]=a[i][j]-p*a[k][j];
if (fabs(a[i][j])<eps)
a[i][j]=0;
}
b[i]=b[i]-p*b[k];
if(fabs(b[i])<eps)
b[i]=0;
}
}
float s=0;
for(i=n-1;i>=0;i--)
{  
for(j=i+1;j<n;j++)s=s+a[i][j]*x[j];                   
x[i]=(b[i]-s)/a[i][i];
s=0;
}
printf("\n-------- Gauss avec pivot partiel --------\n");
printf("\n * La triangularisation avec les pivotations partielles :\n\n");
affichage(a,b,n);
printf("\n * La resolution donne :\n\n");
for (i=0;i<n;i++)    
printf(" X_%d =  %f  ;\n",i+1,x[i]);
printf("\n");
}

*/

// -------------------------------------------------------------
//              Résolution Par Gauss pivot total
// -------------------------------------------------------------

void gauss_pivot_total(float a[19][19],float b[19],int n)
{
float x[19],p,eps=1e-6,ref,pivot;
int ligne,colonne,pivot_sol[19],sol;

// vecteur de pivotation des solutions
for(i=0;i<n;i++) pivot_sol[i]=i;
for(k=0;k<n-1;k++)
{

// max pour le pivot total               

ref=0;
for(i=k;i<n;i++)
for (j=k;j<n;j++)
if((a[i][j])>ref) {ref=(a[i][j]);ligne=i;colonne=j;}

// pivotations
for(j=k;j<n;j++)
{pivot=a[k][j]; a[k][j]=a[ligne][j] ;a[ligne][j]=pivot;}

pivot=b[k]; b[k]=b[ligne]; b[ligne]=pivot;

for(i=0;i<n;i++)
{pivot=a[i][k]; a[i][k]=a[i][colonne] ;a[i][colonne]=pivot;}

// remplissage du vecteur accordé aux pivotations

//algo forme triangulaire d'un systeme lecointe

{
sol=pivot_sol[k];
pivot_sol[k]=pivot_sol[colonne];
pivot_sol[colonne]=sol;
}

for(i=k+1;i<n;i++)
{
p=a[i][k]/a[k][k];
for (j=k;j<n;j++)
{
a[i][j]=a[i][j]-p*a[k][j];
if (fabs(a[i][j])<eps)
a[i][j]=0;
}
b[i]=b[i]-p*b[k];
if(fabs(b[i])<eps)
b[i]=0;
}
}
float s=0;
for(i=n-1;i>=0;i--)
{  
for(j=i+1;j<n;j++)
s=s+a[i][j]*b[j];                   
b[i]=(b[i]-s)/a[i][i];
//s=0; ????
}
// pivotation des solutions
for(i=0;i<n;i++)
{
x[pivot_sol[i]]=b[i];
}

printf("\n--------- Gauss avec pivot total ---------\n");
printf("\n * La triangularisation avec les pivotations totales :\n\n");
affichage(a,b,n);
printf("\n * La resolution donne :\n\n");
for (i=0;i<n;i++)    
printf(" X_%d =  %f  ;\n",i+1,x[i]);
printf("\n");
}

/*void choix_de_la_methode()
{
printf("\n-----------------------------------------------\n");                 
printf("\n * Resolution de A x = B :\n");   
printf("\n * Choix de la methode:\n");

printf("     1 => Gauss pivot partiel     \n");
printf("     2 => Gauss pivot total       \n");
printf("\n-- 3 => Quitter ------------------\n");

reprendre_choix:
printf("\n------ => donner votre choix ------ : ");
scanf("%s",&valider);
switch(valider)
{
           
case '1' : remplissage();printf("\n\n* Le systeme est :\n\n");
             affichage(a,b,n);gauss_pivot_partiel(a,b,n);break;
            
case '2' : remplissage();printf("\n\n* Le systeme est :\n\n");
             affichage(a,b,n);gauss_pivot_total(a,b,n);break;
            
     
default : goto reprendre_choix;

}
}

*/

 

 

int main()

{
void remplissage(void);
void affichage_mat(float a[19][19],int n);
void affichage(float a[19][19],float b[19],int n);
void gauss_pivot_total(float a[19][19],float b[19],int n);
system("PAUSE");

}


mercredi 28 mars 2007 à 22:45:55 | Re : besion d' aide

yann_lo_san

Dans ta fonction main, tu appelles tes fonctions en mettant les types des params !
exemple :
void affichage_mat(float a[19][19],int n);

Rouge = erreur !

Je n'ai pas regardé le reste.

jeudi 29 mars 2007 à 01:50:53 | Re : besion d' aide

Ombitious_Developper

Salut Yann:

Si je ne me trompe pas, il s'agit des prototypes des fonctions et je pense qu'il possible de les mettre au début du main.

________________________________________________________________________________
A.B. :  "Dieu nous donne des mains, mais il ne bâtit pas les ponts

jeudi 29 mars 2007 à 10:16:46 | Re : besion d' aide

turnerom

Le main c'est un gag ?
jeudi 29 mars 2007 à 17:05:59 | Re : besion d' aide

yann_lo_san

>> Ombitious_Developper : Es-tu sur que ce sont des prototypes ?????????

jeudi 29 mars 2007 à 19:02:25 | Re : besion d' aide

Ombitious_Developper

Salut:

Se sont des prototypes belle et bien. Ce que veux dire que le "main" est vide.
C'est vrai que je n'ai pas employé les bonne termes ("je crois", "je pense", ...)

________________________________________________________________________________
A.B. :  "Dieu nous donne des mains, mais il ne bâtit pas les ponts

vendredi 30 mars 2007 à 16:28:43 | Re : besion d' aide

yann_lo_san

Quant on place le main à la fin du module, c'est bien pour éviter de déclarer les prototypes...
Je pense que le problème ici vient du fait d'un copié/collé de code sans vraiment comprendre ce qu'il fait.


Cette discussion est classée dans : printf, for, float, pivot, gauss


Répondre à ce message

Sujets en rapport avec ce message

ou est l'erreur : boucles imbriquées [ par pausecpp ] le compilateur ne mentionne aucune "error" ni "warning" pourtant j'ai fait le programme pour que le valeur de S[N][M] changent!!!voici le code ( merci algorithme de greedy [ par starbluesky ] <link rel="Fi aidez-moi s'il vous plait !!!!!!!! [ par starbluesky ] Salut a tous! aidez-moi s'il vous plait  !! Je suis un étudiant en mastè rectification dune code C et/ou aide sur l'algorithme [ par negets ] bonjour, besoin d'aide; j'aimerai dégager l'algorithme de ce code afin de le programmer sous matlab je connais plus rien en C et C++(je commence à lir Probleme : Sudoku en C [ par seth59222 ] Bonsoir, voila je suis actuellement en première année d'info, donc assez novice et je viens de créer ce petit bout de programme en C qui consiste a ré Besoin d'aide-Interface Graphique [ par nissan1 ] Bonjour, s'il vous plait je suis debutant en programmation et j'ai fait un programme en C sous l'IDE codeblocks, qui utilise les elements d'une matri appel de fonction [ par ibnjabal ] Bonjour j'essaie de faire une fonction qui calcule la somme de deux matrice et ça fonctionne bien mais seulement c'est quand j'essaie de le faire dans aide pour pb de Programmation de la méthode gram_schmidt [ par hac1002008 ] salut a tous , je debut avec c++ builder , je vous fait voir ma pocedure qui calcule la methode gram_schmidt mais elle a ne donne pas le resultat exac Table Ascii [ par Oxie666 ] Hello, je suis tout nouveau ici (et forcement méga débutant) et j'ai une question :J'ai écrit un petit programme afin d'avoir sous la main une table a [c] bug dans un code [ par novocain3 ] bonjour, Newbi en programmation, je me suis lancé dans la creation d'un code en [c] qui doit inscrir les valeur d'un tableau à 2 dimensions dans un ta


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 3,947 sec (3)

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