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

  FORUM HardWare.fr
  Programmation
  C

  Une question sur les suites/chaine de caracteres:)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une question sur les suites/chaine de caracteres:)

n°1846210
soufiaaaan​e
Posté le 02-02-2009 à 19:11:14  profilanswer
 

Bnjr :)
j'ai un souci qui m'enerve :s on demande de saisir un nombre ( par ex: 4600 ) et afficher qu'il contient Quatre chiffre ( selon le nombre saisi )
 
ex d'execution:
saisir un nombre: 4600
le nombre saisi contient 4 chiffres :s
 
on m'a recommandé d'essayer Getchar mais jarrive pas à resoudre mon souci, l'astuce introuvable qu'il faut lire un chiffre par chiffre et pas un à la fois :s  
 
PS: le programme doit se faire avec les boucles et par Turbo C comme compilateur :)
 
Merci d'avance

mood
Publicité
Posté le 02-02-2009 à 19:11:14  profilanswer
 

n°1846211
Joel F
Real men use unique_ptr
Posté le 02-02-2009 à 19:13:40  profilanswer
 

une fois ta chaine dans ton tableau de char, parcours la chaine jusqu'à trouver un caractere 0, le nbre d epas te donne le nbre de chiffre

n°1846217
soufiaaaan​e
Posté le 02-02-2009 à 19:49:27  profilanswer
 

le probleme qu'il faut le faire qu' avec les boucles parce que on a pas encore etudié les tableaux !

n°1846220
Elmoricq
Modérateur
Posté le 02-02-2009 à 20:06:44  profilanswer
 

C'est quoi cet exercice inutile ? :heink:
 
Bon ben tu fais une boucle à base de getchar() et tu comptes le nombres de chiffres entrés au fur et à mesure. [:spamafote]
Pense juste à contrôler que ce qui est saisi est bien un chiffre.


Message édité par Elmoricq le 02-02-2009 à 20:07:06
n°1858157
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-03-2009 à 18:13:10  profilanswer
 

Joel F a écrit :

une fois ta chaine dans ton tableau de char, parcours la chaine jusqu'à trouver un caractere 0, le nbre d epas te donne le nbre de chiffre

ou strlen() ...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1858243
Joel F
Real men use unique_ptr
Posté le 05-03-2009 à 22:47:08  profilanswer
 

vu la tête de l'exo, pas sur qu'il y ai droit :E

n°1858363
leoz2004
Posté le 06-03-2009 à 09:22:48  profilanswer
 

il n'a qu'a la recoder ^^
(oui oui je sais sa fait tres epiteciens...mais j'menfou j'en suis un)
 
allez un vieux strlen avec une boucle ^^
 
int        my_strlen(char *str)
{
        int i;
 
        i = 0;
        while (str[i] != '\0')
        i++;
        return(i);
}

Message cité 1 fois
Message édité par leoz2004 le 06-03-2009 à 09:23:27

---------------
Worldcraze 10loop
n°1858384
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-03-2009 à 10:28:05  profilanswer
 

leoz2004 a écrit :

il n'a qu'a la recoder ^^
(oui oui je sais sa fait tres epiteciens...mais j'menfou j'en suis un)
 
allez un vieux strlen avec une boucle


ce qui donne en codage 'normal' !

Code :
  1. #include <stddef.h>
  2. size_t my_strlen (char const *str)
  3. {
  4.    size_t i = 0;
  5.    while (str[i] != '\0')
  6.    {
  7.       i++;
  8.    }
  9.    return i;
  10. }


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1858620
el muchach​o
Comfortably Numb
Posté le 06-03-2009 à 19:09:40  profilanswer
 

Tiens, aujourd'hui, j'ai codé une petite "classe" String définie ainsi:

Code :
  1. typedef struct{
  2.     size_t sz;  // taille du buffer, toujours > len
  3.     size_t len; // longueur de la chaîne ('\0' exclu)
  4.     char *str;
  5. } String;
  6. String * newString(const char *);
  7. void delString(String *);
  8. size_t stringlen(const String *);
  9. size_t stringcpy(String *dst, const String *src);
  10. size_t stringcat(String *dst, const String *src);
  11. String * stringdup(const String *);
  12. int stringcmp(const String *st1, const String *st2);
  13. int stringcmp2(const String *st1, const char *st2);


(implementation is left as an exercise for the reader [:dawa])
(je ne sais pas pourquoi personne ne pense à faire un truc comme ça en C, vu les avantages que ça représente en terme de simplicité et de sécurité)

Message cité 1 fois
Message édité par el muchacho le 12-03-2009 à 22:53:44

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1858624
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-03-2009 à 19:23:11  profilanswer
 

el muchacho a écrit :

(je ne sais pas pourquoi personne ne pense à faire un truc comme ça en C, vu les avantages que ça représente en terme de simplicité et de sécurité)


Tu parles de  
 
http://mapage.noos.fr/emdel/clib.htm
Module FSTR ?
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 06-03-2009 à 19:23:11  profilanswer
 

n°1858625
el muchach​o
Comfortably Numb
Posté le 06-03-2009 à 19:27:36  profilanswer
 

P'tain, pourtant je l'avais regardée à l'instant. :ange:


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1859515
leoz2004
Posté le 09-03-2009 à 20:29:17  profilanswer
 

Emmanuel Delahaye a écrit :


ce qui donne en codage 'normal' !

Code :
  1. #include <stddef.h>
  2. size_t my_strlen (char const *str)
  3. {
  4.    size_t i = 0;
  5.    while (str[i] != '\0')
  6.    {
  7.       i++;
  8.    }
  9.    return i;
  10. }



 
Codage normal...pas a la norme Epitech :p
 :kaola:  :kaola:


---------------
Worldcraze 10loop
n°1859516
Elmoricq
Modérateur
Posté le 09-03-2009 à 20:39:30  profilanswer
 

Il n'y a pas 36 normes pour le C, il n'y en a que deux, et "epitech" n'en fait pas partie.

n°1859528
Wyruz
Posté le 09-03-2009 à 20:52:50  profilanswer
 

leoz2004 a écrit :


 
Codage normal...pas a la norme Epitech :p
 :kaola:  :kaola:


 
En dehors de l'affectation en même temps que la déclaration et les parenthèse du return, que propose tu de réellement différent ?
 
D'autant plus que de la part d'un epitechien, j'aurais plutôt vu :
 

Code :
  1. size_t my_strlen (char *s)
  2. {
  3.    char *p = s;
  4.    while (*p)
  5.       p++;
  6.    return (p - s);
  7. }


 
je me trompe ?

n°1860140
leoz2004
Posté le 11-03-2009 à 00:11:37  profilanswer
 

Erf c'est pas super propre de déclarer et d'initialiser une variable en meme temps (du moins c'est ce qu'on nous apprend ^^)

 

pourquoi utiliser size_t a la place d'int ?
Sinon le return avec un calcul a l'interieur c'est source d'erreur ^^

 

@Elmoricq: Disons que sa nous permet de nous repérer plus rapidement entre epitecien.
Pour avoir bossé dans une boite d'un ancien epitecien, je dois dire que c'est super pratique de se retrouvé ;)

Message cité 2 fois
Message édité par leoz2004 le 11-03-2009 à 00:13:50

---------------
Worldcraze 10loop
n°1860145
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-03-2009 à 01:14:23  profilanswer
 

leoz2004 a écrit :

Erf c'est pas super propre de déclarer et d'initialiser une variable en meme temps

C'est tout à fait sain et ça fait partie des Bonnes Pratiques.

Citation :

(du moins c'est ce qu'on nous apprend ^^)

Alors change d'école...

 
Citation :

pourquoi utiliser size_t a la place d'int ?


Parce que c'est un indice croissant.
http://mapage.noos.fr/emdel/notes.htm#size_t

 
Citation :

Sinon le return avec un calcul a l'interieur c'est source d'erreur ^^


Mais c'est quoi ces a priori infondés ? En quoi ce serait une source d'erreur ?

 


Citation :

@Elmoricq: Disons que sa nous permet de nous repérer plus rapidement entre epitecien.
Pour avoir bossé dans une boite d'un ancien epitecien, je dois dire que c'est super pratique de se retrouvé ;)


Bah, il y a les réseaux sociaux pour ça. inutile de massacrer le code...

 


Message édité par Emmanuel Delahaye le 11-03-2009 à 01:14:44

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1860166
Un Program​meur
Posté le 11-03-2009 à 08:45:52  profilanswer
 

leoz2004 a écrit :

Erf c'est pas super propre de déclarer et d'initialiser une variable en meme temps (du moins c'est ce qu'on nous apprend ^^)


 
Ah.  Et on peut savoir pourquoi?
 

Citation :

pourquoi utiliser size_t a la place d'int ?


 
Quand on propose un remplacement pour quelque chose, on en respecte le prototype.  Depuis 89 (1989), le prototype de strlen c'est
 

Code :
  1. size_t strlen(char const*);


 
size_t parce que c'est le type destine a contenir des tailles.
const parce que la chaine n'est pas modifiee.
 
On ne vous apprend pas ca?
 

Citation :

Sinon le return avec un calcul a l'interieur c'est source d'erreur ^^


 
Ah?
 

Code :
  1. return expression;


 
est donc plus source d'erreur que
 

Code :
  1. var = expression;
  2. return var;


 
On peut savoir pourquoi?

n°1860233
leoz2004
Posté le 11-03-2009 à 11:21:12  profilanswer
 

Premièrement je viens en paix les gars ^^
Vous avez peut etre sortis les dents parce que je suis a l'epitech (j'ai bien compris qu'on est pas trop aimer ^^)
 
Alors commençons par ce qui ma fait le plus rire ;)
Les reseaux sociaux ne nous permettent pas de comprendre et d'analyser le code plus vite ;) mais elle était sympa ta bague :D
 
Pour size_t merci de l'info, j'avais en fait déjà rencontrer ce genre de  prototypes mais je ne m'y était pas attarder :)
 
Imaginons que l'on doit effectuer dans le return plusieurs opérations d'affiles  
return ((a * b) - (42%2))
Il faut avouer que result = (a * b) - (42%2)
return(result) est moi source d'erreur car plus facilement situable après chacun ses choix :)
 
 
"Erf c'est pas super propre de déclarer et d'initialiser une variable en même temps (du moins c'est ce qu'on nous apprend ^^)" <== Alors je précise que c'est pour les tek1 je crois que les tek2 ont le droit a tout .


---------------
Worldcraze 10loop
n°1860262
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-03-2009 à 12:13:41  profilanswer
 

leoz2004 a écrit :

Premièrement je viens en paix les gars ^^


Et ? On a simplement répondu à tes affirmations étranges. C'est mal ? La plupart des gens qui répondent ici sont des programmeurs chevronnés alors on peut difficilement laisser passer ça.

Citation :


Vous avez peut etre sortis les dents parce que je suis a l'epitech (j'ai bien compris qu'on est pas trop aimer ^^)


Disons que ce n'est pas le première fois que les règles de programmations imposées aux tek1 nous surprennent...
 

Citation :


Alors commençons par ce qui ma fait le plus rire ;)
Les reseaux sociaux ne nous permettent pas de comprendre et d'analyser le code plus vite ;) mais elle était sympa ta bague :D


J'ai peut être mal compris ta phrase :  

Citation :

Disons que sa nous permet de nous repérer plus rapidement entre epitecien.
Pour avoir bossé dans une boite d'un ancien epitecien, je dois dire que c'est super pratique de se retrouvé


Pour ce genre de chose Viadéo est ton ami...
 
 

Citation :

Pour size_t merci de l'info, j'avais en fait déjà rencontrer ce genre de  prototypes mais je ne m'y était pas attarder :)


euh, ce 'genre de prototype' fait parte de la norme qui définit le langage C. Ca aussi, à l'Epitech, on s'assoie dessus ?
 

Citation :

Imaginons que l'on doit effectuer dans le return plusieurs opérations d'affiles  
return ((a * b) - (42%2))
Il faut avouer que result = (a * b) - (42%2)
return(result) est moi source d'erreur car plus facilement situable après chacun ses choix :)


Situable ? Connais pas ce mot. Tu veux dire localisable ? Je ne comprends pas ton argumentation. Tu peux clarifier ?
 

Citation :


"Erf c'est pas super propre de déclarer et d'initialiser une variable en même temps (du moins c'est ce qu'on nous apprend ^^)" <== Alors je précise que c'est pour les tek1 je crois que les tek2 ont le droit a tout .


Et ? Tu en déduis quoi ? Moi, je de vois que de l'incohérence...
 
http://mapage.noos.fr/emdel/goret.htm


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1860268
leoz2004
Posté le 11-03-2009 à 12:20:44  profilanswer
 

Un logiciel code par un epitecien est plus simple pour un autre epitecien a comprendre du fait d'avoir la même norme.
Donc Viadeo n'a rien a voir avec mon argument ^^
 
Maintenant je vois que ce sujet par en troll et n'a aucun interet.
J'ai bien des choses a repondre mais finalement tu/(vous) avez l'air borne.
 
Au revoir et Merci pour tout le poisson.


---------------
Worldcraze 10loop
n°1860285
Un Program​meur
Posté le 11-03-2009 à 12:57:16  profilanswer
 

leoz2004 a écrit :

avez peut etre sortis les dents parce que je
suis a l'epitech (j'ai bien compris qu'on est pas trop aimer ^^)


 
Hypothese fausse.  Ce que je n'aime pas c'est l'arrogance, qu'elle vienne
de quelqu'un de l'Epitech ou d'ailleurs, je m'en fous.  Mais j'avoue que
quand il n'y a rien derriere pour la justifier, c'est plus amusant.
 
Tres serieusement, remets-toi en question avant de te poser en martyr de
ton ecole, tu lui fais plus de mal que de bien.
 

Citation :

Pour size_t merci de l'info, j'avais en fait déjà rencontrer ce
genre de prototypes mais je ne m'y était pas attarder :)


 
Ca denote une longue et variee experience.
 

Citation :

Imaginons que l'on doit effectuer dans le return plusieurs opérations d'affiles  
return ((a * b) - (42%2))
Il faut avouer que result = (a * b) - (42%2)
return(result) est moi source d'erreur car plus facilement situable après chacun ses choix :)


 
J'ai du mal a avouer quoi que ce soit d'autre que je ne vois pas la
difference fondamentale.
 

Citation :

"Erf c'est pas super propre de déclarer et d'initialiser une
variable en même temps (du moins c'est ce qu'on nous apprend ^^)" <== Alors
je précise que c'est pour les tek1 je crois que les tek2 ont le droit a
tout .


 
J'ai vu pas mal de conventions exigeant l'initialisation a la declaration,
j'ai meme vu des langages qui l'imposent.  Mais je ne me souviens pas avoir
vu de conventions l'interdisant.
 

leoz2004 a écrit :

Un logiciel code par un epitecien est plus
simple pour un autre epitecien a comprendre du fait d'avoir la même norme.
Donc Viadeo n'a rien a voir avec mon argument ^^


 
J'en deduis donc que  
- les epiteciens ne respectent pas les conventions de l'entreprise, ils
  utilisent les leurs.
- les epiteciens ont du mal a comprendre les programmes ne respectant pas
  leurs conventions.

n°1860447
Wyruz
Posté le 11-03-2009 à 17:55:22  profilanswer
 

leoz2004 a écrit :

Premièrement je viens en paix les gars ^^
Vous avez peut etre sortis les dents parce que je suis a l'epitech (j'ai bien compris qu'on est pas trop aimer ^^)


 
Ce n'est pas de la critique car tu viens d'Epitech (d'ailleurs j'en suis ...), mais simplement qu'il ne faut pas crier haut et fort des affirmations simplement car tu les a entendu, alors même qu'elle ne sont pas justifiables !
 
 

Citation :

"Erf c'est pas super propre de déclarer et d'initialiser une variable en même temps (du moins c'est ce qu'on nous apprend ^^)" <== Alors je précise que c'est pour les tek1 je crois que les tek2 ont le droit a tout .


 
Raison de plus, si c'est autorisé par la suite c'est bien que c'est totalement correct !
 
D'ailleurs si tu lit le K&R, les calculs dans les return et les déclarations/initialisations sont courantes !
Et remettre en cause le K&R est tout de même assez osé  :jap:


Message édité par Wyruz le 11-03-2009 à 17:57:56
mood
Publicité
Posté le   profilanswer
 


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

  Une question sur les suites/chaine de caracteres:)

 

Sujets relatifs
Quelques question sur mon script contact.[RESOLU] Découpage de chaine
question basique sur le modèle objetComparer un caractere precis d'une chaine (variable)
caracteres non imprimables en shell[JS] Question basique de fonctions...
Question débutant sur errorlevelPetite question à propos de Flash
Petite question sur un on releaseBatch windows: parcours de fichier, et extraction de chaîne.
Plus de sujets relatifs à : Une question sur les suites/chaine de caracteres:)


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