Exerce en c
Fermé
celine
-
16 sept. 2010 à 14:47
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 sept. 2010 à 18:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 sept. 2010 à 18:58
7 réponses
merci pour la repnse le programme diot etre du genre quand l'utilisateur entre 325 il fait 3+2+5 et affice 10 et puis 01
non il n s'agit pas d'un devoir je lu le cours le cours de m@teo21 et j'en suis aux pointeurs j fait une pause pour faire des exercices que je trouve sur l net.Je m'en suis sorti j'usque ici mais ce exo me pose des problemes .Pour repondre à Nabla's je suis bloqué sur ce exo depuis 10 jours alors j'ai bossé mais si j ve lire la suite du cours il m faut resolver ce exo.
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
318
16 sept. 2010 à 15:00
16 sept. 2010 à 15:00
J'ai pas tout compris mais si j'ai compris alors il faut que tu fasses une pauvre addition de quelques nombres et puis ensuite afficher le résultat à l'envers ?
Ben tu fais ton calcul (pour deux nombre facile pour plus une boucle)
Tu obtiens la somme que tu transtypes en chaîne de caractères
tu inverses la chaîne.
Ben tu fais ton calcul (pour deux nombre facile pour plus une boucle)
Tu obtiens la somme que tu transtypes en chaîne de caractères
tu inverses la chaîne.
scaravenger
Messages postés
2685
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
30 janvier 2015
616
16 sept. 2010 à 15:33
16 sept. 2010 à 15:33
Il y a plusieurs possibilités pour y arriver.
Tout dépend du contexte de ta demande.
s'agit-il d'un devoir scolaire?
Tout dépend du contexte de ta demande.
s'agit-il d'un devoir scolaire?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non il n s'agit pas d'un devoir je lu le cours le cours de m@teo21 et j'en suis aux pointeurs j fait une pause pour faire des exercices que je trouve sur l net.Je m'en suis sorti j'usque ici mais ce exo me pose des problemes .Pour repondre à Nabla's je suis bloqué sur ce exo depuis 10 jours alors j'ai bossé mais si j ve lire la suite du cours il m faut resolver ce exo.
Utilisateur anonyme
Modifié par nagashima le 18/09/2010 à 13:03
Modifié par nagashima le 18/09/2010 à 13:03
salut !
c'est super simple en fait, il faut que tu isole les puissances de 10.
en gros :
je l'ai faite vite fait depuis la page de ccm donc j'ai pas testé mais ca devrait fonctionner.
voilà un main pour tester si tu veux :
je fais pas de test d'erreur ni rien.
si t'as des question n'hésite pas, le but étant de comprendre toi et pas moi ^^
bonne journée !
naga
PS : Quand tu demande de l'aide, fais au moins un effort d'ecriture, et explique bien ce que tu cherche, quitte à passer 10 minutes sur le message : un message claire et bien écrit t'apportera bien plus de réponses.
c'est super simple en fait, il faut que tu isole les puissances de 10.
en gros :
int sommechiffres(int num)//trouve la somme { int retour = 0 ; //la valeur que tu renvois int i = 0;//pour remplir le tableau int tab[5]; //tu isole les nombres int puissdix = 10000; // je suppose que tu dépassera pas les 99 999 while( i <= 5 ) { tab[i] = (num/puissdix);//tu récupère le plus grand nombre num = (num - tab[i]);//tu retire la valeur trouvée puissdix = (puissdix/10); i++;//case suivante du tableau }//ici, on a récupéré tous les chiffres du nombre i = 0; while( i < 5 ) { retour += tab[i]; i++; } return retour; } //************************************************** int inversechiffre(int num) { int i = 0; int tab[4]; int retour = 0; int puissdix = 10000; while( i >= 0 ) { tab[i] = (num/puissdix); num = (num - tab[i]); puissdix = (puissdix/10); i--; } i = 0; while( i < 5 ) { retour += tab[i]; i++; } return retour; }
je l'ai faite vite fait depuis la page de ccm donc j'ai pas testé mais ca devrait fonctionner.
voilà un main pour tester si tu veux :
int main( void ) { int val = 456; int somme , sommeinv; somme = sommechiffres(val); sommeinv = inversechiffre(somme ) printf("%d : \n\tsomme : %d\n\tinverse de la somme : %d\n", val, somme, sommeinv); system("pause"); return 0; }
je fais pas de test d'erreur ni rien.
si t'as des question n'hésite pas, le but étant de comprendre toi et pas moi ^^
bonne journée !
naga
PS : Quand tu demande de l'aide, fais au moins un effort d'ecriture, et explique bien ce que tu cherche, quitte à passer 10 minutes sur le message : un message claire et bien écrit t'apportera bien plus de réponses.
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
318
19 sept. 2010 à 02:00
19 sept. 2010 à 02:00
J'ai pas lu ton code mais j'avais pas pensé aux puissances de 10... >< mais effectivement c'est une bonne idée.
Vu l'exemple qu'elle donnait j'étais plus dans l'idée de convertir chaque caractères 1 à 1 en entier pour les ajouter.
Je me suis dit que c'est peut-être bête comme solution mais après tout comme le chiffre est une chaîne de caractères au moment de la saisie et qu'en C les chaînes de caractères sont des tableaux de caractères c'est finalement pas si mal comme idée. Il suffirait d'utiliser une boucle pour traiter n'importe quel nombre entier.
J'ai pas fais de C/C++ depuis un bail et j'en ai pas testé mais ça pourrait ressembler à un truc du genre.
Voilà comment j'aurais fait. Bon y'a probablement des erreurs genre oubli d'une bibliothèque, faute de frappe, etc... mais je pense que l'algorithme est au moins perceptible au travers de ce code. Au même titre que PHP, j'ai pas fait de C/C++ depuis des années.
Vu l'exemple qu'elle donnait j'étais plus dans l'idée de convertir chaque caractères 1 à 1 en entier pour les ajouter.
Je me suis dit que c'est peut-être bête comme solution mais après tout comme le chiffre est une chaîne de caractères au moment de la saisie et qu'en C les chaînes de caractères sont des tableaux de caractères c'est finalement pas si mal comme idée. Il suffirait d'utiliser une boucle pour traiter n'importe quel nombre entier.
J'ai pas fais de C/C++ depuis un bail et j'en ai pas testé mais ça pourrait ressembler à un truc du genre.
#include <iosteam> using namespace std void main(void) { char* sEntier[]; // Je ne suis vraiment plus sur de la syntaxe donc à vérifier cout << "Veuillez saisir un entier : "; cin >> sEntier; /* Et là je me dis que j'aurais même pu stocker un entier directement si j'avais voulu, mais bon là c'est pas ce que je veux.*/ int nLng, somme, nBuff; char buff; nLng = sizeof(sEntier/sizeof(char)); /* Trouver la taille de la chaîne. Je sais plus trop si c'est juste mais j'ai de vagues souvenirs de ce genre de choses... ^^' */ for (i=nLng;i>0, i--) { buff = sEntier[i]; /* Je sais pas si il aurait pas fallu copier la chaîne dans un tableau de caractères pour une histoire de chaînes qu'on ne peut plus modifier ou quoi... Enfin c'est vraiment très vieux.*/ nBuff = (int)buff; /* Transtypage. Si ça marche pas essayer static int ou je sais plus trop mais y'avait de chevrons <>. Peut-être static<int>buff.*/ somme += nBuff; } cout << "La somme vaut " << somme << endl; }
Voilà comment j'aurais fait. Bon y'a probablement des erreurs genre oubli d'une bibliothèque, faute de frappe, etc... mais je pense que l'algorithme est au moins perceptible au travers de ce code. Au même titre que PHP, j'ai pas fait de C/C++ depuis des années.
char* sEntier[]; // Je ne suis vraiment plus sur de la syntaxe donc à vérifier
en effet, ca sera char * Entier; sinon tu créé un tableau en deux dimensions =)
/* Et là je me dis que j'aurais même pu stocker un entier directement si j'avais voulu, mais bon là c'est pas ce que je veux.*/
oui en fait moi je pars du principe que pour tester, pas de saisie clavier, ,et qu'il faut bien départager les types (en cas de traitement auto par exemple) ... les vestiges d'un prof de c tarré ^^
nLng = sizeof(sEntier/sizeof(char)); /* Trouver la taille de la chaîne. Je sais plus trop si c'est juste mais j'ai de vagues souvenirs de ce genre de choses... ^^' */
normalement ca marche, mais ca te renvera la taille de sEntier et non du nombre de caractères SI (et seulement si =p) tu initialise la taille de ton sEntier (avec un new char[50] par exemple), chose qu'il me semble obligé de faire pour le cin, mais je me trompe peu être . sinon, il faut utiliser la bibliotèque <string.h> avec la méthode strlen :
nLng = strlen(sEntier);
ensuite,
buff = sEntier[i];
pas de soucis, ca marche sans problèmes =)
par contre :
nBuff = (int)buff;
ca renvoi la valeur ascii, donc pour 1 par exemple : nBuff = 49
comme "0" = 48, il faut faire :
nBuff = ((int)buff) - 48;
mais sinon pas de soucis pour le cast =)
à part ces deux trois erreur (dûent au php je pense ^^) ton code fonctionne bien pour trouver la somme ^^
bon j'ai pas testé mais avec les changements je pense que ca marcher =)
(PS : j'en ai bouffé du c et j'ai une pu**** de mémoire xD)
bon week,
naga
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
318
19 sept. 2010 à 14:54
19 sept. 2010 à 14:54
Arf la valeur ASCII... xD
J'y pensais plus à ça.
Moi aussi j'avais une p*t**n de mémoire avant mais là si je pratique pas ben j'oublie même si j'ai bien des restes.
Puis vu ma formation je suis plus dans les trucs comme ShellScript, awk, sed, WSH, etc...
Le C ou le PHP et plus récemment Java c'est juste un intérêt personnel (la culture G on va dire).
En tout cas au-delà du code, c'était surtout l'algo que je souhaitais transmettre.
J'y pensais plus à ça.
Moi aussi j'avais une p*t**n de mémoire avant mais là si je pratique pas ben j'oublie même si j'ai bien des restes.
Puis vu ma formation je suis plus dans les trucs comme ShellScript, awk, sed, WSH, etc...
Le C ou le PHP et plus récemment Java c'est juste un intérêt personnel (la culture G on va dire).
En tout cas au-delà du code, c'était surtout l'algo que je souhaitais transmettre.
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
19 sept. 2010 à 16:30
19 sept. 2010 à 16:30
la méhtode nBuff = ((int)buff) - 48;
est une bonne idée, si on voulait l'écrire correctement, il faudrait faire:
nBuff = ((int)buff) - (int)'0';
ceci dit, la manière propre du C doit ressembler à ca:
sscanf (buff,"%d",&nBuff);
est une bonne idée, si on voulait l'écrire correctement, il faudrait faire:
nBuff = ((int)buff) - (int)'0';
ceci dit, la manière propre du C doit ressembler à ca:
sscanf (buff,"%d",&nBuff);
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
16 sept. 2010 à 16:05
16 sept. 2010 à 16:05
Bonjour,
voici la politique de CCM concernant la résolution de vos exercices (de programmation ou autre)
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
donc merci de poser des questions precises sur ce qui vous pose problème.
On veux bien aider, mais le but est de t'apprendre, pas de se faire exploiter. Si tu nous prends pour une bande de geeks qui va faire tes exos sans que t'ai à réfléchir juste pke t'as demandé gentillement, mets plutot une minijupe et un décolté et trouve qqcn à qui demander parmi tes connaissances.
Ceci dit, si tu es prete à montrer que tu as fait des recherches par toi meme, nous t'aiderons tous avec plaisir
voici la politique de CCM concernant la résolution de vos exercices (de programmation ou autre)
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
donc merci de poser des questions precises sur ce qui vous pose problème.
On veux bien aider, mais le but est de t'apprendre, pas de se faire exploiter. Si tu nous prends pour une bande de geeks qui va faire tes exos sans que t'ai à réfléchir juste pke t'as demandé gentillement, mets plutot une minijupe et un décolté et trouve qqcn à qui demander parmi tes connaissances.
Ceci dit, si tu es prete à montrer que tu as fait des recherches par toi meme, nous t'aiderons tous avec plaisir
salut !
la personne en question essaye justement d'apprendre, et ce n'est pas un travail pro ou pour les cours mais personnel donc elle n'en tirera rien de gratifiant ou autre à notre insu (on est donc pas "exploité")
enfin après c'est mon avis. encore si c'était un projet je dis pas mais là ...
cdlt, naga
la personne en question essaye justement d'apprendre, et ce n'est pas un travail pro ou pour les cours mais personnel donc elle n'en tirera rien de gratifiant ou autre à notre insu (on est donc pas "exploité")
enfin après c'est mon avis. encore si c'était un projet je dis pas mais là ...
cdlt, naga
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
18 sept. 2010 à 14:06
18 sept. 2010 à 14:06
Salut nagashima,
Disons le problème de donner un programme tout fait, c'est qu'on a l'impression que ça aide. Mais au final, on est souvent incapable de le refaire seul. C'est pour ça que sur ce forum, on préfère aider à expliquer un point peu clair, à corriger un code, mais en aucun cas de donner la solution.
Mais bon, si tu veux donner la solution à chaque fois, ne te prive pas ;-), même si c'est contraire à la charte...
Disons le problème de donner un programme tout fait, c'est qu'on a l'impression que ça aide. Mais au final, on est souvent incapable de le refaire seul. C'est pour ça que sur ce forum, on préfère aider à expliquer un point peu clair, à corriger un code, mais en aucun cas de donner la solution.
Mais bon, si tu veux donner la solution à chaque fois, ne te prive pas ;-), même si c'est contraire à la charte...
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
18 sept. 2010 à 14:48
18 sept. 2010 à 14:48
Ce que je reproche juste, c'est que pour l'isntant on a pas vu un bout de recherche de ce qu'a fait la demoiselle avant de venir ici, c'est tout ... quand la personne met au moins 2/3 lignes de codes sur le problème en question, montre qu'elle acherché, pose au moins un bout d'algo, j'aide sans soucis.
MAis la c'est juste que la personne arrive en demandant un exercice complet. Moi je suis OK pour aider pas a pas si il faut, mais il faut que la personne montre qu'elle travaille aussi ...
j'ai vu trop de personnes réussir leurs études en pompant simplement sur les autres .... et qui au final ont les memes diplomes que moi
MAis la c'est juste que la personne arrive en demandant un exercice complet. Moi je suis OK pour aider pas a pas si il faut, mais il faut que la personne montre qu'elle travaille aussi ...
j'ai vu trop de personnes réussir leurs études en pompant simplement sur les autres .... et qui au final ont les memes diplomes que moi
je suis d'accord avec toi, mais entre deux personnes ayant le même diplôme, il y a une différence, les gens qui trichent pendant leurs études vont peu être trouver du taff à la sortie, mais revois les 5/6 ans plus tard, après s'être fait jarté de X entreprises avant la fin de la période d'essais, et revoie ceux qui taffaient ^^
perso c'est la première fois que je met le code + le test, mais vu la nature du post, je ne pense pas avoir mal fait (et au pire j'ai perdu 10/12 minutes à taper le code donc bon ^^)
ah au fait, petite anecdote :
j'avais un projet en bts à 4. sur les trois autres : l'un foutait rien, l'autre dormait les 3/4 du temps et le dernier taffait mais était vraiment mauvais (au moins il essayait)
finalement je me suis tappé tout le projet, on a eu 14 et 2/3 ont eu leur diplome (malheureusement pas celui qui taffait >_<)
l'un continu les cours en école d'ingé info et fait que se ramasser (bah oui en ingé c'est des ras qui veulent être les premiers) et l'autre s'est fait jarté de deux entreprises \o/
Moi ? j'ai eu ma licence et je continu en alternance, en faisant en plus le site et le réseau d'un château près de chez moi, et tout se passe bien ^^
je pense juste que celui qui taff est toujours gagnant au final, le tout étant de s'en donner les moyens.
biz,
naga
perso c'est la première fois que je met le code + le test, mais vu la nature du post, je ne pense pas avoir mal fait (et au pire j'ai perdu 10/12 minutes à taper le code donc bon ^^)
ah au fait, petite anecdote :
j'ai vu trop de personnes réussir leurs études en pompant simplement sur les autres .... et qui au final ont les memes diplomes que moi
j'avais un projet en bts à 4. sur les trois autres : l'un foutait rien, l'autre dormait les 3/4 du temps et le dernier taffait mais était vraiment mauvais (au moins il essayait)
finalement je me suis tappé tout le projet, on a eu 14 et 2/3 ont eu leur diplome (malheureusement pas celui qui taffait >_<)
l'un continu les cours en école d'ingé info et fait que se ramasser (bah oui en ingé c'est des ras qui veulent être les premiers) et l'autre s'est fait jarté de deux entreprises \o/
Moi ? j'ai eu ma licence et je continu en alternance, en faisant en plus le site et le réseau d'un château près de chez moi, et tout se passe bien ^^
je pense juste que celui qui taff est toujours gagnant au final, le tout étant de s'en donner les moyens.
biz,
naga