Programmation en C

Fermé
theskel - 18 août 2004 à 10:45
 theskel - 19 août 2004 à 09:58
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

/* 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
je comprend ce que tu as dit?
0
mouarf, si ta oublié "pas":
au lieu d'utiliser beep(...), tu pren un printf sous une condition
0
Guki > ledjlale
18 août 2004 à 11:38
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
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
c ce que je di en plus francisé
0
Mais mon script n'est pas bon?
0
hum > theskel
18 août 2004 à 11:24
hum..........
a premiere vue ta methode, c'est une fonction pas une procedure
0
Guki > theskel
18 août 2004 à 11:29
#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
18 août 2004 à 11:40
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 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
18 août 2004 à 11:42
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
oui jte remercie pour ton eclairage mais le bool beep fo bien le declarer ?
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215 > theskel
18 août 2004 à 11:56
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 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009
18 août 2004 à 12:03
#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
18 août 2004 à 12:12
/* definition de fonction */

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

/* utilisation de fonction */

fonction(valeur);

Essai sans bool ça ira mieux.
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215 > Guki
18 août 2004 à 12:33
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 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
18 août 2004 à 13:15
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
tu mes sa en parametre une fois la compilation realise?
Car une fois la compilation effectue il mesors tjrs le meme son
0
argv[1],..... sont des parametres entre apres le .exe
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215 > theskel
18 août 2004 à 13:30
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
cast? je comprend pas ce que c'est
0
c bon jai vu pr le cast
0
#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
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
sscanf
0
Je l'avais oublier cette fonction voici son proto:

int atoi(const char *nptr);
0
sans oublier #include <stdlib.h>
0
Désoile mais j'ai pas tout compris
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
18 août 2004 à 13:58
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
tu est sur du "int param...."?
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215 > theskel
18 août 2004 à 14:09
pourquoi ca te plais pas comme nom?
tu n'as qu'a l'appeler tartanpion...

COIN!
0
theskel > theskel
18 août 2004 à 14:11
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
#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
#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
18 août 2004 à 14:20
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
En plus d'être veinard il est mauvaise langue! :-P
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
18 août 2004 à 14:25
spa facil

COIN!
0
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
19 août 2004 à 09:43
Il existe pas une fonction pause() ou sleep() ?

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