Generateur de tel avec debut et fin

Résolu
Signaler
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011
-
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011
-
bonjour je cherche un code simple qui me permet en entrant le debut et la fin de génerer des numero tel avec possibilite de changer le prefixe ici (02)ex: debut (02)03040506 fin (02)03040510 le code doit me donner les 4 numero cordialement

16 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Ah bin non zut j'avais oublié de mettre le zéro terminal.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int IsNumeric(char nChar)
{
  return ((nChar >= '0') && (nChar <= '9'));
}

int IsPhoneNumber(char* lpNumber)
{
  int nResult;
  int nI;

  nResult = 0;

  if (strlen(lpNumber) != 10)
  {
    printf("Un numéro de téléphone fait 10 chiffres\n");
    goto the_end;
  }
  
  if (lpNumber[0] != '0')
  {
    printf("Un numéro de téléphone commence par zéro\n");
    goto the_end;
  }

  for (nI = 1; nI < 10; nI++)
    if (! IsNumeric(lpNumber[nI]))
    {
      printf("Un numéro de téléphone n'est composé que de chiffres\n");
      goto the_end;
    }

  nResult = 1;
the_end:
  return nResult;
}

int GetPhoneNumber(char* lpMessage)
{
  char lpNumber[256];

  do
  {
    printf(lpMessage);
    scanf("%s", lpNumber);
  }
  while (! IsPhoneNumber(lpNumber));

  return atoi(lpNumber);
}

char* IntToPhoneNumber(int nNumber, char* lpBuffer)
{
  char lpTemp[20];
  int nI, nJ;

  sprintf(lpTemp, "%010d\n", nNumber);
  nJ = 0;
  for (nI = 0; nI < 10; nI += 2)
  {
    lpBuffer[nJ] = lpTemp[nI];
    lpBuffer[nJ + 1] = lpTemp[nI + 1];
    lpBuffer[nJ + 2] = ' ';
    nJ += 3;
  }
  lpBuffer[nJ - 1] = 0;
  return lpBuffer;
}

int main ()
{
  FILE* lpFile;
  char lpNumber[20];
  int nBeginning;
  int nEnd;
  int nI;

  nBeginning = GetPhoneNumber("Début ?\n");
  nEnd = GetPhoneNumber("Fin ?\n");

  lpFile = fopen("resultats.txt", "w+");
  if (! lpFile)
  {
    printf("Echec de l'ouverture du fichier\n");
    return 1;
  }

  for (nI = nBeginning; nI <= nEnd; nI++)
  {
    IntToPhoneNumber(nI, lpNumber);
    fprintf(lpFile, "%s\n", lpNumber);
  }

  fclose(lpFile);

  return 0;
}
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Salut,

J'ai pas tout compris, surtout niveau préfixe, mais voilà quelques idées de code :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int IsNumeric(char nChar)
{
  return ((nChar >= '0') && (nChar <= '9'));
}

int IsPhoneNumber(char* lpNumber)
{
  int nResult;
  int nI;

  nResult = 0;

  if (strlen(lpNumber) != 10)
  {
    printf("Un numéro de téléphone fait 10 chiffres\n");
    goto the_end;
  }
  
  if (lpNumber[0] != '0')
  {
    printf("Un numéro de téléphone commence par zéro\n");
    goto the_end;
  }

  for (nI = 1; nI < 10; nI++)
    if (! IsNumeric(lpNumber[nI]))
    {
      printf("Un numéro de téléphone n'est composé que de chiffres\n");
      goto the_end;
    }

  nResult = 1;
the_end:
  return nResult;
}

int GetPhoneNumber(char* lpMessage)
{
  char lpNumber[256];

  do
  {
    printf(lpMessage);
    scanf("%s", lpNumber);
  }
  while (! IsPhoneNumber(lpNumber));

  return atoi(lpNumber);
}

int main ()
{
  int nBeginning;
  int nEnd;
  int nI;

  nBeginning = GetPhoneNumber("Début ?\n");
  nEnd = GetPhoneNumber("Fin ?\n");

  printf("Numéros :\n");

  for (nI = nBeginning; nI <= nEnd; nI++)
    printf("%010d\n", nI);

  return 0;
}
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

Merci pour votre reponse à mon pb rt15 votre code est trés interessant il se raproche enormément de mon pb cependant il n'est pas fonctionnel..en effet le code doit me generer toute les possibilite de numero telephonique entre un debut et une fin logé ds un fichier txt qu'on nome tk15.txt par ex..
je récapitule,
exemple: debut 04 01 02 03 04
fin 04 01 02 03 07

résulta : 04 01 02 03 04
04 01 02 03 05
04 01 02 03 06
04 01 02 03 07
le prefix est inutile
trés cordialement
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Tu n'avais pas parlé de fichier !
Et je ne tenais pas à faire l'exercice à ta place, mais te donner une piste.

Pour la lecture du fichier, tu peux par exemple utiliser fscanf. Combiné à mon code, tu as tout ce qu'il faut pour t'en sortir.

Au boulot !
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

effectivement nous avions pas parlé de fichier text cependant en posan le pb de cette maniere je me sui rendu compt que le pb est plus simple..donc un code simple différent de l'autre..si je connaissai la programatin croyé moi que je rendrai bien d sevice sur ce forum d'aide..cependant je reste coincé sur un petit code qui me bloque mon projet ;)
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

voici mon code



#include <stdio.h>
#define nb 99 /* indiquer ici le nombre max du numero */
/*
gcc -o L49 L49.c
*/int main(void) {
int i,j,k,m,n;
FILE * fichier; /* pointeur sur le fichier de sauvegarde des resultats */
fichier=fopen("resultats.txt","w"); /* resultats.txt est le nom du fichier */

printf("Debut du programme a\nPatientez...\n\n");
for(i=332;i>=nb;i++)
for(j=00;j<=nb;j++)
for(k=00;k<=nb;k++)
for(m=00;m<=nb;m++)
for(n=m+01;n<=nb-1;n++)
fprintf(fichier,"%d %d %d %d %d\n",i,j,k,m,n); /* ecrit les combinaisons dans le fichier */
fclose(fichier);
printf("Le programme a termine. Fin;)\n\n");
return 0;
}
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

mon pb avec mon code c simple il me permet pas de limiter les valeur il ne fait qu"ajouter+1
de plus il ne met pas 2 decimale ex 2 au lieu de 02 cordialement
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Ah le fichier c'est pour la sortie ? Je pensais que tu voulais récupérer l'intervalle dans un fichier...

Bin revoilà mon programme avec écriture dans un fichier. Concernant le 2 au lieu de 02, bin tu as l'exemple dans mon code où je précise la taille des nombres à écrire (%02d, Doc ici).

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int IsNumeric(char nChar)
{
  return ((nChar >= '0') && (nChar <= '9'));
}

int IsPhoneNumber(char* lpNumber)
{
  int nResult;
  int nI;

  nResult = 0;

  if (strlen(lpNumber) != 10)
  {
    printf("Un numéro de téléphone fait 10 chiffres\n");
    goto the_end;
  }
  
  if (lpNumber[0] != '0')
  {
    printf("Un numéro de téléphone commence par zéro\n");
    goto the_end;
  }

  for (nI = 1; nI < 10; nI++)
    if (! IsNumeric(lpNumber[nI]))
    {
      printf("Un numéro de téléphone n'est composé que de chiffres\n");
      goto the_end;
    }

  nResult = 1;
the_end:
  return nResult;
}

int GetPhoneNumber(char* lpMessage)
{
  char lpNumber[256];

  do
  {
    printf(lpMessage);
    scanf("%s", lpNumber);
  }
  while (! IsPhoneNumber(lpNumber));

  return atoi(lpNumber);
}

char* IntToPhoneNumber(int nNumber, char* lpBuffer)
{
  char lpTemp[20];
  int nI, nJ;

  sprintf(lpTemp, "%010d\n", nNumber);
  nJ = 0;
  for (nI = 0; nI < 10; nI += 2)
  {
    lpBuffer[nJ] = lpTemp[nI];
    lpBuffer[nJ + 1] = lpTemp[nI + 1];
    lpBuffer[nJ + 2] = ' ';
    nJ += 3;
  }
  return lpBuffer;
}

int main ()
{
  FILE* lpFile;
  char lpNumber[20];
  int nBeginning;
  int nEnd;
  int nI;

  nBeginning = GetPhoneNumber("Début ?\n");
  nEnd = GetPhoneNumber("Fin ?\n");

  lpFile = fopen("resultats.txt", "w+");
  if (! lpFile)
  {
    printf("Echec de l'ouverture du fichier\n");
    return 1;
  }

  for (nI = nBeginning; nI <= nEnd; nI++)
  {
    IntToPhoneNumber(nI, lpNumber);
    fprintf(lpFile, "%s\n", lpNumber);
  }

  fclose(lpFile);

  return 0;
}
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

il ya une erreur dans votre code le fichier de sorti doit indiquer uniquement lé numero
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Gné ?
Parce qu'il indique quoi en plus ?
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

testez-vous le code av de le poster?
ceci dit grace à vous mon code et fonctionnel
il reste juste une corection a apporter a votre code pour qu il affiche uniquement les chiffre et non pas en face d numero,votre signature..

le sujet est biento resolu cela depend de vous!!
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
il reste juste une corection a apporter a votre code pour qu il affiche uniquement les chiffre et non pas en face d numero,votre signature


Heu... Désolé, mais je ne comprends pas du tout ce que tu dis. Ma signature ???
Qu'y a t'il en trop ?
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

voici le resultat q'affiche windev

01 02 03 04 05 wžÀw?$=
01 02 03 04 06 wžÀw?$=
01 02 03 04 07 wžÀw?$=
01 02 03 04 08 wžÀw?$=
01 02 03 04 09 wžÀw?$=
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

le resultat est celui du fichier de sorti
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Windev ?

Que vient faire windev là-dedans ?
Il est censé traité le fichier de résultat ?

Tu peux essayer d'ouvrir le fichier résultat avec un éditeur de texte (notepad, wordpad...)

S'il est affiché correctement, c'est que ton souci est du côté de windev.
Messages postés
13
Date d'inscription
samedi 2 juin 2007
Statut
Membre
Dernière intervention
3 janvier 2011

merci pour ton aide rt15 le sujet est résolu