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

Code de goret ?

xZecko
xZecko
Niveau 4
06 octobre 2010 à 22:43:32

Bonsoir, j'ai fait cette fonction en Pawn pour vérifier si une chaîne peut être convertie en int : http://pastebin.com/eq7f876j
Mais le code est vraiment horrible quoi, il y avait pas une façon plus simple de faire ?

chris_27
chris_27
Niveau 10
06 octobre 2010 à 22:48:18

Cherche sur le net le code de la fonction standard atoi et compare. :-)

xZecko
xZecko
Niveau 4
06 octobre 2010 à 23:39:07

Ma fonction ne convertit pas, elle vérifie si la chaîne est convertible.

Sangoku
Sangoku
Niveau 10
06 octobre 2010 à 23:44:20

en effet c'est horrible :(

chris_27
chris_27
Niveau 10
07 octobre 2010 à 00:01:56

xZecko: parce que atoi ça convertit n'importe quoi peut-être ? :-)

xZecko
xZecko
Niveau 4
07 octobre 2010 à 00:05:17

Ben d'après ce que j'en ai vu ça convertit une chaîne sans se soucier de si elle passera dans une variable en 32 bit.

Le truc le plus concluant que j'ai trouvé : http://www.student.cs.uwaterloo.ca/~cs350/common/os161-src-html/atoi_8c-source.html avec /* could (should?) check for overflow here */

:(

tbop2
tbop2
Niveau 10
07 octobre 2010 à 01:12:23

Le truc moche (entre autres) c'est surtout tes if emboîtés.

Déclare tout simplement un tableau de char temporaire au début de ton code char max[10] = "2147483647".

Et compare les chiffres dans une boucle for dessus.

for(int i = 0; i <= 10; i++)
{
if(string[posOrNeg+i] > max[i]) return 0;
}

tbop2
tbop2
Niveau 10
07 octobre 2010 à 01:21:23

Il manque un break en dessous de mon if.

tbop2
tbop2
Niveau 10
07 octobre 2010 à 01:24:55

On va y arriver, excusez l'heure tardive.

if(len == 10+posOrNeg) // if is 10 long, check if it fits in a 32-bit var
{
// max = 2,147,483,647
for(int i = 0; i <= 10; ++i)
{
if(string[posOrNeg+i] > maxInteger[i])
{
return false;
}
if else(string[posOrNeg+i] != maxInteger[i])
{
break;
}
}
}

tbop2
tbop2
Niveau 10
07 octobre 2010 à 01:26:00

J'ai quand même réussi à écrire if else moi...

godrik
godrik
Niveau 30
07 octobre 2010 à 03:07:47

$ man sscanf

godrik
godrik
Niveau 30
07 octobre 2010 à 03:09:11

(ou de facon plus precise)
$ man strtol
$ man strtod

xZecko
xZecko
Niveau 4
07 octobre 2010 à 19:07:38

Tbop2 avec ton brouillon de fonction (c'est pas péjoratif hein) la fonction va dire non si par exemple le deuxième nombre est trop grand alors que le premier allait, enfin je vais voir si je peux faire de la sorte.

godrik sois je suis teubé (ou j'ai lu trop vite) soit ces fonctions n'ont pas de protections contre les nombres trop grands. :(

xZecko
xZecko
Niveau 4
07 octobre 2010 à 19:21:55

http://pastebin.com/9s0A0t9A Et voilà :content:

godrik
godrik
Niveau 30
07 octobre 2010 à 19:32:24

extrait de man strtol:

If endptr is not NULL, strtol() stores the address of the first invalid character in *endptr. If there were
no digits at all, strtol() stores the original value of nptr in *endptr (and returns 0). In particular, if
*nptr is not '\0' but **endptr is '\0' on return, the entire string is valid.

tbop2
tbop2
Niveau 10
07 octobre 2010 à 20:25:33

"la fonction va dire non si par exemple le deuxième nombre est trop grand alors que le premier allait"

Et ?

tbop2
tbop2
Niveau 10
07 octobre 2010 à 20:26:38

Par contre c'est quoi ce délire de ne pas vouloir typer tes variables là ?

tbop2
tbop2
Niveau 10
07 octobre 2010 à 20:29:11

Pourquoi déclarer un k dans la boucle for alors que tu connais la longueur de strMax (mauvais choix de nom de variable d'ailleurs).

tbop2
tbop2
Niveau 10
07 octobre 2010 à 20:33:14

Oh c'est du PAWN, au temps pour moi.

xZecko
xZecko
Niveau 4
08 octobre 2010 à 19:10:56
  1. Tbop2 Voir le profil de Tbop2
  2. Posté le 7 octobre 2010 à 20:25:33 Avertir un administrateur
  3. "la fonction va dire non si par exemple le deuxième nombre est trop grand alors que le premier allait"

Et ?

Et 1,200,000,000 ne passera pas à cause du 2.

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