Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Programmation » Algorithmes » 06-05-2012 14:45:41
#3 Re : Programmation » c++ pour ceux qui veulent! » 06-05-2012 13:52:29
Si on en parle via le Framework C++ Qt 4.x clique ici et regarde mon commentaire (ngatilio)
#4 Re : Programmation » Corrélation par SAD( somme des différences absolues) » 05-05-2012 18:13:47
+--------------------------------------------------+
+ Essaie avec Qt 4.x +
+--------------------------------------------------+
// --> supposons que ton image est codée sur 32 bits
#include <QtGui>
#include <SAD.h>
#include <math.h>
#include <iostream>
//taille maxi des images
int x =0x190 ,y =0x258;
QPoint taille_image(x,y);
// l'image est mis sous un format de 32 bits a la taille taille_image
QImage pixmap1(taille_image,QImage::Format_RGB32);
QImage pixmap2(taille_image,QImage::Format_RGB32);
// création du constructeur SAD qui prend en entrée la taille de la région sur les images ou l'on veut calculer le SAD et les deux images
qreal SAD::SAD (int m_value, int n_value, QImage *im1, *im2)
{
im1 = pixmap1;
im2 = pixmap2;
if(m_value >= x || n_value >=y) // la position des pixels ne doit pas dépasser x et y(taille de l'image)
{
QMessageBox::Erreur1(this, tr("Error Size"), tr("La position entrée est supérieure a la taille de l'image"));
}
for(int index1 = 0; index1 <m_value;index1++)
{
for(int index2 = 0; index2 <n_value;index2++)
{
Qrgb pix1 = im1->pixel(index1,index2);
Qrgb pix2 = im2->pixel(index1,index2);
QColor convert1 = fromRgb (pix1);
QColor convert2 = fromRgb (pix2);
int intens1 =0,intens2 =0;
bool testcolor1 =(convert1 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
bool testcolor2 =(convert2 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
if(testcolor1 == 1)
{
intens1++; // intensite du gris a la position (index1,index2) de l'image 1
int I1[index1,index2] = intens1;
}
else if ( testcolor2 == 1)
{
intens2++; // intensite du gris a la position (index1,index2) de l'image 2
int I2[index1,index2] = intens2;
}
else index1++;index2++; // on passe au pixel suivant lorsqu'on ne trouve pas le gris
}
}
// calcul du SAD
qreal som = 0;
for(int index1 = 0; index1 <m_value;index1++)
{
for(int index2 = 0; index2 <n_value;index2++)
{
som = som +(1/(m_value+n_value))*fabs(I1(index1,index2) - I2(index1,index2));
// on somme de maniere iterative ecart moyen
}
}
return som;
}
SAD::~SAD()
{
}
//-----------------------------------------------------------------------------------------------------------------
// --> ou que tu charge une image a travers ton bureau
// utiliser la classe QPixmap
+--------------------------------------------------+
+ Essaie avec Qt 4.x +
+--------------------------------------------------+
// --> supposons que ton image est codée sur 32 bits
#include <QPixmap>
#include <QtGui>
#include <SAD.h>
#include <math.h>
#include <iostream>
//taille maxi des images
int x =0x190 ,y =0x258;
QPoint taille_image(x,y);
// definition des chemins des images
Qstring dir1 ="C:\Administrateur\image1.png";
Qstring dir2 = "D:\Administrateur\image2.png";
QPixmap pixmap1(dir1);
QPixmap pixmap2(dir2);
// l'image est un pixmap a la taille taille_image
pixmap1.resize(taille_image);
pixmap2.resize(taille_image);
// création du constructeur SAD qui prend en entrée la taille de la région sur les images ou l'on veut calculer le SAD et les deux images
qreal SAD::SAD (int m_value, int n_value, QPixmap *im1, *im2)
{
im1 = pixmap1;
im2 = pixmap2;
if(m_value >= x || n_value >=y) // la position des pixels ne doit pas dépasser x et y(taille de l'image)
{
QMessageBox::Erreur1(this, tr("Error Size"), tr("La position entrée est supérieure a la taille de l'image"));
}
for(int index1 = 0; index1 <m_value;index1++)
{
for(int index2 = 0; index2 <n_value;index2++)
{
Qrgb pix1 = im1->pixel(index1,index2);
Qrgb pix2 = im2->pixel(index1,index2);
QColor convert1 = fromRgb (pix1);
QColor convert2 = fromRgb (pix2);
int intens1 =0,intens2 =0;
bool testcolor1 =(convert1 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
bool testcolor2 =(convert2 == (QColor(Qt::Gray)||QColor(Qt::darkGray)||QColor(Qt::lightGray)));
if(testcolor1 == 1)
{
intens1++; // intensite du gris a la position (index1,index2) de l'image 1
int I1[index1,index2] = intens1;
}
else if ( testcolor2 == 1)
{
intens2++; // intensite du gris a la position (index1,index2) de l'image 2
int I2[index1,index2] = intens2;
}
else index1++;index2++; // on passe au pixel suivant lorsqu'on ne trouve pas le gris
}
}
// calcul du SAD
qreal som = 0;
for(int index1 = 0; index1 <m_value;index1++)
{
for(int index2 = 0; index2 <n_value;index2++)
{
som = som +(1/(m_value+n_value))*fabs(I1(index1,index2) - I2(index1,index2));
// on somme de maniere iterative ecart moyen
}
}
return som;
}
SAD::~SAD()
{
return 0;
}
// il est à noter que :
--> le choix de l'un de ces codes sources dependent de l'espace memoire en terme d'espace et graphique
soit 32 bits ou 64 bits
#5 Re : Programmation » [C++] Multiplication de deux matrices » 05-05-2012 14:45:13
C'est bien beau les codes mais faut gérer:
--> la saisie (vous pouvez utiliser les MoveTo (j+x.pos(),i+y.pos()));
--> gérer les erreurs . vous pouvez créer un classe ErreurMatrice
//ou le constructeur sera :
ErreurMatrice::ErreurMatrice(Int i)
{
Switch(i)
{
Case 0 : const char* message0 ="Ecrire le message d'erreur ici ";
printf("%s",message);
Break;
Case 1: instructions 2;
Break;
etc...
}
Int main()
{
if( booleen)
{intructions;}
Else Throw ErreurMatrice(0);
etc...
}
//pour gerer les erreurs( de taille , de mauvaise saisie , d'un caractere non reconnu etc...)
juste pour ameliorer vos codes
@++
#6 Re : Programmation » programmation » 05-05-2012 14:14:14
je connais une demo de source qui pourra beaucoup t'aider tu cherchera <<Evaluation Expression Mathematique>> cliquez-ici
#7 Programmation » creation d' unité ( pascal ou delphi) » 11-07-2011 11:09:26
- ngatilio
- Réponses : 0
-une unité c'est comme une personne qui a une tête , un tronc et les quatre membres.
-créer une unité c'est un programme à part entière qui nécessite des connaissances sur :
les déclarations,
const max=10;
type NUM_CODE=record
NOM : array['a'..'z'] of string[26];
NUM : array[1..max] of integer;
end;
DATE_CODE=record
JJ : 1..31;
MM:1..12;
AA:1800..2011;
end;
var
CODE: NUM_CODE;
DATE:DATE_CODE;
les fonctions et procédures ,
procedure attribute ( var x,y : integer; value:boolean);
begin
instructions;
end;
function RRotate ( x_top:longint;x_bottom:longint):longint;
begin
instructions;
end;
des manipulations des directives,
mot reservé ASSIGN ,IORESULT
{I+}
instructions;
{I-}
ou encore {T+} ,...
des connaissances en language assembleur,
procedure safe ; external
asm
;bienvenue sur l'assembleur
instructions
;bye bye
end
et la mani du code ASCII
var regs:registers;
begin
with regs do
begin
instructions;
end;
end;
revenons à la bête :
schema d'une unité:
UNIT name_unit;
INTERFACE
uses graph, strings,dos,crt...
var
value: longint; etc...
declarations de certaines fonctions et procedures
IMPLEMENTATION
declarations des fonctions et procedures {dire ce que l'unité doit faire}
instructions;
BEGIN{initialisation des variables}
instructions;
END.
#8 Programmation » Tri dichotomique(en pascal ou delphi) » 11-07-2011 10:29:09
- ngatilio
- Réponses : 1
je propose un algorithme de tri dichotomique en pascal 7.0
program tri_dichotomique;
const max=100;
uses crt;
type vector : array [1..max] of integer;
var
Tab , mot : vector;
i , j : integer;
inf , sup , position,Temp : longint;
procedure lire;
begin
for i:=1 to max do
begin
write ('Entrer un mot dans la liste');
read (Tab[i]);
end;
end;
procedure Tri ;
begin
For i:=1 to max-1 do
begin
For j:=i+1 to max do
begin
while Tab[i] > Tab[j] do
begin
Tab[i]:= Temp;
Tab[j]:=Tab[i];
Temp:=Tab[j];
end;
end;
end;
end;
procedure position ;
begin
write ('Entrer le mot a chercher :');
read (mot [i]);
inf:=1; sup:=max;
position:=(inf+sup+1) div 2 ;
repeat
while mot [i] <>Tab [position] and sup <>inf do
begin
if inf := sup-1 then inf := sup;
if inf = sup then exit ;
while mot [i] <Tab [position] do
begin
if inf < position do sup:= position
else inf := position;
position:=(inf+sup+1) div 2 ;
end;
if sup<>inf then position:=(inf+sup+1) div 2 write ('Le mot est a la position',position)
else write ('Le mot n'existe pas dans la liste');
end;
false;
readln;
end;
{programme principal}
begin
clrscr;
Textbackground (2);
gotoxy(40,20);
lire;
clrscr;
Tri;
clrscr;
Textbackground (5);
gotoxy(40,20);
position;
read();
end.
#9 Re : Programmation » [Python] expo modulaire » 27-06-2011 20:18:52
On peut faire l'exponentiation modulaire avec le pascal 7.0
program exp_modu (input , output);
uses crt;
var
emod , a , b , c : longint;
function exmod ( x , y , z : longint):longint ;
var p , q ,i: longint;
begin
p:= x mod y ;
for i:=1 to p do
begin
q : = z * p ;
end;
exmod := q ;
end;
{appel de l'exponentiation modulaire}
begin
clrscr;
gotoxy(50,20);
Textbackground (5);
write ('on suppose qu'on fait a^(b mod c). Entrer les valeurs de a , b et c :' );
read (a , b , c);
emod : = exmod (b , c , a);
gotoxy(50,20);
write('l''exponentielle modulaire est de :', emod);
read();
end.
#10 Re : Programmation » python, fonction produit » 27-06-2011 19:54:09
Je vais faire un exemple en pacal 7.0 ou Delphi
function product ( var x,y:real ):real ;
var p:real;
begin
p:= x*y;
product:= p;
end;
{appel produit}
begin
write('entrer deux reels');
read(a,b);
s:=product (a,b);
write('le produit est',s);
readln();
end.
#11 Re : Programmation » C++ » 29-04-2011 21:43:54
Malheureusement j ne connais pas bien le C , on va le faire en pascal
Program matrix ;
Label 1 ;
Type tab: array [1..Max,1..Max] of integer ;
keypressed : array ['A'..'Z'] of word ;
uses crt , Graph ;
var Gm , Gd , i , j , k,val : integer ;
C , D , E : tab ;
Quit : keypressed ;
procedure create_Interface ;
begin
clrscr;
Gd := detect ;
InitGraph (Gm,Gd,'C:\tp\bgi ');
if GraphResult <> grOk then
begin
writeln ('erreur de l''initialisation en mode graphique');
halt (1);
end;
SetFillStyle (1,red);
Bar3D (20,30,100,40,20,false);
Bar3D(30,50,40,70,10,true);
readln;
CloseGraph;
end;
Procedure Display_Menu;
begin
clrscr;
writeln ('choisir l''une des operations suivantes');
writeln ('1. produit de matrices');
writeln ('2. calcul du Determinant');
writeln ('3.Inverse');
readln (val);
readln;
end;
Procedure Submit_Menu;
function prod_scalaire (A , B : tab ): tab ;
begin
prod_scalaire:= 0;
for i:=1 to Max do
for j:=1 to Max do
for k:=1 to Max do
prod_scalaire:= A[i,k]*B[k,j] ;
end;
if (val=1) then
begin
writeln ('entrer deux matrices');
readln (C[i,j] , D[i,j]);
E[i,j]:= prod_scalaire (C[i,j] , D[i,j]);
writeln ('la matrice cherche est', E[i,j]);
readln;
<b>end</b>;
{pour calculer C^k utiliser la boucle repeat ----until }
{pour les determinants , l''inverse utiliser la boucle for}
procedure exit ;
begin
if Quit then
begin
clrscr;
exit;
readln;
end
else goto 1 ;
readln;
end.
#12 Re : Entraide (supérieur) » complexes » 18-09-2010 21:10:30
meme principe pour module de z' =2 lis bien la precedente correction.
#13 Re : Entraide (supérieur) » complexes » 18-09-2010 21:06:17
pour donc continuer la resolution a ton pb retient ces quelques principes:
-si z=-i alors arg<(z)=3pi/2 modulo2pi
ainsi tu as facilement arg(z')=3pi/2 modulo2pi=arg(z) et donc:
on en deduit que: arg(z')=arg(z) implique cos(z)=0=cos(z') et sin(z)=-1=sin(z') (1)
siv tu as cela la suite est tres facile; bon continuons:
on pose z=x+iy ainsi, z'=(x-3+i(y+1))/(-x+i(2-y)) par conjugaison par:
-x-i(2-y) qui n'est autre que le conjugue du denominateur ,l'on a:
z'=[-x(x-3)+(y+1)(2-y)]/[x²+(2-y)²] +i[-(2-y)(x-3)-x(y+1)]/[x²+(2-y)²] (2)
ona d'apres (1) cos(z')=0 et on sait que: z'=cos(z')+isin(z')
ainsi en reunissant (2)et(1) on en deduit que:
-x(x-3)+(y+1)(2-y)=0 avec x²+(2-y)²#0
ainsi par simple developpement on obtient:
-x²-y²+3x+y+2=0 en simplifiant par (-1) l'on a:
x²+y²-3x-y-2=0 qui est bien l'equation d'un cercle
deja l'ensemble des pts M est 1 cercle maintenant caracterisons ce cercle:
par canonisation de l'equation l'on a:
c'est le cercle de centre u(3/2,1/2) et de rayon 3/racine carre de2.
Pages : 1