begin process at 2012 05 29 08:05:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Base de données

 > 

Autre

 > 

manipulation des entiers de type char


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

manipulation des entiers de type char

dimanche 20 décembre 2009 à 17:55:23 | manipulation des entiers de type char

gnichiarsenal

je prépare un miniprojet en c pour la manipulation des entiers de types char ,la conversion de char à int,faire un menu pour le choix des différentes fonctions.j'ai besoin de votre aide et merci d'avance
dimanche 20 décembre 2009 à 22:45:07 | Re : manipulation des entiers de type char

CptPingu

Administrateur CodeS-SourceS
Bonjour.
Quelle est la question précise ?
lundi 21 décembre 2009 à 16:28:26 | Re : manipulation des entiers de type char

gnichiarsenal

bonjour
il faut que je créé un menu pour la manipulation des entiers représentés sous la formes chaines de caractères.les fonctions sont:
1-une fonction qui à partir d'un entier construit sa représentation chaines de caratères
2-une fonction qui permet de lire/écrire des entiers de grandes tailles dans des fichiers texte
3-une fonctions permettant de manipuler des matrices contenants des entiers représentés sous la forme chaines de caractères(lecture/écriture en fichier,addition,produit des 2 matrices,etc.)
Et puis je doit comparer les performances avec les opérations sur les entiers en représentation propre au langage c.
merci d'avance
lundi 21 décembre 2009 à 16:30:54 | Re : manipulation des entiers de type char

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
C'est sans doute un très bon exercice. Mais où est le problème ?
Montre nous ton code, et l'endroit précis ou tu bloques.
mardi 22 décembre 2009 à 17:40:25 | Re : manipulation des entiers de type char

gnichiarsenal

bonjour
bon ,je suis débutant en programmation c
la représentation en chaine de caractères par exemple pour 13 est "13",j'ai un probleme d'extraire la chaine 13,surtout qu'on ne connait pas la taille de la représentation.
j'ai fait deux fonctions:la première est d'extraire une sous chaine
/*cette fonction permer d'éxraire une sous chaine d'une chaine de caractères*/
char *str_sub (const char *s, unsigned int start, unsigned int end)
{
char *new_s = NULL;
if (s != NULL && start < end)
{
/* (1)*/
new_s = malloc (sizeof (*new_s) * (end - start + 2));
if (new_s != NULL)
{
int i;
/* (2) */
for (i = start; i <= end; i++)
{
/* (3) */
new_s[i-start] = s[i];
}
new_s[i-start] = '\0';
}
else
{
fprintf (stderr, "Memoire insuffisante\n");
exit (EXIT_FAILURE);
}
}
return new_s;
}
il y a pas de problème là dans.
la seconde fonction permet de confirmer que l'entrée est une représentation en chaine de caractère et voila mon code
Code C/C++ :

/*cette fonction permet de lire un entier représenté
sous forme chaine de caractère*/
void read ( char *x)
{

x = malloc(sizeof(*x)*256);//on ne sait pas sa taille
char *ch = malloc(sizeof(*x)-2);
printf("donner l'entier représenté sous sa forme chaine de caractères\n");
scanf("%s",x);
*ch=*str_sub(*x,1, strlen (x));
while(x[0]!="'"|x[strlen (x)]!="'"|isdigit(ch)!=1)
printf("donner l'entier représenté sous sa forme chaine de caractères\n");
}
et j'arrive pas à déterminer mes erreurs
bon je me bloque bien avec cette fonction qui semble facile à coder.
En plus je n'est pas d'idée pour faire la 2 eme fonction de ce mini-projet
mardi 22 décembre 2009 à 17:55:46 | Re : manipulation des entiers de type char

CptPingu

Administrateur CodeS-SourceS

une fonction qui à partir d'un entier construit sa représentation chaines de caratères



Tu as deux solutions pour réaliser ceci:
1) Utiliser realloc, qui permet de modifier la taille d'un espace mémoire (donc d'un tableau).
2) Calculer le nombre de chiffre que possède un entier, afin d'allouer exactement la taille nécessaire.
Ex: 11243 => 5, 3 => 1, 98530234 => 8.

Je te conseil la seconde méthode, pas très compliqué, et qui évite de réallouer constamment ta mémoire.
Coupe ceci, en trois fonctions:

* int checkNum(char* s), qui vérifie que la chaîne passée est bien un nombre. Indice: juste vérifier que chacun des caractères est bien compris entre le caractère "0" et le caractère "9". Renvoyer vrai ou faux.
* int getNumSize(int nb), qui prend un nombre en argument, et retourne sa taille. Indice: il suffit de compter combien de fois on peut le diviser par 10 ;)
* char* intToString(int nb), qui convertit un entier en chaîne. Indice: réutilise checkNum pour vérifier que c'est bien un chiffre et getNumSize pour allouer pile la bonne taille via malloc.

Fais déjà ceci, et tu auras le premier point de fait. On verra la suite après.
mardi 22 décembre 2009 à 18:55:44 | Re : manipulation des entiers de type char

gnichiarsenal

merci bien
mon problème n'est pas de faire la fonction qui à partir d'un entier construit sa représentation en chaine de caractère.
je viens de discuter avec des collègues le mini-projet,je vous écrit l'énoncé tel quel est:
considérons les nombres entiers représentés sous la forme des chaînes de caractères
1/construire une fonction qui permet d'ajouter deux entiers représentés sous forme des chaines de caractères.
ce que j'ai compris de cette question est que l'entrée est deux entiers représentés sous forme des chaines de caractères.alors là,je dois lire l'entrée et la convertir en entiers et puis faire l'instruction de somme
mardi 22 décembre 2009 à 20:44:35 | Re : manipulation des entiers de type char

CptPingu

Administrateur CodeS-SourceS

mon problème n'est pas de faire la fonction qui à partir d'un entier construit sa représentation en chaine de caractère.


C'est pourtant ce que tu m'as décris dans ton précédent post !


ce que j'ai compris de cette question est que l'entrée est deux entiers représentés sous forme des chaines de caractères.alors là,je dois lire l'entrée et la convertir en entiers et puis faire l'instruction de somme


Surtout pas ! L'exercice qu'on te demande, s'appelle une bistromathique. C'est une technique qui permet de gérer des nombres d'une taille très grande (taille qui ne rentrerait pas dans un entier). Si tu convertis en entier, tu perds tout l'intérêt !

Pour additionner deux chaînes de caractères représentant des entiers, il va falloir que tu te souviennes de tes cours de primaires. Quand tu étais petit, tu posais sûrement tes additions sur papiers. Tu partais de la droite, tu additionnais les chiffres, un à un, et tu gardais une retenu, si nécessaire.

Et bien pour réaliser cet exercice, c'est le même principe. Tu pars vers la fin de tes chaînes de caractères, et tu additionnes les éléments un à un, en gardant une retenue, si nécessaire. Le résultat tiendra dans un tableau, dont la taille est forcément comprise entre (taille de la plus grande chaîne) et (taille de la plus grande chaîne + 1).

Ex:
"1234" + "859"

Etape 1:

"1234" => premier tableau (taille 4)
"859" => deuxième tableau (taille 3)
-------
"....." => tableau de résultat (taille 5)
ret = 0 => retenu

Etape 2:

tab1[3] + tab2[2] + ret = 4 + 9 + 0 = 13, soit 3 retient 1

"1234" => premier tableau (taille 4)
"859" => deuxième tableau (taille 3)
-------
"....3" => tableau de résultat (taille 5)
ret = 1 => retenu

Etape 3:

tab1[2] + tab2[1] + ret = 3 + 5 + 1 = 9, soit 9 retient 0

"1234" => premier tableau (taille 4)
"859" => deuxième tableau (taille 3)
-------
"...93" => tableau de résultat (taille 5)
ret = 0 => retenu

Etape 4:

tab1[1] + tab2[0] + ret = 8 + 2 + 0 = 10, soit 0 retient 1

"1234" => premier tableau (taille 4)
"859" => deuxième tableau (taille 3)
-------
"..093" => tableau de résultat (taille 5)
ret = 1 => retenu

Etape 5:

Ici on est arrivé au début du tableau 2. Donc:
On change la méthode qui devient:

tab1[0] + ret = 1 + 1 = 2, soit 2 retient 0

"1234" => premier tableau (taille 4)
"859" => deuxième tableau (taille 3)
-------
".2093" => tableau de résultat (taille 5)
ret = 0 => retenu

Etape 6:

Ici on a terminé. On vérifie juste qu'il n'y ait pas de case inutilisé dans le tableau résultat.
Ici, on voit que c'est le cas, dont on décale toute les caractères vers la gauche:
".2093" => "2093."

Enfin, on peut au choix:
- Raccourcir la chaîne de caractère de 1, via realloc
- Considérer qu'une case de gaché ce n'est pas bien grave, et juste mettre un 0 terminal à la case 4 (à la place du .)

Bonne chance !
mercredi 23 décembre 2009 à 14:57:25 | Re : manipulation des entiers de type char

gnichiarsenal

vraiment,merci beaucoup
Même le prof du cours de programmation n'a pas pu comprendre l'objet du miniprojet.
en fait je viens juste de comprendre de quoi il s'agit.Bon ce qui est maintenant difficile à faire c'est comment lire des entiers de grandes taille.vraiment c'est pas destiné au debutant,je vais peut être recherché un code-sources complet.ci quel qu'un peut m'envoyer un lien qui peut m'aider
mercredi 23 décembre 2009 à 15:02:35 | Re : manipulation des entiers de type char

CptPingu

Administrateur CodeS-SourceS

Même le prof du cours de programmation n'a pas pu comprendre l'objet du miniprojet.


Bizarre pour un prof de ne pas comprendre ce qu'il donne...

en fait je viens juste de comprendre de quoi il s'agit.Bon ce qui est maintenant difficile à faire c'est comment lire des entiers de grandes taille.vraiment c'est pas destiné au debutant,


Ce n'est pas très compliqué, et c'est souvent donné comme exercice aux débutants. Regarde l'explication que je t'ai donné, et tu verras qu'il n'y a rien de vraiment difficile.

je vais peut être recherché un code-sources complet.ci quel qu'un peut m'envoyer un lien qui peut m'aider


Si c'est un miniprojet, c'est à faire par toi même. Allez chercher un exercice tout fait ne t'apprendra rien.

1 2

Cette discussion est classée dans : entiers, type, char, manipulation


Répondre à ce message

Sujets en rapport avec ce message

manipulation de caractères [ par vanpet ] Bonjour à tous !Voici mon probleme (de debutant, mais faut bien commencer un jour)...j'ai 3 variables *char syllabe1 (2 et 3)qui contiennent chacune u Convertir un type char (contenant bien sur un nombre) en short? [ par houssadotcom ] Bonjour, tout est dans le titre.J'ai un tableau de type char contenant par exemple la valeur '123', et je voudrais en faire un short.Comment faire ?Me Convertir un type char (contenant bien sur un nombre) en short? [ par houssadotcom ] Bonjour, tout est dans le titre.J'ai un tableau de type char contenant par exemple la valeur '123', et je voudrais en faire un short.Comment faire ?Me affectation valeur variable type char [ par Vinsou ] J'ai une variable char qui doit contenir du texte. Mais au milieu de ce texte il y a des valeurs provenant d'une base de donnée. Comment faire pour a Urgent...classe de manipulation de grands entiers [ par Orkblutt ] Salut,j'aimerai implementer une classe qui me permettrai de manipuler (+,-, /,*,%) des grands nombres (Nb>32bits) mais je ne sais pas du tout comment Convertion de type [ par Siriusgalaxie26 ] SiriusJ'ai (encore) un problème : J'aurais besoin d'une liste des fonctions de convertion de type (par ex: char en char*, ou int en char, ou encore An manipulation de chaines de carracteres [ par Adeon ] salut! voila mon programme (qui ne marche pas evidement)char chaine[50]void main(){//programme....chaine = "salut";//programme....chaine comment faire insérer du 'char' dans un tableau de 'double' [ par felisk ] J'ai créé un tableau où je stocke des valeurs de type 'double', j'aimerai dans les prières ligne de ce tableau insérer quelques lignes de commentaires Manip' des variables du type char... [ par DJeS ] J'ai d'eternels problemes pour manipuler les variables char, const char etc...quand je veux faire passer un argument char a un fonction j'ai souvent d Char* capricieux.... [ par Clonk ] Bonjour,alors voilà, j'ai une classe "Champ" avec les attributs suivant :private: char * _nomchamp; char * _explication; char * _type; char * _format;


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales