CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème en C++

Blawk
Blawk
Niveau 10
14 janvier 2003 à 21:01:08

J´ai fait un petit programme ( application win32 console) censé enlevé les espaces dans un tablaeu de caractère mais il ne marche pas, ainsi, vous demandais-je pourquoi ?

char index[] = "Si le monde etait grand, je serais petit.";
short len = sizeof index;
int j = 0;

for ( short i = 0; i <= ( len-j); i++)
{
if ( index[i+j] = ´\0´)
break;

if ( index[i+j] = ´ ´)
j++;

index[i] = index[i+j];
}

cout << index << endl;

( il n´y a aucune erreur à la compilation)

-Q-
-Q-
Niveau 6
14 janvier 2003 à 21:07:38

Je n´ai pas regardé ton code ( je n´i pas cherché, car là kje passe rapido) , mais:

" index[i+j] = ´ ´ " est différent de " index[i+j] == ´ ´ ".
Le premier cas ( " index[i+j] = ´ ´ ") est une affectation
Le deuxième cas ( " index[i+j] == ´ ´ ") est un test

GamerFou2
GamerFou2
Niveau 7
14 janvier 2003 à 21:25:21

aie aie aie : (

buz-l-orage
buz-l-orage
Niveau 10
14 janvier 2003 à 23:32:56

ouaip je suis d´accord avec Q, si tu veux savoir si ton index[i+j] est un espace tu dois mettre ==
ensuite il me semble que y´a un leger pb avec les incrementations...
en prenant l´exemple de ta chaine
pour i=2
on obtient a la fin ( j=0 car t´as jamais incrementé j pour le moment)
t´auras bien le caractere après l´espace au niveau de l´espace index[i]=index[i+1] mais la suite ne changera pas, donc si tu fais ca ta chaine commencera "Sillemonde......"
avec j=1 pour tte la suite donc en fait y´a un leger souci
sois tu commence pareil en ajoutant un for pour decaler tte ta chaine après l´espace sois tu fais du recursif
j´ai eu un exams de c++ ce matin : o) ca va c´etait tranquille
structure, classe, pointeur , liste chainée.. : o) jme suis bien amusé

GamerFou2
GamerFou2
Niveau 7
14 janvier 2003 à 23:42:57

allez cadeau : )

void vireMoiCesEspaces(char *src, char *dst)
{
char *ch1=src, *ch2=dst;

while(*ch1)
{
if ( *ch1 ! = ´ ´)
*ch2++=*ch1;
ch1++;
}

*ch2 = 0;
}

GamerFou2
GamerFou2
Niveau 7
14 janvier 2003 à 23:49:39

et tu peux rajouter en début de fonction

if ( !src || ! dst) return;

si tu veux blinder un peu + le truc..

Sarafan
Sarafan
Niveau 10
15 janvier 2003 à 08:32:36

Moi je vois déjà une pitite erreur dans ton code :

short len = sizeof index;

Sizeof te renvoie la taille du pointeur.
Je mettrais plutot :
short len = strlen(index);
strlen te renvoie la taille de la chaine pointée par index.

Blawk
Blawk
Niveau 10
15 janvier 2003 à 12:35:45

C´était juste l´histoire avec les = et les ==, j´oublie tout le temps.

voilà le code final:

  1. include <iostream>

using namespace std;

int main()
{

char index[] = "Si le monde etait grand, je serais petit.";
short len = sizeof index;
int j = 0;

for ( short i = 0; i <= ( len-j); i++)
{
if ( index[i+j] == ´\0´)
break;

if ( index[i+j] == ´ ´)
j++;

index[i] = index[i+j];
}

for ( i; i <= len; i++)
index[i] = 0;

cout << index << endl;

return 0;

}

Blawk
Blawk
Niveau 10
15 janvier 2003 à 12:36:37

Sarafan >>> len vaut bien 42 comme souhaité dans cet exemple.

Sarafan
Sarafan
Niveau 10
15 janvier 2003 à 12:55:52

Ok merci je ne savais que sizeof pouvait marcher dans ce cas précis.

Blawk
Blawk
Niveau 10
15 janvier 2003 à 17:28:52

GamerFou2 >>> merci de ton aide spontané, mais ce qui m´intéresse c´est d´apprende donc de faire moi même.

Il est pas beau mon programme ?

  1. include <iostream>

using namespace std;

void DelSpcs(char* pind);

int main()
{

char index[] = "Si le monde etait grand, je serais petit.";
char* pindex = index;

DelSpcs(pindex);

cout << pindex << endl;

return 0;
}

void DelSpcs(char* pind)
{
short len = strlen(pind);
short j = 0;

for ( short i = 0; i <= ( len - j) && pind[i + j] ! = ´\0´; i++)
{
if ( pind[i + j] == ´ ´)
j++;

pind[i] = pind[i + j];
}
pind[len - j] = ´\0´;
}

J´en profite pour vous posez une autre question: comment faire pour le console ne m´affiche pas un "u" majuscule accent grave à la place des "é" ?

Blawk
Blawk
Niveau 10
15 janvier 2003 à 17:39:50

Toute petite Maj:

void DelSpcs(char* pind)
{
short j = 0;

for ( short i = 0; pind[i + j] ! = ´\0´; i++)
{
if ( pind[i + j] == ´ ´)
j++;

pind[i] = pind[i + j];
}
pind[i] = ´\0´;
}

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment