Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème bizarre

38 réponses
Avatar
iTRiX
Bonjour
Je suis étudiant en informatique et j'ai un petit programme à faire en C++.
J'ai un problème assez étrange dont je suis incapable de trouver la
solution.

Le problème se situe au niveau de la fonction sepchamps. Son rôle est de
séparer les champs selon les * du fichier trans.txt. Voici son contenu :

020104 * Claude Lesage * Portes CLAP * 203456 * 2 *
200.50
080404 *PAULE Thorin* Serres Bulbes* 056753 *12* 5.80
121003* alain provost * Cimenterie Forte * 208935*20*8.55

Il semblerait que, par exemple, lorsque j'appelle cette fonction avec date,
il écrit également dans nom. Lorsque je la lance avec nom, elle écrit
également dans date. C'est peut-être juste une petite erreur mais je ne la
vois pas.

L'exercice consistera plus tard à faire une mise en forme correcte pour
l'affichage mais je ne suis pas rendu là. Le fichier chn.cpp dont on doit se
servir contient des fonctions semblables à celle de string.h. J'ai inclus
son listing à la fin mais je doute que l'erreur provienne de là.

J'espère avoir été assez clair dans mon problème et merci beaucoup à tous
ceux qui prendront de leur temps pour m'aider!! :-)
Note: On utilise le compilateur Borland C++ 5.0

Voici donc le code de mon programme jusqu'à maintenant:
#include <string.h>
#include "chn.cpp"
#include <iostream.h>
#include <fstream.h>
#include <conio.h>

// Variables globales
int tauxtx,lg;
ifstream f;
char ligne[100], date[10], nom[30], fournisseur[45], produit[60],
quantite[85], prixunit[100];

// Prototypes
void liretx();
void ouv();
void lirel();
void traiter();
void sepchamps(char a[]);
void fermer();

// Fonction principale
void main()
{
liretx();
ouv();
lirel();
traiter();
fermer();
}

// Lire le taux de taxe
void liretx()
{
cout << "Veuillez entrer le taux de taxation a appliquer\n"; cin >> tauxtx;
}

// Ouvrir le fichier
void ouv()
{
f.open("c:\\trans.txt",ios::in);
}

// Lire une ligne du fichier
void lirel()
{
f.getline(ligne,100);
}

// Traiter
void traiter()
{
lg=Ch_Longueur(ligne);
sepchamps(date);
sepchamps(nom);
sepchamps(fournisseur);
sepchamps(produit);
sepchamps(quantite);
sepchamps(prixunit);
cout << nom << "\n" << fournisseur << "\n" << produit << "\n" << quantite <<
"\n" << prixunit << "\n";
getch();
}

// Séparer les champs de la ligne
void sepchamps(char a[])
{
int k;
k=Ch_Rech(ligne,'*');
Ch_Copie_Nb(a,ligne,k-1);

strrev(ligne);
Ch_Copie_Nb(ligne,ligne,lg-k);
strrev(ligne);
}

// Fermer le fichier
void fermer()
{
f.close();
}


LISTING DE CHN.CPP
//Bibliothèques requises
#include <iostream.h>
#include <conio.h>
#include <string.h>

// Protocoles
void Ch_Init_Nb(char X[], char C, int Nb);
int Ch_Lire_Max(char X[], int Max);
int Ch_Longueur(char X[]);
void Ch_Copie(char CR[], char CE[]);
void Ch_Copie_Nb(char CR[], char CE[], int Nb);
void Ch_Concat(char CR[], char CE[]);
void Ch_Concat_Nb(char CR[], char CE[], int Nb);
int Ch_Rech(char X[], char C);

// Fonction pour initialiser selon un caractère particulier
void Ch_Init_Nb(char X[], char C, int Nb)
{
for(int i=0; i<Nb; i++)
X[i] = C;
X[Nb] = '\0';
}

// Fonction pour lire une chaîne selon un max de caractère
int Ch_Lire_Max(char X[], int Max)
{
int i=0;
char tmp;
tmp=getche();
while(i<(Max-1) && tmp!=13)
{
X[i]=tmp;
tmp=getche();
i=i+1;
}

return i;
}

// Fonction pour obtenir la longueur d'une chaîne
int Ch_Longueur(char X[])
{
int i=0;
while(X[i]!='\0')
{
i=i+1;
}
return i;
}

// Fonction pour copier une chaîne d'une variable à une autre
void Ch_Copie(char CR[], char CE[])
{
int i=0;
while(CE[i]!='\0')
{
CR[i]=CE[i];
i++;
}
CR[i]='\0';
}

// Fonction pour copier une partie d'une chaîne dans une autre
void Ch_Copie_Nb(char CR[], char CE[], int Nb)
{
int i=0;
while(CE[i]!='\0' && i<Nb)
{
CR[i]=CE[i];
i++;
}
CR[i]='\0';
}

// Fonction de concaténation
void Ch_Concat(char CR[], char CE[])
{
int k;
k=Ch_Longueur(CR);
Ch_Copie(CR+k,CE);
}

// Fonction de concaténation limitée
void Ch_Concat_Nb(char CR[], char CE[], int Nb)
{
int k;
k=Ch_Longueur(CR);
Ch_Copie_Nb(CR+k,CE,Nb);
}

// Fonction de recherche de caractère
int Ch_Rech(char X[], char C)
{
int Pos=-1;
for(int i=0;i<50;i++)
{
if(X[i]==C)
{
Pos=i;
i=50;
}
}
return (Pos+1); //Valeur réelle
}

8 réponses

1 2 3 4
Avatar
Gabriel Dos Reis
"Alain Naigeon" writes:

| (certains profs oublient que l'apprentissage n'est pas seulement
| une question d'exposition logique et d'acquisition intellectuelle,
| il y a aussi un processus de maturation ; comment expliquer,
| sinon, qu'on puisse avancer plus en 3 cours de 2 heures espacés
| d'une semaine, qu'en un cours de 6 h ? Tout prof a constaté ça,
| je suppose - j'espère ! Donc un truc vu moins longtemps est moins
| acquis... CQFD


si tu exposes quelque chose en début « d'année », les élèves ont
tendance à croire que c'est facile ; la même chose expliquée expliquée
vers la fin de l'année a tendance à passer comme difficile. On a fait
« l'expérience » avec « itération et récursivité » : il y a une
partie qui pense que « récursivité » est facile et que « itération »
est dure, une autre partie des élèves placent les choses dans l'ordre
inverse :-)

-- Gaby
Avatar
Michel Michaud
Dans news:407c3974$0$510$, Alain
La limite de ce point de vue : à force d'être vues plus tard, donc
moins longtemps, les choses difficiles le sont encore plus - on
devrait commencer par les pointeurs (et 7 bémols à la clé) :-)


J'ai bien vu ton :-), mais en réalité, il faut simplement comprendre
que, pour paraphraser BS, « plus tard » doit vouloir dire « aussitôt
que nécessaire, mais pas avant ». En gros, ne pas montrer à utiliser
les pointeurs pour des cas où ce n'est pas ce qu'il faut utiliser et
ne pas hésiter à les montrer lorsqu'ils deviennent nécessaires.

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Michel Michaud
Dans news:, Gabriel Dos
si tu exposes quelque chose en début « d'année », les élèves ont
tendance à croire que c'est facile ; la même chose expliquée
expliquée vers la fin de l'année a tendance à passer comme
difficile.


Ah bon... Je crois que c'est sûrement vrai si tu expliques cette
règle aux élèves :-) Sinon je n'ai jamais observé ça. Ce que je
peux comprendre, c'est que l'on construit souvent sur ce qui vient
d'être vu, alors pour comprendre l'étape N, il faut comprendre
les étapes N-1, N-2, etc., ce qui est théoriquement plus
difficile. Par contre, il m'arrive de donner des cours où le
sujet N ne dépend en rien des sujets précédents et je suis assez
certain que la difficulté perçue n'était pas différente de la
difficulté réelle...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Gabriel Dos Reis
"Michel Michaud" writes:

| Dans news:, Gabriel Dos
| > si tu exposes quelque chose en début « d'année », les élèves ont
| > tendance à croire que c'est facile ; la même chose expliquée
| > expliquée vers la fin de l'année a tendance à passer comme
| > difficile.
|
| Ah bon... Je crois que c'est sûrement vrai si tu expliques cette
| règle aux élèves :-) Sinon je n'ai jamais observé ça.

J'ai empiriquement observé ce fait en tant qu'élève, prof et
« observateur extérieur » ici. Je ne la prendrait pas comme une loi,
mais comme une donée empirique hautement non néglibeable à laquelle je
confronterai mon modèle mental d'élève. Le Père semble concourrir --
ceci que « élève » soit un débutant complet ou quelqu'un avec une
certaine expérience professionelle.

| Ce que je
| peux comprendre, c'est que l'on construit souvent sur ce qui vient
| d'être vu, alors pour comprendre l'étape N, il faut comprendre
| les étapes N-1, N-2, etc., ce qui est théoriquement plus
| difficile.

Ça, c'est le modèle linéaire classique qu'on voudrait idéalement poser
comme une loi. Mon expérience est que rencontre quelques difficcultés
sur le terrain.

-- Gaby
Avatar
Gabriel Dos Reis
Fabien LE LEZ writes:

| On Tue, 13 Apr 2004 21:03:27 +0200, "Alain Naigeon"
| wrote:
|
| >(et 7 bémols à la clé)
|
| Notons au passage que si les profs ont le do large, avec sept bémols
| ils se retrouvent entre le fa et le sol. Et ils n'hésitent pas à
| baisser d'un ton trois fois et demie...

Je ne sais pas. Probablement qu'Alain Naigean, avec son expérience de
prof de Physique et « amateur » musicien, a quelque eclaircissement
personnel à apporter sur le sujet.

-- Gaby
Avatar
Fabien LE LEZ
On Tue, 13 Apr 2004 21:03:27 +0200, "Alain Naigeon"
wrote:

(et 7 bémols à la clé)


Notons au passage que si les profs ont le do large, avec sept bémols
ils se retrouvent entre le fa et le sol. Et ils n'hésitent pas à
baisser d'un ton trois fois et demie...

--
;-)
FLL, Epagneul Breton

Avatar
kanze
Gabriel Dos Reis wrote in message
news:...
"Alain Naigeon" writes:

| (certains profs oublient que l'apprentissage n'est pas seulement une
| question d'exposition logique et d'acquisition intellectuelle, il y
| a aussi un processus de maturation ; comment expliquer, sinon, qu'on
| puisse avancer plus en 3 cours de 2 heures espacés d'une semaine,
| qu'en un cours de 6 h ? Tout prof a constaté ça, je suppose -
| j'espère ! Donc un truc vu moins longtemps est moins acquis... CQFD

si tu exposes quelque chose en début « d'année », les élèves ont
tendance à croire que c'est facile ; la même chose expliquée expliquée
vers la fin de l'année a tendance à passer comme difficile.


Moi, je croyais que c'était : si tu exposes quelque chose en début
d'année, les élèves auraient tendance à l'avoir oublier en fin de
l'année.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Avatar
Alain Naigeon
"Gabriel Dos Reis" a écrit dans le message
news:
Fabien LE LEZ writes:

| On Tue, 13 Apr 2004 21:03:27 +0200, "Alain Naigeon"
| wrote:
|
| >(et 7 bémols à la clé)
|
| Notons au passage que si les profs ont le do large, avec sept bémols
| ils se retrouvent entre le fa et le sol. Et ils n'hésitent pas à
| baisser d'un ton trois fois et demie...

Je ne sais pas. Probablement qu'Alain Naigean, avec son expérience de
prof de Physique et « amateur » musicien, a quelque eclaircissement
personnel à apporter sur le sujet.

-- Gaby


Peut-être que ça nous entrainerait, toutefois,
dans une fugue à plusieurs hors sujet.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France

1 2 3 4