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

J´aide les personne en C/C++

JeanYvesYves
JeanYvesYves
Niveau 10
19 juillet 2005 à 19:40:59

OUI/NON???
--> NON.

Il faut mettre une adresse.
N´aie pas peur d´utiliser de la mémoire, sache qu´elle peut etre écrite et effacée a volonté.
Fait un malloc, un new ou un tableau statique de 1000 pour lire une ligne.
Si tu detectes que cette ligne est inutile, tu n´es pas obligé de la garder :
- soit tu deletes le bloc mémoire, et tu passes a la suite...
- soit, et c´est mieux, tu gardes le meme bloc, et tu réécris par dessus :)

la fonction fseek sert a te déplacer a un offset ( une adresse) que tu définis. Elle sert surtout dans les fichiers dit " binaires" c´est a dire, pas les fichiers textes :)
Meme si dans les fichiers textes, tu peux utiliser fseek, je pense que c´est maladroit :)
Le but est de lire ligne par ligne. Ensuite, tu poses tes données dans un buffer temporaire si tu veux :)

guyver2
guyver2
Niveau 10
19 juillet 2005 à 20:05:54

merci bien pour ta patience et tes reponses; je vais faire comme tu dis.

sonic66
sonic66
Niveau 10
19 juillet 2005 à 21:09:30

Voila , j´ai une question assez dure , et surtout beaucoup trop pour moi , comment peut on chercher dans un fichier . txt une phrase commencant par par exemple " 123" en sachant que ce serait ( de la premiere a la derniere ligne) des chiffre ecrist dans l´ordre croissant?

et comment faire de maniere a ce que le chiffre que l´on veuille ecrire dans un fichier soit dans " l´ordre alphabetique?" exemple , 123 se mettrait en dessous de 124 et aussi de 122.....

Et si possible avec les otpions de l´include fstream :hap:

Merci d´avance

Ptival
Ptival
Niveau 10
19 juillet 2005 à 22:26:52

JYY -> J´ai beau essayé de me creuser la tête je n´arrive vraiment pas.

Je peux te coller où j´en suis rendu :

http://rafb.net/paste/results/CZyypU21.html

Je suis presque sûr de ma fonction TransparentSurface...Elle lit les pixels, et change l´alpha en 255 pour ceux qui sont du RGB donné ( j´ai peut-être chié la partie BIGENDIAN mais comme je teste sur du LITTLEENDIAN je m´en serais pas rendu compte)

Alors, dis-moi où se situe le problème s´il te plaît :)

( Si t´as besoin d´explications chuis là)

Ptival
Ptival
Niveau 10
20 juillet 2005 à 11:09:24

Une petite correction à mon Paste, changer à la ligne 112 le 3ème argument qui était un 3 par un 4 !

Ca n´arrange pas le problème mais c´est mieux :lol:

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 12:05:42

J´ai fait un petit test chez moi avec ma lib a moi, je t´avais dit une betise pour le glAlphaFunc : met ça a la place de GL_LEQUAL

glAlphaFunc(GL_LESS , 128);

Ptival
Ptival
Niveau 10
20 juillet 2005 à 12:22:41

Ah ça marche !

Merci bien !

J´pense que je peux virer le else qui fait un putpixel avec un alpha de 0 non ? Vu que lors de la création de la surface tous les Alpha sont mis à 0, je perds du temps à replacer le même pixel je pense :\

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 12:31:47

Ptival > normalement oui ( je pense que oui d´ailleurs)
cependant, je dirais que si tu le laissais, ce ne serait pas grave :
en effet, tu perdrais 1 fraction de seconde, or, le chargement de l´image se fait hors de la boucle principale, toute optimisation que tu fais hors de la boucle se verra a peine :-)

Ptival
Ptival
Niveau 10
20 juillet 2005 à 12:45:58

Oui mais bon...Pis de toute façon mon truc était mal fait, je faisais un |= ( Uint8)0, or j´aurais du faire un &= pour mettre tout à 0 ; )

Enfin voilà, j´viens de me faire mon p´tit header pour charger une texture avec SDL et OpenGL, sous la forme d´un fichier PNG ( enfin IMG_Load devrait gérer les autres mais rien n´est garanti, surtout avec des formats " destructifs" ! )

Je la walle si ça peut servir à quelqu´un :

http://rafb.net/paste/results/yvefpu56.html

PS :

Les fonctions getpixel et putpixel ne sont pas de moi. On peut en théorie virer le switch car la surface passée en paramètre est, en théorie, obligatoirement en 4Bpp ( soit 32 bpp)...D´ailleurs le nom de variable utilisé bpp porte à confusion, car il décrit le nombre d´octets par pixels, et non de bits par pixels !

Si quelqu´un voudrait que j´explique plus en détail les fonctions je veux bien, c´est surtout des calculs bit à bit mais assez simples ( décalage s par octet, et cast)

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 14:16:13

impec :)
un seul reproche ( sans grande importance)
tu mets les valeurs de la colorkey ( 255,255,0 pour toi) en dur dans la fonction LoadTex.
Peut etre devrais tu passes ces parametres dans la fonction pour permettre a l´utilisateur de choisir !
Sinon, c´est tres bien :)

Pour les formats destructeurs ( comme le JPG), en effet, ça peut poser soucis : notemment quand on compresse une image contenant du texte noir sur fond blanc en jpeg : ça fait tout cracra quand on zoome :)

Ptival
Ptival
Niveau 10
20 juillet 2005 à 14:27:59

Ah oui zut j´ai oublié de changer ça lol !

J´vais corriger ça, c´est vrai que j´ai copié-collé en oubliant que j´avais défini ma propre ColorKey ^^

( ...)

Au fait il ya un moyen simple de faire qu´une fonction ne puisse être appelée que par une autre fonction ? ( Si faut changer beaucoup de code je le ferais pas, si c´est juste une petite ligne à rajouter je le ferais :lol: )

( ...)

http://rafb.net/paste/results/KiPXCH63.html
Voilà le nouveau Paste :)

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 14:31:07

Au fait il ya un moyen simple de faire qu´une fonction ne puisse être appelée que par une autre fonction >

c´est la philosophie des lib :

tu vas créer un ptivalutil.h
et un ptitvalutil.cpp

dans le . cpp, tu mets tes fonctions.
dans le . h , tu mets les prototypes appelables de l´exterieur, tu n´es pas obligé de mettre les prototypes de toutes les fonctions....

Ensuite, dans ton main, tu fais :

  1. include " privalutil.h"

et tu n´as acces qu´aux fonctions prototypées dans le . h
donc :oui:

Ptival
Ptival
Niveau 10
20 juillet 2005 à 14:34:02

Ah bah oui :lol:

Je suis un peu bêbête des fois :)

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 14:37:50

apres, tu as également les classes qui te permettent des sécurités, mais la c´est du pur C++ :-) je ne sais pas si tu maitrises les classes ?

Ptival
Ptival
Niveau 10
20 juillet 2005 à 15:02:45

Je connais, je sais un peu, mais je n´irais dire que je maîtrise les classes que quand je pourrais lire le cours de Christian Casteyde sans m´arracher les cheveux :lol:

Enfin bon avec les classes j´imagine que c´est un truc genre avec protected/private...

Mais bon sur ce coup là j´en ai pas besoin ça ira ; )

Sinon, est-ce que tu pourrais m´expliquer ce qu´il se passe quand on " locke" une surface ?

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 15:17:06

En fait, pour comprendre l´interet du lock, il faut voir comment ça marche :
- d´un coté tu as le CPU, qui agit sur la RAM, spécialiste de la manipulation des octets 1 par 1.
- de l´autre, tu as le GPU ( dans la carte graphique), qui agit sur la VRAM, spécialiste du transfert de données ( du blit rapide)
un GPU de geForce5 est sur une architecture 256 bits : c´est a dire capable de copier 32 octets = 8 pixels 32 bits en un seul cycle.

Cependant, le GPU NE SAIT PAS manipuler les pixels 1 par 1.

Si tu as une image en VRAM, et que tu désires changer 1 pixel : ça coince. Le GPU ne sait pas faire.
Il faut donc copier l´image en RAM, pour récupérer un pointeur dessus ( donc y accéder avec le CPU)
Cette copie s´appelle le " Lock". Ensuite, en RAM, tu modifies le ou les pixels...
Puis tu la remontes ( Unlock) en VRAM a l´endroit ou elle était.

C´est pour cela que Lock et Unlock sont des fonctions lentes ( car copie entiere de la surface)
Et le piege connu, a éviter, si tu dois traiter tous les pixels d´une surface, c´est de ne pas faire de lock et unlock entre chaque pixels...
Evidemment, éviter un max ce genre de fonctions dans la boucle principale...

Note : Si toutes tes images sont en RAM par défaut, alors evidemment, Lock et Unlock ne font rien.

Ptival
Ptival
Niveau 10
20 juillet 2005 à 16:04:23

http://rafb.net/paste/results/DgF2Bn70.html

Voilà la version peut-être finale, avec quelques améliorations ( je ne modifie pas les pixels qui n´ont pas besoin de l´être, et en bas de page il ya un p´tit tuto)

Donc si vous voulez en savoir plus sur la gestion des Uint32 et des Uint8, allez en bas de page, un p´tit tuto sur l´utilisation des opérateurs de décalage bit-à-bit et du OU BINAIRE ; )

( PS : Si vous cherchez un exo sur le ET BINAIRE, faites une fonction qui met l´Alpha à 0 de tous les pixels, quel que soit leur Alpha de départ...En utilisant un ET BINAIRE :lol:

Et en sachant que :

0&0 = 0
1&0 = 0
0&1 = 0
1&1 = 1

Voilà :lol: )

Ptival
Ptival
Niveau 10
20 juillet 2005 à 16:07:34

Ah bah j´vais encore faire une modif alors, et hop, on enlève le Lock et Unlock :lol:

Je ne rewalle pas, ptêtre que j´vais faire une p´tite page perso avec ce genre d´infos utiles :)

( J´ai déjà des idées... :lol: )

JeanYvesYves
JeanYvesYves
Niveau 10
20 juillet 2005 à 16:11:33

ça peut etre sympa :-)

tadada
tadada
Niveau 1
20 juillet 2005 à 19:35:58

Salut tout le monde voila
je suis sur dev C++ et je tape

  1. include < stdlib.h>
  2. include < iostream>

using namespace std;

{
int age,poid; / /2 int déclarés
cout < < " votre age ? " < < endl;
cin > > age;
cout < < " votre poid ? " < <endl;
cin<< poid;
cout < < " vous avez " < < age < < " ans et vous peser"<< poid < < " kilo" < < endl;
system("PAUSE");
return 0;
}

ensuite je compile je met run et il ne me demande ke mon poid et pas mon âge kelkun voit ou ets la phautes svp
merci davance

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