Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/04/2007, à 14:50

aganim07

Questions en C/C++

Bonjour à tous !

J'ai deux questions urgentes à vous poser en C/C++. Ce sont des questions typiques mais je ne trouve pas de réponses satisfaisantes sur Internet. Je me lance :

1. Comment faire pour compter le nombre de lignes et de colonnes contenues dans un fichier de données machin.dat ? (surtout le nombre de lignes)

2. Comment faire pour que la valeur d'un nombre entier renseignée par l'utilisateur soit à coup sûre un nombre entier ? On peut faire une sorte de test qui dirait : "Ok vous avez bien rentré un nombre entier et on peut continuer". Ou bien : "Attention vous devez rentrer un nombre entier, recommencez".

Ces questions sont urgentes dans le cadre d'un projet de groupe... snif hmm

Aidez-moi svp ! D'avance merci !!

Dernière modification par slasher-fun (Le 22/04/2011, à 14:32)

Hors ligne

#2 Le 26/04/2007, à 14:56

Desintegr

Re : Questions en C/C++

1)
Pour le nombre de lignes, une méthode simple : tu lis le fichier entièrement caractère par caractère et tu comptes le nombre de "\n"

Pour le nombre de colonnes, tu comptes le nombre de caractère par ligne (avant "\n" donc) et tu gardes le max.

2) Tu demandes à l'utilisateur une chaine de caractère et tu vérifies que cette chaine ne contient que des chiffres. Ensuite tu convertis cette chaine en entier.

Dernière modification par Desintegr (Le 26/04/2007, à 14:58)


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#3 Le 26/04/2007, à 14:58

aganim07

Re : Questions en C/C++

Euh d'ac mais en fait comment je fais tout cela ? Je n'ai vraiment aucune idée des commandes qu'il faut taper en C pour le réaliser. Pourtant j'ai déjà fait des programmes avant mais là je coince !

Merci de ta patience smile

Hors ligne

#4 Le 26/04/2007, à 15:02

Desintegr

Re : Questions en C/C++

Quelques fonctions utiles :
  - ctype.h : int isdigit(int c); vérifie si c est bien un chiffre
  - stdlib.h : int atoi(const char *); convertir une chaine en entier
  - stdio.h : int fgetc(FILE *stream); lit un caractère dans un fichier

Et pour lire un fichier en C : http://www.ltam.lu/cours-c/prg-c140.htm et pages suivantes.

Je ne te donnerai pas la solution car ça n'a aucun intérêt. Je te donne simplement quelques pistes pour t'aider.

Dernière modification par Desintegr (Le 26/04/2007, à 15:08)


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#5 Le 26/04/2007, à 15:48

aganim07

Re : Questions en C/C++

Je suis en train de tester ça :

do {
cout << "Combien d'actions sont présentes dans votre portfolio ? [nombre entier]" << endl;
cin >> N;
}
while((N%1) != 0);

Hors ligne

#6 Le 26/04/2007, à 15:53

Watchwolf

Re : Questions en C/C++

il se passe quoi si tu met N de type entier ? ca plante a la lecture ?
Sinon ta technique devrait fonctionner, c'est ce a quoi je pensait.

Hors ligne

#7 Le 26/04/2007, à 16:06

aganim07

Re : Questions en C/C++

do {
cout << "Combien d'actions sont présentes dans votre portfolio ? [nombre entier]" << endl;
cin >> temp;
}
while((temp%1) != 0);
   
N = (int)temp;    // On passe la variable double temp en entier N

avec temp, un double
avec N, un entier

Je crois que ça devrait passer sous g++. G pas de compilateur sous la main...

Hors ligne

#8 Le 26/04/2007, à 19:28

aganim07

Re : Questions en C/C++

aganim07 a écrit :

do {
cout << "Combien d'actions sont présentes dans votre portfolio ? [nombre entier]" << endl;
cin >> temp;
}
while((temp%1) != 0);
   
N = (int)temp;    // On passe la variable double temp en entier N

avec temp, un double
avec N, un entier

Je crois que ça devrait passer sous g++. G pas de compilateur sous la main...

Ca compile pas... et m**** !!

Hors ligne

#9 Le 26/04/2007, à 19:52

Desintegr

Re : Questions en C/C++

C'est pas compliqué pourtant, 5 lignes à tout casser....

#include <cctype>
#include <cstdio>
#include <iostream>
#include <string>

using namespace std;

bool isInteger(char* s) {
   for(uint i=0; i<strlen(s); i++)
      if(!isdigit(s[i]))
         return false;
   return true;
}

int main() {
   char* temp = "1341451";
   if(isInteger(temp))
      cout << atoi(temp) << endl; // atoi pour obtenir un entier au final
}

Dernière modification par Desintegr (Le 26/04/2007, à 20:05)


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne

#10 Le 26/04/2007, à 22:26

aganim07

Re : Questions en C/C++

et je code jusqu'au bout de la nuit nuit nuit !! lol

Hors ligne

#11 Le 27/04/2007, à 21:19

aganim07

Re : Questions en C/C++

J'ai une nouvelle question svp. Pourquoi ceci ne fonctionne pas :

cout << "Entrez l'adresse du fichier de données" << endl;
    cin >> adresse;
    fflush(stdin);

    ifstream fichier(adresse);

avec adresse de type char*

L'idée est que la variable adresse contienne le nom du fichier de données utilisé par la suite par mon programme.

Pouvez-vous encore une fois m'aider svp ?

Merci !! smile

Hors ligne

#12 Le 27/04/2007, à 23:09

Desintegr

Re : Questions en C/C++

Tu ne peux pas faire de cin avec un char*

En C++, il vaut mieux utiliser les string, c'est beaucoup plus simple.

string adresse;
cin >> adresse;

Ou sinon,

string adresse;
getline(cin, adresse);

Et pour convertir une string en char*, tu as la méthode c_str().


Hoc Volo, Sic Jubeo !
Mon wiki : http://desintegr.free.fr

Hors ligne