begin process at 2012 02 14 02:55:37
  Trouver un code source :
 
dans
 

28 commentaire(s) de Chouchou182 sur des sources sur tout CodeS-SourceS

Déposé sur Les opérations de la liste chainée

Salut,

Quelques remarques (suggérées par un compilateur):

Lignes 51 et 52, il y a deux if et ligne 58 un else; à quel if se rapporte-t-il ? Je sais qu'il y a une réponse, mais on risque toujours de se tromper. Alors autant mettre des accolades !

Ligne 119, une variable k est déclarée; jamais utilisée.

Ligne 170, une fonction inconnue est appelée. Peut-être est-elle connue de dev-C++ mais celui-ci est obsolète...

Enfin, la fonction main DOIT retourner un int (puisqu'elle est déclarée int main())...

---
Venons-en à scanf.
«[scanf] renvoie[...] le nombre d'éléments d'entrées correctement mis en correspondance et assignés. Ce nombre peut être plus petit que le nombre d'éléments attendus, et même être nul, s'il y a une erreur de mise en correspondance.» (le manuel)
Conclusion, il FAUT vérifier quelle est la valeur retournée.
Si l'utilisateur fait une erreur de saisie, le programme peut «boucler» indéfiniment. C'est fâcheux.

---
Dans le cas 5 (du switch principal), il me semble que
z=detruire(z);
serait plus adéquat qu'un simple
detruire(z);

---
Une dernière remarque pour la route. La fonction Supprdebut est-elle récursive à dessein ? Que penserais-tu d'une version récursive comme toutes les autres ?

Ce code servirait encore mieux le néophyte s'il était agrémenté de quelques commentaires.

Bonne prog.
--
Chouchou.
Posté le : 24/04/2010 18:12:42

Déposé sur Pong en sdl

Oula

en effet, j'ai fumé quoi moi ??

Il faut donc utiliser le type de donnée dont la taille en mémoire correspond à la capacité recherchée (256 octets est trop et 1 octet est effectivement insuffisant).

Merci Kirua pour ta présence d'esprit.
Posté le : 03/02/2005 17:56:49

Déposé sur Pong en sdl

Salut

Shenron666, pour mapper l'état (appuyé ou non) de 256 touches, un octet suffit : 1 bit par touche et on utilise des and et or bit à bit pour faire les tests.

Ce sera plus rapide et l'utilisation de la mémoire sera moindre.

Personnellement j'intercepte les appuis des touches via SDL_KEYDOWN et SDL_KEYUP et j'ajuste par des opérations logiques l'état des bits de ma variable contenant l'état des inputs de mon jeu.

Ensuite pour déplacer, je teste successivement l'état de chaque touche et agis en conséquence.

Bonne prog

Chouchou

Posté le : 02/02/2005 22:18:06

Déposé sur Galerie d'image avec réation de miniature et compression des ...

Salut

Je poste l'ensemble corrigé, il est disponible à cette adresse :
http://www.phpcs.com/code.aspx?ID=25025

A++

Chouchou
Posté le : 30/07/2004 11:55:48

Déposé sur Compte à rebour en c++

Bonjour.

Tu es sûrement débutant ; il ne faut pas se décourager mais tu as encore quelques progrès à faire.

Tout d'abord ton compte à rebours n'a rien de "très simple". Il est totalement illisible.

Il y a trop d'includes : <iostream> et <ctime> auraient suffi.
L'ordinateur sait faire des calculs sur des nombres plus grand que 10, il n'est donc pas nécessaire de traiter chiffre par chiffre.
cout c'est du C++, getch() c'est pas standard. Alterner n'est pas l'idéal d'un point de vue logique du programme.
L'utilisation de goto ainsi que celle de l'opérateur virgule sont plutôt à bannir. Dans certains cas ils peuvent être utiles mais pas dans ton programme.

La méthode aussi a des lacunes, tu attends 1000 millisecondes mais tu ne mesures pas le temps nécessaire à l'affichage et aux calculs. Donc tes secondes sont un peu trop longues.

Nous allons donc refaire un compte à rebours en C ansi lisible :

[Code]
/* rebours.c */

/* Includes */
#include <stdio.h> /* Pour les entrées / sorties */
#include <time.h>  /* Pour mesurer le temps qui passe */

/* main */
int main(int argc, char** argv)
{
    /* Variables */
    /* Durées entrées par l'utilisateur */
    time_t heures = 0, minutes = 0, secondes = 0 ;
    /* Temps à patienter en secondes, déduit de la saisie de l'utilisateur */
    time_t temps = 0 ;
    /* Heure du début du compte à rebours */
    time_t debut = 0 ;
    /* Temps écoulé et temps écoulé précédant */
    time_t temps_ecoule = 0, precedant = 0 ;

    /* On affiche un petit message de bienvenue */
    puts("-- Compte \205 rebours --\n") ;

/*
* On commence par demander à l'utilisateur
* la durée du compte à rebours
*/
    /* On lit le nombre d'heures... */
    puts("Entrez le nombre d\'heures \205 attendre : ") ;
    scanf("%d", &heures) ;
    /* ...puis le nombre de minutes... */
    puts("Entrez le nombre de minutes \205 attendre : ") ;
    scanf("%d", &minutes) ;
    /* ...et enfin le nombre de secondes */
    puts("Entrez le nombre de secondes \205 attendre : ") ;
    scanf("%d", &secondes) ;

/*
* On convertit la saisie de l'utilisateur en un nombre de secondes
*/
    temps = secondes + minutes * 60 + heures * 3600 ;

/*
* Maintenant on boucle tant que le temps n'est pas écoulé.
* C'est une boucle infinie qui utilise toute la puissance de calcul
* du CPU.
*/
    /* On récupère l'heure de début du compte à rebours */
    time(&debut) ;
    while ( temps > (temps_ecoule = time(0) - debut) )
    {
        /* Seulement lorsque le temps écoulé change : */
        if ( precedant == temps_ecoule )
            continue ;

        /* On convertit le temps restant au format h-m-s */
        secondes = (temps-temps_ecoule) % 60 ;
        minutes  = ( ((temps-temps_ecoule) - secondes) / 60 ) % 60 ;
        heures   = (((temps-temps_ecoule) - secondes) / 60 - minutes) / 60 ;
        /* On affiche le temps restant */
        printf("\r%02ih%02im%02is soit %06is", heures, minutes, secondes, (temps-temps_ecoule)) ;

        /* On sauve le temps écoulé */
        precedant = temps_ecoule ;
    }

/*
* Un petit message d'adieu pour que le programme
* ne se ferme pas avant que l'utilisateur ne l'ai vu
* en entier
*/
    puts("\nC\'est fini !!\nEntrez une valeur pour terminer\n") ;
    getchar() ;

    return 0 ;
}

[/Code]

Cette méthode n'est toujours pas idéale. En effet elle consomme toutes les resources disponibles et n'est fiable qu'à la seconde près.

J'espère que ce code te servira.

Et si tu as des questions, surtout, n'hésite pas.

A++

Chouchou
Posté le : 25/07/2004 23:51:51

Déposé sur Galerie d'image avec réation de miniature et compression des ...

Salut à vous, belle compagnie !!

Puisque Mr Aramiil est allé passer ces vacances dans un pays peuplé d'ostrogoths sans PC, j'ai résolu le problème.
Je ne sais pas si tu avais fait des tests avant de poster parce que réussi à inclure un fichier qui n'existe pas, chapeau.
compress.php existe mais compres.php?file_to.... lui, n'existe pas !!

Donc la ligne avec l'include défaillant (46 si je ne m'abuse) est à remplacer par :
compress($image, $title) ;

la fonction compress est la copie presque conforme du fichier compress. Il y a tout de même quelques modifications à faire donc je donne tout le début du fichier compress_dir.php :

&lt;?
//on inclu la fonction de miniaturisaton
include('mini.php');
include('param.php');

// Fonction de compression
function compress ($file, $__title)
{
global $directory, $login, $serveur, $pass, $base ;
// On se protège contre les apostrophes dans le noms de fichier. Le KHANARD qui a inventé ça ...
$file = addslashes($file) ;
// On se protège aussi des utilisateurs qui savent pas que les guillemets, ça passe mal
$title = addslashes($__title) ;
//on determine le fichier à compresser
$file_to_c_whithout_path = $file;
$file_to_c = $directory.$file_to_c_whithout_path;



//on l'ouvre
if ($file_open = @fopen($file_to_c, "r+"))
{

//on lit les données
$data = fread($file_open, filesize($file_to_c));

//on ferme le fichier
fclose($file_open);

//on compress les données
$compress = bzcompress($data, 9);

//on ouvre le fichier de sauvegarde
if ($file_open = @fopen($file_to_c.'.bz', "w+"))
{

//on inscrit les données
fwrite($file_open, $compress);

//on ferme le fichier
fclose($file_open);

} else {

//on affiche l'erreur
echo 'Impossible d\'ouvrir le fichier compréssé';
exit;
}

//on recupere les infos
$info = pathinfo($file_to_c);

//on lance la miniaturisation
miniature($file_to_c, $file_to_c_whithout_path, strtolower($info["extension"]));
unlink($file_to_c);

//on créé le titre
$connection = MySQL_connect($serveur, $login, $pass) or die(mysql_error());
mysql_select_db($base, $connection) or die(mysql_error());
MySQL_query("INSERT INTO titres (image, titre) VALUES ('$file_to_c_whithout_path', '$title')", $connection) or die(mysql_error());
MySQL_close($connection);

//on affiche confirmation
echo 'L\'image '.$file_to_c.' à bien été compréssée.&lt;br&gt;';
} else {

//affichage de l'erreur
echo 'Impossible d\'ouvrir le fichier à compresser.';

}
}
//on regarde l'action
$act = $_POST['act'];

//....

Le reste, vous l'avez déjà

Bonnes vacances à ceux qui en ont et bonne prog à tous !

A++

Chouchou
Posté le : 08/07/2004 16:28:53

Déposé sur Coloration syntaxique d'un fichier source en c/c++ (dev-c++)

Salut

C'est sympa comme source

Je pense que tu aurais pu programmer une routine de comparaison du mot en cours avec un tableau contenant tous les mots-clés. Parce que là c'est plutôt long ce gros switch suivi de pas mal de if...

En utilisant strncmp ce serait également allé plus vite (à programmer)

Sinon il manquait effectivement string.h (et pas strings.h) mais ce n'est pas dramatique

A++

Chouchou

Posté le : 04/07/2004 12:54:56

Déposé sur Bijection explicite entre n et q+

Salut

Je pense avoir résolu le problème lié à cin provoquant un affichage ininterrompu en cas de saisie maladroite de la part de l'utilisateur. Voila les modifications :
  -Saisie de 'choix' pour le menu :
      fflush(stdin) ;
      choix = getchar() - 48 ;
  -Saisie de 'valeur' pour la case 1:
            char val[50] ;
            cin &gt;&gt; val;
            valeur = atoi(val) ;
  -Méthode de saisie d'une fraction:
istream & operator &gt;&gt; (istream & in, fraction &b)
{
   char val[50] ;
   in &gt;&gt; val ;
   b.numerateur = atoi(val) ;
   in &gt;&gt; val ;
   b.denominateur = atoi(val) ;
   b.simplifier();
   return in;
}

Le principe est simple : on récupère la saisie de l'utilisateur comme une chaîne de caractères et transforme à l'aide de atoi. En cas d'erreur, atoi renvoie 0 donc le programme continue sans problème.

Bonne Prog !

Chouchou.
Posté le : 23/06/2004 23:30:14

Déposé sur Remplace dans toute une chaine

Salut

Je ne voudrais pas critiquer mais si cette source est un exemple, c'est pas vraiment très clair.
Certes on apprend mieux en essayant de comprendre seul mais quelques commentaires seraient bienvenus parce que certaines lignes peuvent rester obscures pour le programmeur peu averti.

Merci.

Chouchou
Posté le : 23/06/2004 16:49:19

Déposé sur Un simple calculette pour débutants...(dev-cpp)

Salut

Pourquoi inclure stdio ?

J'ai pas regardé la source en détail mais je n'en ai pas trouvé l'utilité (de l'include)

De plus une seule fonction avec un switch suffirait plutot qu'un switch pour choisir la fonction.

Bonne prog

Chouchou
Posté le : 20/04/2004 22:01:09

1 2 3


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales