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

 


Dernière réponse
Sujet : DEVOIR POUR DEMAIN!!!! HELP!!! (language C)
Alan150382 merci a tous

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Alan150382 merci a tous
antp

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.

nicotine je penserais a la fonction isalpha(char)
Bounga69 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é.
jupiler

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?

antp

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]

Bounga69 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.
gilou 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+,
Pschitt 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();
}
gilou 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+,
Bounga69 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]

Bounga69 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à.
la viper 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
mystereetbouledegomme 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;
}
Alan150382 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.
Alan150382 en faite c =a c pendant le copier coller il y a eu un blem
HelloWorld oups ... les majuscules :D
HelloWorld ouai ... je comprend pas d'ou il sort ton quote
c'est koi "e ??? :??:
Alan150382 :-( error ligne 18 et 21
HelloWorld arf ... pas assez rapide ...
t'as qu'a mixer les 2 progs ! :D
Alan150382 merci! je vais essayer
HelloWorld #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 ...
Alan150382 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;
}
Alan150382 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!

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)