Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1218 connectés 

  FORUM HardWare.fr
  Programmation

  DEVOIR POUR DEMAIN!!!! HELP!!! (language C)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DEVOIR POUR DEMAIN!!!! HELP!!! (language C)

n°27202
Alan150382
TAKE IT EASY
Posté le 24-04-2001 à 21:22:56  profilanswer
 

voila ce ke je doi faire mais j'y arrive pas!!! si kk1 peu me le faire je lui en serai reconnaissant! surtout ke c noté! ;-)
 
il faut ecrir un prog ki lit une ligne entrée au clavier et compte le nombre de voyelles de cette ligne.
Entrée: Une ligne de texte terminée par un asterixe
Sorti: la phrase "Le nombre de voyelle dans la ligne est xxx" ou xxx est le nombre de voyelles dans la ligne entrée.
 
Merci!

mood
Publicité
Posté le 24-04-2001 à 21:22:56  profilanswer
 

n°27203
Alan150382
TAKE IT EASY
Posté le 24-04-2001 à 21:26:09  profilanswer
 

voila ce ke je doi faire mais j'y arrive pas!!! si kk1 peu me le faire je lui en serai voila ce ke j'ai fais mais il y a des errursje capte pas pkoi
#include<stdio.h>
main()
{
char c;
int v=0;
printf ("Entrez une ligne qui se termine par*\n";);
while((c=getchar( ))!='*')
switch (c)
{
case 'A':
case 'a':v++;   /* Achaque fois que le compilateur va renconter ce caractères, il va ajouter 1                                                  case 'E':                     à  la valeur de v */
case 'e':v++;
case 'I':
case'i':v++;
case 'O':
case'o':v++;
case 'U':
case'u':v++;
}
printf ("Le nombre de voyelles dans la ligne est%d\n",v);
return 0;
}

n°27205
HelloWorld
Salut tout le monde!
Posté le 24-04-2001 à 21:31:47  profilanswer
 

#include <stdio.h>
 
void main(void)
{
char ligne[100]; /* si ton gars entre + de 100 carateres ... */
int i,nb;
 
    printf("Ce source viens de Hardware.fr\n" ); /* indispensable */
    scanf("%s",&ligne);
    for(i=0;i<99;i++)
    {
        switch(ligne[i])
        {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u': nb++;break;
            case '*': printf("Le nombre de voyelles est %d.\n",nb);
    }
}
ca doit etre a peu pres ca ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°27206
Alan150382
TAKE IT EASY
Posté le 24-04-2001 à 21:33:15  profilanswer
 

merci! je vais essayer

n°27207
HelloWorld
Salut tout le monde!
Posté le 24-04-2001 à 21:33:17  profilanswer
 

arf ... pas assez rapide ...
t'as qu'a mixer les 2 progs ! :D


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°27208
Alan150382
TAKE IT EASY
Posté le 24-04-2001 à 21:35:41  profilanswer
 

:-( error ligne 18 et 21

n°27209
HelloWorld
Salut tout le monde!
Posté le 24-04-2001 à 21:38:02  profilanswer
 

ouai ... je comprend pas d'ou il sort ton quote
c'est koi "e ??? :??:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°27210
HelloWorld
Salut tout le monde!
Posté le 24-04-2001 à 21:40:19  profilanswer
 

oups ... les majuscules :D


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°27211
Alan150382
TAKE IT EASY
Posté le 24-04-2001 à 21:44:52  profilanswer
 

en faite c =a c pendant le copier coller il y a eu un blem

n°27212
Alan150382
TAKE IT EASY
Posté le 24-04-2001 à 21:47:59  profilanswer
 

j'ai un ptre exo celui la c plus compliker:
 
ecrir un prog ki calcule le nombre de chiffre de xxx et yyy ou xxx est l'entier entré, et yyy est son nombre de chiffres.
ameliorer le prog de mise a jour d'un compte bancaire : l'utilisateur peut faire plusieurs operation successives lorskil a terminer il entre au clavier la lettre f.

mood
Publicité
Posté le 24-04-2001 à 21:47:59  profilanswer
 

n°27218
mystereetb​ouledegomm​e
Posté le 24-04-2001 à 22:17:43  profilanswer
 

En francais ca donne koi? Tu veux un soft qui compte le nombre de chiffre d'un nombre? Ben tu fais ca :  
 
cin >> chiffre
v=0;
while(chiffre !=0)
{
  chiffre=chiffre/10;
  v=v+1;
}

n°27228
la viper
Posté le 24-04-2001 à 23:22:43  profilanswer
 

t'es pas obligé de sauvegarder les valeurs je suppose ?
 
donc  
 
debut
  valeur = 0;
  c <- lecture caractere
  tantque (c != *)
  faire
    si (voyelle(c))
      valeur <- valeur+1
    finsi
    c <- lecture caractere
  fintq
  retourne valeur
fin
 
voyelle(c)
 
debut
  si ( c = a,e,i,o,u,y)
   retourne 1
  sinon
   retourne 0
  finsi
fin

n°27237
Bounga69
Wii will rock you
Posté le 24-04-2001 à 23:56:34  profilanswer
 

bon c'est un truc de base ça. Allez, je te file le principale, à toi de le transcrire :
while (c!='\n')
{
   if((c=='a' || c=='e' || etc ..) || (c=='A' || c=='E' etc))
       voy++;
}
 
Sinon tu peux donner les intervalles des caractères ASCII, sachant que les majuscules sont comprises entre la position 65 et la position 90, les minuscules entre la position 97 et la position 122, c'est plus fastoche, c'est moins lourd et tout prof appréciera plus à mon avis. Je ne me souviens plus de la fonction ASCII qui le fait, dont je l'appelerais ASCII, ok? On a donc:
While(c!='\n')
{
    if (((ASCII(c)>65) && (ASCII(c)<90))||((ASCII(c)>97) && (ASCII(c)<122)))
     voy++;
}
 
Voilà.

n°27240
Bounga69
Wii will rock you
Posté le 25-04-2001 à 00:07:22  profilanswer
 

bon, apparemment, c'est plus simple que ça, tu fais ça:
 
char phrase[n]; //déclaration du tableau contenant la phrase, n fixé.
int voy=0; //déclaration du compteur et initialisation pour éviter les surprises
 
dans le corps du programme tu mets;
i=0;
while (phrase[i] != '\n')
{
   if (((phrase[i]>65) && (phrase[i]<90)) || ((phrase[i]>97) && (phrase[i]<122)))
      voy++; //si on trouve une voyelle, on incrémente voy
 
   i++; //incrémentation de i pour pouvoir passer au caractère suivant
}
 
tu utilises quoi comme compilateur ?

 

[edit]--Message édité par Bounga69--[/edit]

n°27243
gilou
Modérateur
Modzilla
Posté le 25-04-2001 à 00:19:04  profilanswer
 

Tiens, voici un programme qui marche, contrairement a ce que j'ai lu plus haut. Car faudrait pas oublier que scanf s'arretent au premier blanc...
Et pas besoin de regarder les voyelles une par une, il y a des fonctions de la librairie std pour cela.
Le code ci dessous prend une ou plusieurs lignes, il n'arrete la lecture clavier que lorsque une * a ete tapee dans la ligne.
Il ne compte pas les voyelles qui sont eventuellement tapees apres le * . A toi d'adapter selon tes besoins.
 
#include <stdio.h>  
#include <string.h>  
int main(void)  
{  
  char input[255];  
  char *aux=NULL;  
  int  count=0;  
 
  printf("*** Ce source viens de Hardware.fr ***\n" );  
  /* indispensable */
  printf("Veuillez entrer une chaine de caracteres terminee par *\n" );  
  printf(">" );   /* pour faire joli: un prompt */
  fflush(NULL); /* flushe tout stream en output */
  while (scanf("%s",&input))
    {
      aux=input;
      while (aux && (aux=strpbrk(aux,"aeiouAEIOU*" )))
 {
   if (*aux == '*')
     goto done;
   count++;
   aux++;
 }
    }
 done:
  printf("Le nombre de voyelles avant l'* est %d.\n",count);  
  return 0;  
}  
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°27245
Pschitt
Posté le 25-04-2001 à 00:20:57  profilanswer
 

Moi j'utiliserais une fonction déja toute faite : strchr de string.h
 
#include<stdio.h>
#include<string.h>
#include<conio.h>
 
void main()
{
char car;
int compteur;
car=' ';
compteur=0;
clrscr();
 
while((car=getchar())!='*')
 
        if(strchr("aeiou",car)) /* Ici strchr compte le nbre d'occurrence car dans la chaîne "aeiou" */  
 
                compteur++;
 
printf("\nLe nombre de voyelle dans la ligne est %d",compteur);
getch();
}

n°27250
gilou
Modérateur
Modzilla
Posté le 25-04-2001 à 00:31:19  profilanswer
 

C'est pas faux ton approche, mais fortement inefficace par rapport a ce que j'ai ecrit:
Tu avances caractere par caractere, et tu testes pour chaque caractere.
Ce que j'ai file avance mot par mot, et se positionne directos sur les caracteres voyelles, sautant les consonnes a chaque etape.  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°27260
Bounga69
Wii will rock you
Posté le 25-04-2001 à 08:08:34  profilanswer
 

gilou, c'est pas mal. Effectivement mon programme vérifie caractère par caractère. Je programme en Visual C++ et actuellement c'est la seule méthode que je connaisse. Mais je vais essayer d'adapter la tienne.

n°27278
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-04-2001 à 09:32:36  profilanswer
 

Bounga69 a écrit a écrit :

 
Sinon tu peux donner les intervalles des caractères ASCII, sachant que les majuscules sont comprises entre la position 65 et la position 90, les minuscules entre la position 97 et la position 122, c'est plus fastoche, c'est moins lourd et tout prof appréciera plus à mon avis. Je ne me souviens plus de la fonction ASCII qui le fait, dont je l'appelerais ASCII, ok? On a donc:
While(c!='\n')
{
    if (((ASCII(c)>65) && (ASCII(c)<90))||((ASCII(c)>97) && (ASCII(c)<122)))
     voy++;
}
 
Voilà.




 
C'est un peu tordu... Ce serait plus facile de faire :

Code :
  1. if (((c>='A') && (c<='Z')) || ((c>='a') && (c<='z')))


à mon avis le prof aimerait mieux ça :)

 

[edit]--Message édité par antp--[/edit]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°27303
jupiler
Un cousin...
Posté le 25-04-2001 à 10:23:55  profilanswer
 

antp a écrit a écrit :

 
 
C'est un peu tordu... Ce serait plus facile de faire :

Code :
  1. if (((c>='A') && (c<='Z')) || ((c>='a') && (c<='z')))


à mon avis le prof aimerait mieux ça :)
 
 




 
donc tu considère que toutes les lettres sont des voyelles?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°27361
Bounga69
Wii will rock you
Posté le 25-04-2001 à 11:41:49  profilanswer
 

outch j'crois qu'j'ai fait une connerie. Il vaut mieux garder ca :
while (c!='\n')  
{  
   if((c=='a' || c=='e' || etc ..) || (c=='A' || c=='E' etc))  
       voy++;  
}  
 la précipitation c'est pas bien quand on est fatigué.

n°27362
nicotine
Posté le 25-04-2001 à 11:43:36  profilanswer
 

je penserais a la fonction isalpha(char)


---------------
Do androïds dream of electric sheep ?
n°27426
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-04-2001 à 12:51:14  profilanswer
 

jupiler a écrit a écrit :

 
 
donc tu considère que toutes les lettres sont des voyelles?




 
Non, mais le truc avec la fonction ASCII faisait pareil mais avec un appel de fonction inutile pour chaque lettre.
D'ailleurs je sais pas quel était le but, mais c'est juste que ce truc ASCII(c)>65 ça me semblait trop louche.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°27582
Alan150382
TAKE IT EASY
Posté le 25-04-2001 à 16:48:42  profilanswer
 

merci a tous

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  DEVOIR POUR DEMAIN!!!! HELP!!! (language C)

 

Sujets relatifs
GTK Help ! (Linux)help sous batch
Help, besoin d'aide en Java !Aux pros du javascript ! HELP
help me en VB !!!Help: [Microsoft][ODBC Driver Manager] Data source name not found an..
[ASP / SQL Server] Urgent Help[Opengl glut et C++] Débuggeurs fous, HELP!
[VB] Help desk officiel[SQL] HELP sur une requête SQL
Plus de sujets relatifs à : DEVOIR POUR DEMAIN!!!! HELP!!! (language C)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR