IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

aide pour optimisation


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut aide pour optimisation
    ce serai pour avoir une petite aide.

    car dans un prog, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        c[0] = SDL_LoadBMP("c0.bmp");
        c[1] = SDL_LoadBMP("c1.bmp");    
        c[2] = SDL_LoadBMP("c2.bmp");
        c[3] = SDL_LoadBMP("c3.bmp");
        c[4] = SDL_LoadBMP("c4.bmp");
        c[5] = SDL_LoadBMP("c5.bmp");
        c[6] = SDL_LoadBMP("c6.bmp");
        c[7] = SDL_LoadBMP("c7.bmp");
        c[8] = SDL_LoadBMP("c8.bmp");
        c[9] = SDL_LoadBMP("c9.bmp");
    se serait pour savoir si c possible de faire sa avec un boucle "for"
    car il y a qu'un chiffre qui change dans le nom de l'image que je ve charger. Et je c pas comment on fait pour changer qu'un seul caractere dans un chaine.

    Merci

  2. #2
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Tu peux modifier la chaine de caractere prise en parametre par sprintf par exemple, la boucle for donnerait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char buffer[6];
    for(i=0; i<=9; i++) {
       sprintf(buffer, "c%d.bmp", i);
       c[i]=SDL_LoadBMP(buffer);
    }

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par NecroMagik
    ça commence mal, tu le met ou le zéro de fin de chaine :

    Citation Envoyé par NecroMagik
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0; i<=9; i++) { 
       sprintf(buffer, "c%d.bmp", i); 
       c[i]=SDL_LoadBMP(buffer); 
    }
    La suite me parrait bon

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut Re: aide pour optimisation
    Citation Envoyé par iwio
    se serait pour savoir si c possible de faire sa avec un boucle "for"
    car il y a qu'un chiffre qui change dans le nom de l'image que je ve charger. Et je c pas comment on fait pour changer qu'un seul caractere dans un chaine.
    Bigre , ce n'est pourtant pas un problème majeur, en fait je me demande si ton message n'est pas une blague !

    La solution la plus rapide mais limitée à 0..9 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    unsigned rank;
    char fname[8];
     
    strcpy(fname, "cx.bmp");
     
    for (rank = 0; rank != 10; rank += 1) {
      fname[1] = '0' + rank;
      c[rank] = SDL_LoadBMP(fname);
    }
    Si tu veux pas etre limite à 9, il suffit d'aumenter la taille de fname et d'utiliser par exemple sprintf

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    non ce n'étais pas une blague, c'étais pour avoir un petit conseil.
    Je vous remerci de m'avoir repondu, c'est tres gentil.
    Et la solution de NecroMagik marche

  6. #6
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Citation Envoyé par gege2061
    Bonjour,
    Citation Envoyé par NecroMagik
    ça commence mal, tu le met ou le zéro de fin de chaine :
    Un tableau declaré tableau[6] contient pas 7 place (0,1,2,3,4,5,6)? Donc on a la place pour les 6caractères+le \0 final non?

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    tu me met le doute !!
    mais je crois qu'un : tableau[6] contient que 6 places, (0,1,2,3,4,5)

  8. #8
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Oui bien vu je viens de vérifier Un tableaux[6] de char fait bien 6octets, je me suis laissé abusé par moi-même désolé

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par NecroMagik
    Oui bien vu je viens de vérifier Un tableaux[6] de char fait bien 6octets, je me suis laissé abusé par moi-même désolé

    Un tableau declare comme tab[6] contient bien 6 elements numerotes de 0 a 5 inclus; mais un char ne fait pas forcement un octet !

  10. #10
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par alveric
    Un tableau declare comme tab[6] contient bien 6 elements numerotes de 0 a 5 inclus; mais un char ne fait pas forcement un octet !
    oui un char ne fait par forcément un octet, un char fait 1 tout court (au sens sizeof dont l'unité est justement le char), mais cela n'a aucune importance puisqu'il utilise un tableau de char, pas un tableau d'octet car cela n'existe pas en C[++].

    Ceci dit je ne connais pas de compilateur ou un char n'est pas sur un octet !

  11. #11
    Membre régulier
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 89
    Points : 106
    Points
    106
    Par défaut
    Bien sur maintenant ça dépend du système mais sur la majorité des systèmes "grands-publics" enfin les plus utilisés (linux, win..) un char fait 1 octet A moins qu'avec les pross 64bits enfin quand je disais ça c'était vis-à-vis de mon linux

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par NecroMagik
    Un tableau declaré tableau[6] contient pas 7 place (0,1,2,3,4,5,6)?
    Non. 6 : 0..5

  13. #13
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par bruno_pages
    Ceci dit je ne connais pas de compilateur ou un char n'est pas sur un octet !
    Il y a des architectures qui ne savent pas adresser en dessous de 16 bits, comme le DSP TMS320C54 de Texas Instrument.

    Un compilateur dédié à cette machine (Code Composer) a donc en toute logique ceci dans son <limits.h> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    /********************************************************************/
    /* LIMITS.H v3.10                                                   */
    /* Copyright (c) 1993-1998 Texas Instruments Incorporated           */
    /********************************************************************/
    #ifndef _LIMITS
    #define _LIMITS
     
    #define CHAR_BIT                16    /* NUMBER OF BITS IN TYPE CHAR  */
    #define SCHAR_MAX            32767    /* MAX VALUE FOR SIGNED CHAR    */
    #define SCHAR_MIN   (-SCHAR_MAX-1)    /* MIN VALUE FOR SIGNED CHAR    */
    #define UCHAR_MAX           65535u    /* MAX VALUE FOR UNSIGNED CHAR  */
    #define CHAR_MIN         SCHAR_MIN    /* MIN VALUE FOR CHAR           */
    #define CHAR_MAX         SCHAR_MAX    /* MAX VALUE FOR CHAR           */
    #define MB_LEN_MAX               1
     
    #define SHRT_MAX             32767    /* MAX VALUE FOR SHORT          */
    #define SHRT_MIN     (-SHRT_MAX-1)    /* MIN VALUE FOR SHORT          */
    #define USHRT_MAX           65535u    /* MAX VALUE FOR UNSIGNED SHORT */
     
    #define INT_MAX              32767    /* MAX VALUE FOR INT            */
    #define INT_MIN       (-INT_MAX-1)    /* MIN VALUE FOR INT            */
    #define UINT_MAX            65535u    /* MAX VALUE FOR UNSIGNED INT   */
     
    #define LONG_MAX        2147483647    /* MAX VALUE FOR LONG           */
    #define LONG_MIN     (-LONG_MAX-1)    /* MIN VALUE FOR LONG           */
    #define ULONG_MAX       4294967295    /* MAX VALUE FOR UNSIGNED LONG  */
     
    #endif

  14. #14
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    La taille des types en C, toute une histoire Un char est le plus petit objet adressage et fait donc 1 byte aprés pour les autres type, il y a juste une valeur minimum de précider dans la norme :
    Quel est la taille d'un char ?
    Quelle est la taille des différents types ?

  15. #15
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    Citation Envoyé par gege2061
    Un char est le plus petit objet adressage et fait donc 1 byte aprés pour les autres type, il y a juste une valeur minimum de précider dans la norme :
    Plus precisement, les deux valeurs extrema sont precisees pour chaque type entier, mais pas leur taille. (meme si on peut en deduire les tailles minima en octets)

  16. #16
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    la taille minimale en bits des types est abordé il me semble dans la norme par la relation "char <= short <= int <= long", la rlation se faisant sur le nb de bits des types

  17. #17
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 289
    Points : 342
    Points
    342
    Par défaut
    A verifier, mais il me senblait que la norme ne donnait pas le nombre de bits, ni meme de bytes minima pour les differents types (excepte pour dire que 1 char = 1 byte (signed ou unsigned) et 1 byte >= 8 bits), mais qu'elle ne precisait que les domaines de valeurs qu'une implementation devait assurer; ainsi que le fait que le domaine de valeurs d'un type doit etre inclus dans celui du type "superieur" dans la relation que tu as donnee (etendue au long long pour le C99, et sans oublier les distinctions singed/unsigned).
    Mais il vaut mieux relire la doc avant de trop s'avancer...

  18. #18
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par alveric
    A verifier, mais il me senblait que la norme ne donnait pas le nombre de bits, ni meme de bytes minima pour les differents types (excepte pour dire que 1 char = 1 byte (signed ou unsigned) et 1 byte >= 8 bits), mais qu'elle ne precisait que les domaines de valeurs qu'une implementation devait assurer; ainsi que le fait que le domaine de valeurs d'un type doit etre inclus dans celui du type "superieur" dans la relation que tu as donnee (etendue au long long pour le C99, et sans oublier les distinctions singed/unsigned).
    Exact.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JAVA / Out Of Memory] Aide pour optimiser du code
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 7
    Dernier message: 06/02/2007, 09h58
  2. Besoin d'aide pour optimiser du code
    Par scaleo dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2007, 13h56
  3. besoin d'aide pour optimiser une requête
    Par jisse dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 09h41
  4. Aide pour optimiser une requete
    Par Akanath dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/09/2005, 11h05
  5. Besoin d'aide pour optimiser requête SQL
    Par Keuf95 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/09/2005, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo