Page 1 of 1

c++ ? O_o

Unread postPosted: 30 Oct 2013, 16:31
by nikitouzz
bonjour a vous j'ai ce code :

Code: Select all
#include <iostream>
#include <math.h>
using namespace std;

void dessine(int nb,int rmin,int rmax)
{
int i,j,s;
float L,t,pi,angler,x,y;
bool finRadius;
pi = 4.0*atan(1.0);
angler = 2.0*pi/(int)nb;
for(i=0;i<=rmax*2;i++)
{
for(j=0;j<=rmax*2;j++)
{
x = (float)j-(float)rmax;
y = (float)i-(float)rmax;
L = sqrt(x*x+y*y);
t = acos(x/L);
if (y<0) {t=2.0*pi-t;}
s = 0;
finRadius = false;
while ((s<nb+1) and (finRadius=false))
{
if ((rmin<=L) and (L<=rmax) and ((fabs(t-(float)s*angler)<angler/L) or (fabs(rmin-L)<1)))
{
cout << "00";
finRadius = true;
}
else
{s = s+1;}
}
if (s == nb+1) {cout << "..";}
}
cout << endl;
}

}

int main(void)
{
int nb,rmin,rmax;
nb = 10;
rmin = 5;
rmax = 14;
dessine(nb,rmin,rmax);
return 0;

}


que j'ai deduis du pdf en attachement a traduire.... ou est mon erreur ?

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 16:45
by Extra44
salut

vérifie tes tests (je crois) dans les conditions (tester une égalité c'est '==' )

Extra44

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 16:53
by Bisam
Voici le code corrigé et indenté :
Code: Select all
#include <iostream>
#include <math.h>
using namespace std;

void dessine(int nb,int rmin,int rmax)
{
  int i,j,s;
  float L,t,pi,angler,x,y;
  bool finRadius;
  pi = 4.0*atan(1.0);
  angler = 2.0*pi/(int)nb;
  for(i=0;i<=rmax*2;i++)
  {
    for(j=0;j<=rmax*2;j++)
    {
      x = (float)j-(float)rmax;
      y = (float)i-(float)rmax;
      L = sqrt(x*x+y*y);
      t = acos(x/L);
      if (y<0) {t=2.0*pi-t;}
      s = 0;
      finRadius = false;
      while ((s<nb+1) and (finRadius==false))
      {
        if ((rmin<=L) and (L<=rmax) and ((fabs(t-(float)s*angler)<angler/L) or (fabs(rmin-L)<1)))
        {
          cout << "00";
          finRadius = true;
        }
        else
        {
          s++;
        }
      }
      if (s == nb+1) {cout << "..";}
    }
    cout << endl;
  }
}

int main(void)
{
  int nb,rmin,rmax;
  nb = 10;
  rmin = 5;
  rmax = 14;
  dessine(nb,rmin,rmax);
  return 0;
}

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 16:54
by nikitouzz
Oui merci je suis un idiot j'y ai pensé en plus ^^

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 16:59
by Adriweb
Avec
Code: Select all
#define and &&
#define or ||

alors ?

Mais sinon oui, nikitouzz, indente ton code ... ಠ_ಠ

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 17:01
by Bisam
J'avais vu aussi le problème des "and" et "or", mais je n'étais pas sûr, me disant qu'en C++, c'était peut-être différent du C...

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 17:01
by nikitouzz
adriweb on a corriger le code ^^ mais c'est du c++ pas du c

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 17:03
by Adriweb
C'est pareil là.



(Edit : oui bon, il parait que depuis un certain standard, c'est défini en c++ :P Mais histoire de rester le plus pur possible, utilisons ce qui est le plus courant... : && et || )

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 17:15
by Extra44
Il me semble que :
Dans les structures (if then, ...) ,si le bloc d'instruction (autour des accolades { } ) qui suit ne contient qu'une seule instruction, les accolades autour de l'instruction sont inutiles

Re: c++ ? O_o

Unread postPosted: 30 Oct 2013, 18:47
by Lionel Debroux
Il me semble que :
Dans les structures (if then, ...) ,si le bloc d'instruction (autour des accolades { } ) qui suit ne contient qu'une seule instruction, les accolades autour de l'instruction sont inutiles

C'est exact :)
Cependant, je déconseille fortement de faire ainsi. En quelques années, j'ai déjà corrigé plusieurs bugs dus à l'absence d'accolades après les if(), en particulier, dans les bases de code sur lesquelles j'ai eu l'occasion de travailler.
Je sais aussi qu'une faille significative du kernel Linux était due à un code écrit de la façon suivante:
Code: Select all
if(condition)
    statement1;
    statement2;

alors qu'il aurait dû être écrit de la façon suivante:
Code: Select all
if(condition) {
    statement1;
    statement2;
}


Par ailleurs, "using namespace std;" est un truc pratique de fainéant pour les programmes simples, mais ça ne gagne en réalité pas grand chose, et ça perd en debuggabilité (problèmes de conflit entre plusieurs classes de même nom dans des namespaces différents...) dans les cas complexes.