Programmation en C

theskel -  
 theskel -
Bonjour a tous,voila mon probleme je dois effectuer un programme qui emet un son en fonction de aprametre exterieur entre lors de l'execution de l'exe( monex.ex /1000 ....) mais je n'arrive pas a le compiler pourriez vous m'aidez car je debute et je desespere depuis 3 jours.
Voila mon code au cas ou de grave erreur soit commise
#include 

int main(int argc, char *argv[])
{  
beep(argv[1],argv[2]);
beep(argv[3],argv[4]);
}

Jvous remercie d'avance

16 réponses

Guki
 
/* exemple */

/*
pour faire un bip on imprime le caractere 7 (erreur?)
<stdlib.h> pour la macro EXIT_SUCCESS
*/

#include <stdlib.h>

int main()
{
printf("%c", 7);
return EXIT_SUCCESS;
}
0
theskel
 
je comprend ce que tu as dit?
0
ledjlale
 
mouarf, si ta oublié "pas":
au lieu d'utiliser beep(...), tu pren un printf sous une condition
0
Guki > ledjlale
 
Erreur monumentale effectivement que je m'empresse de corriger:

/* exemple */

/*
pour faire un bip on imprime le caractere 7 (erreur?)
<stdio.h> pour printf
<stdlib.h> pour la macro EXIT_SUCCESS
*/

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("%c", 7);
return EXIT_SUCCESS;
}
0
Guki
 
Si tu as compris l'exemple il suffit d'ajouter tes arguments et d'évaluer les conditons nécessaires à l'émission d'un bip.
0
ledjlale
 
c ce que je di en plus francisé
0
theskel
 
Mais mon script n'est pas bon?
0
hum > theskel
 
hum..........
a premiere vue ta methode, c'est une fonction pas une procedure
0
Guki > theskel
 
#include

int main(int argc, char *argv[])
{
beep(argv[1],argv[2]);
beep(argv[3],argv[4]);
}

Ce n'est pas un script mais un code source qui va être compilé pour donner du code machine exécuté par le processeur et non interprété par l'interpréteur qui lui est du code machine exécuté par le processeur.

Bon en ce qui concerne le code source "#include" veut dire inclure mais quoi? je me pose la question. "beep" est une fonction utilisée mais définie nulle part donc peut être il manque un bout du "#include" pour utiliser la fonction "beep". Voilà une rapide analyse.
0
theskel > theskel
 
Je suis désole mais je ne voit pas comment mettre de condition sur un printf en fonction des condition du .exe
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215
 
Encore notre bonne vielle win32
The Beep function generates simple tones on the speaker. The function is synchronous; it does not return control to its caller until the sound finishes. 

BOOL Beep(

    DWORD dwFreq,	// sound frequency, in hertz 
    DWORD dwDuration 	// sound duration, in milliseconds 
   );


donc faut faire #include <windows.h>

sinon fait gaffe a bien passer des entier dans tes parametres...
COIN!
0
theskel
 
oui jte remercie pour ton eclairage mais le bool beep fo bien le declarer ?
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215 > theskel
 
negatif
tu remplace le #include de ton prog
par #include <windows.h>
ca devarit marcher tout seul
par contre je te conseil de caster tes arguments en placant (int) devant ca evitera une crise de nerf du compilateur ^^

COIN!
0
theskel > Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention  
 
#include <windows.h>

int main(int argc, char *argv[])
{  
bool Beep(argv[1],argv[2]);
bool Beep(argv[3],argv[4]);

}

Voila et il me dit :
`bool Beep' previously declared here
conflicts with previous declaration `bool Beep'
0
Guki > theskel
 
/* definition de fonction */

type fonction(type argument)
{
/* instructions */
}

/* utilisation de fonction */

fonction(valeur);

Essai sans bool ça ira mieux.
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215 > Guki
 
le bool c'est le retour...
tu peux faire bool test = beep(...)
ou beep(..) tout court

COIN!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215
 
avec ces valeurs tu devrai voir la différence..un grave et un aigu
Beep(440,1000);
Beep(5000,4000);
a savoir que le 440 corespond a un LA ^^

COIN!
0
theskel
 
tu mes sa en parametre une fois la compilation realise?
Car une fois la compilation effectue il mesors tjrs le meme son
0
theskel
 
argv[1],..... sont des parametres entre apres le .exe
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215 > theskel
 
mon exe argv1 argv2 argv3 argv4
et tu remplace par les nombre adequat..
ensuite tu cast tes parametres
tu fait int parametre1= argv1
int parametre2 = argv2 etc...
ensuite tu fait
Beep(parametre1,parametre2)
Beep(parametre3,parametre4)

mais il me semble t'avoir dit de caster tes parametres au tout debut...

COIN!
0
theskel
 
cast? je comprend pas ce que c'est
0
theskel
 
c bon jai vu pr le cast
0
theskel
 
#include <windows.h>

int bip( char argv[])
{
    int param1=argv[1],param2=argv[2];
    int param3=argv[3],param4=argv[4];
    Beep(param1,param2);
    Beep(param3,param4);
}
    
int main(int argc, char *argv[])
{  
   bip(*argv);
}

Voila j'ai fait sa mais sa change rien du tout il me sors tjrs des bip grave.
Jsuis désolé mais ji arrive pas
0
Guki
 
Un cast sur un pointeur pour transfomer une chaine de caractere en entier c'est assez louche comme méthode, je serais même tenter de dire que ça ne marche pas.

Il doit y avoir dans une des bibliothèques du C une fonction pour transformer une chaine de caractère en entier. Je vais jetter un oeil dans ma doc pour voir.
0
ledjlale
 
sscanf
0
Guki
 
Je l'avais oublier cette fonction voici son proto:

int atoi(const char *nptr);
0
Guki
 
sans oublier #include <stdlib.h>
0
theskel
 
Désoile mais j'ai pas tout compris
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215
 
ah oui effectivement...j'avais pôint vu le passage de n'arguments.
#include <windows.h>

int bip( char argv[])
{
    int param1=atoi(argv[1]);
    int param2=atoi(argv[2]);
    int param3=atoi(argv[3]);
    int param4=atoi(argv[4]);
    Beep(param1,param2);
    Beep(param3,param4);
}
    
int main(int argc, char *argv[])
{  
   bip(*argv);
}


COIN!
0
theskel
 
tu est sur du "int param...."?
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215 > theskel
 
pourquoi ca te plais pas comme nom?
tu n'as qu'a l'appeler tartanpion...

COIN!
0
theskel > theskel
 
lol c'est pas le nom qui me dérange c'est que lorsque je le compil il me dit
[Warning] passing arg 1 of `atoi' makes pointer from integer without a cast

Et lors de l'execution de mon exe 440 1000 5000 1000 sa me fait erreur windows.
0
Guki
 
#include <stdlib.h>
#include <windows.h>

int bip( char *argv[]);

int main(int argc, char *argv[])
{
bip(argv);
return EXIT_SUCCESS
}

int bip( char *argv[])
{
int param1=atoi(argv[1]);
int param2=atoi(argv[2]);
int param3=atoi(argv[3]);
int param4=atoi(argv[4]);
Beep(param1,param2);
Beep(param3,param4);
}

ça donne quoi ça?
0
theskel
 
#include <stdlib.h> 
#include <windows.h> 

int bip( char *argv[]); 

int main(int argc, char *argv[]) 
{ 
bip(argv); 
return EXIT_SUCCESS; 
} 

int bip( char *argv[]) 
{ 
int param1=atoi(argv[1]); 
int param2=atoi(argv[2]); 
int param3=atoi(argv[3]); 
int param4=atoi(argv[4]); 
Beep(param1,param2); 
Beep(param3,param4); 
} 

il manque juste une ; apres le exit success mais sinon apres compilation et test je n'est qu'une chose à dire MERCI ca marche je vous remercie tous de m'avoir aide vous ete super sympa
0
Utilisateur anonyme
 
Moi a ta place je laisserais tomber le programme et je ferais des bip avec ma bouche.

--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
0
Guki
 
En plus d'être veinard il est mauvaise langue! :-P
0
Canard007 Messages postés 5931 Date d'inscription   Statut Contributeur Dernière intervention   215
 
spa facil

COIN!
0
theskel
 
Encore une petite kestion pour faire une pause entre les deux beep en reglant la durée savez vous kel frequence de beep je peu mettre pour ne pas l'entendre car j'ai essayer avec un beep(0,XX) et sa marche pas il ne le prend pas en compte.
Si vous avez une solution ou une autre fonction ki me permetre de le faire?
Jvous remercie bien
0
Utilisateur anonyme
 
Il existe pas une fonction pause() ou sleep() ?

--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
0
theskel
 
je te remercie bien poof65 pour la fonction sleep.
0