Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercices pour débutants en C

Au menu : zSommeChiffres (nombres, algo)

23 octobre 2008 à 21:14:23

Les case consécutifs peuvent être factorisés ! :)
  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2008 à 21:20:10

Salut à tous, je sais pas si on est autorisé à poster son code une fois qu'on a fini, pour que tout le monde puisse le critiquer, si ce n'est pas le cas , rapellez moi à l'ordre et je l'enleverai ^^ .

Le reproche que j'aurai à me faire c'est de ne pas avoir utilisé de structure; mes fonctions ont beaucoup d'arguments. N'hésitez pas à critiquer ;) .



@++

EDIT : Code retiré.
  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2008 à 21:29:22

Salut, ton algorithme ne fonctionne pas correctement :
Entrez le nombre que vous souhaitez convertir :
(entrez un nombre negatif pour quitter le programme)
56936
En quel base voulez vous convertir votre nombre :
(Seul les bases de 2 a 10 sont disponibles)
3
Votre nombre en base 3 : 2220002202rver\9D~Z0-

À corriger. ;)

edit : évitez de poster vos codes ici tout de même, merci.
  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2008 à 21:35:45

Re crys'

J'ai retiré mon code, ce qui est bizare c'est que sa marche bien chez moi :

max@max-desktop:~/Public/Programmation/Exo SDZ/zBinary$ ./out
Entrez le nombre que vous souhaitez convertir : 
(entrez un nombre negatif pour quitter le programme)
56936
En quel base voulez vous convertir votre nombre :
(Seul les bases de 2 a 10 sont disponibles) 
3
Votre nombre en base 3 : 2220002202

Entrez le nombre que vous souhaitez convertir : 
(entrez un nombre negatif pour quitter le programme)
-1
max@max-desktop:~/Public/Programmation/Exo SDZ/zBinary$


Je te renvoi mon code par mp (à la réponse ^^) .

Bon courage à ceux qui n'ont pas encore commencé :p
  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2008 à 21:58:56

euh j'ai une question, on parle de quel sujet?
Le Zbinary ou alors le Zbase?
Car le but c'est pas de convertir en binaire?

Alors pourquoi tout le monde poste ses codes avec des bases de ne je sais pas quoi?

Bon je pense que l'on peut reparler du binaire, moi je dis, il y a un piège qu'on finira par s'en rendre compte.

Essayez avec des nombres du genre : 1024,4096, on verra bien si il fonctionnera votre convertisseur.
Bon continuons sur le sujet.
  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2008 à 22:09:35

regarde le code que j'ai posté!
que tu convertisse en binaire ou dans une autre base le principe est le même !
  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2008 à 22:16:31

oui, mais le but est en binaire, si t'en fais plus, c'est du HS
  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2008 à 23:38:14

Je suis d'accord avec toi Jaloyan1, j'ai l'impression que le sujet devient zBase alors refocalisez-vous sur le convertisseur décimal->binaire de l'énoncé. Pourquoi vouloir faire plus si l'on est pas sur pourvoir faire le moins ? Commencez par le binaire.
  • Partager sur Facebook
  • Partager sur Twitter
25 octobre 2008 à 8:35:18

j'ai une question sur les projets, on peut les faire en plusieurs fichiers? Avec des .h?

Ou alors je compacte tout dans le main?
  • Partager sur Facebook
  • Partager sur Twitter
25 octobre 2008 à 14:08:19

Tu fais ce que tu veux, tu t'organises comme tu veux. ;)
  • Partager sur Facebook
  • Partager sur Twitter
26 octobre 2008 à 22:18:33

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)
  • Partager sur Facebook
  • Partager sur Twitter
27 octobre 2008 à 0:09:27

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Ce serait pas le fameux printf("%b") par hasard ?
  • Partager sur Facebook
  • Partager sur Twitter
27 octobre 2008 à 9:30:30

non, ça ne marche pas.

Je pensais pas à cela quand j'ai marqué ce message.

Je pensais à autre chose un peu compliqué mais simple si on maitrise vraiment.
  • Partager sur Facebook
  • Partager sur Twitter
27 octobre 2008 à 13:02:35

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.
  • Partager sur Facebook
  • Partager sur Twitter
27 octobre 2008 à 16:56:03

Citation : onime

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.


Je ne vois pas en quoi la solution des opérateurs binaire pourrit être idiote. o_O

D'ailleurs, je pense que M@teo21 devrait toucher un mot des opérateurs binaires dans son tuto...
  • Partager sur Facebook
  • Partager sur Twitter
27 octobre 2008 à 23:19:02

Ah je n'ai pas dit idiote mais, c'est pas forcément abordable et compréhensible au premier zéro venu.
  • Partager sur Facebook
  • Partager sur Twitter
28 octobre 2008 à 23:13:36

coucou j'ai eu un petit temps libre et voici ma solution pour le convertisseur .
du decimale vers une base [2-16]vu que c'est les plus utilise . j'ai opte pour une solution recursive car le probleme est de nature recursive :
#include <stdio.h>

int conversion(int nombre,int base){
    static char digit[]="0123456789ABCDEF";
    int quotien,reste;
    quotien = nombre/base;
    reste   = nombre%base;
    if(quotien != 0 )
        conversion(quotien,base);
    printf("%c",digit[reste]);
}

int main()
{   int nombre,base=17;
    puts("entrez le nombre en decimal");
    scanf("%d",&nombre);
    while( base > 16 || base < 2){
        puts("entrez la base auquelle vous voulez convertir votre nombre [2-16]");
        scanf("%d",&base);
    }
    printf("%d en base %d est egal a ",nombre,base);
    conversion(nombre,base);
   return 0;
}
  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2008 à 8:48:13

Citation : elmcherqui

coucou j'ai eu un petit temps libre et voici ma solution pour le convertisseur .
du decimale vers une base [2-16]vu que c'est les plus utilise . j'ai opte pour une solution recursive car le probleme est de nature recursive :


Salut,

Sympa, ton code. J'utilise aussi le système quotien/reste, mais je ne posterai pas ici avant la correction...

Le type de la fonction conversion est void, car elle ne retourne rien.
Aussi, il est plus correct d'utiliser putchar() (printf("%c", c); équivaut a putchar(c); )...

#include <stdio.h>

static char digit[]="0123456789ABCDEF";

void conversion (int nombre, int base)
{
    int quotien,reste;
    quotien = nombre/base;
    reste   = nombre%base;
    if (quotien != 0 )
        conversion(quotien,base);
    putchar(digit[reste]);
}

int main (void)
{
    int nombre,base=17;
    puts("entrez le nombre en decimal");
    scanf("%d",&nombre);
    while ( base > 16 || base < 2)
    {
        puts("entrez la base auquelle vous voulez convertir votre nombre [2-16]");
        scanf("%d",&base);
    }
    printf("%d en base %d est egal a ",nombre,base);
    conversion(nombre,base);
    return 0;
}


Sinon, lorsque tu dis que 'le probleme est de nature récursive', je dirais plutôt que c'est la solution que tu as choisie qui est de nature recursive ! :p
  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2008 à 16:00:25

Citation : onime

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.



C'est exact.
  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2008 à 17:56:33

Citation : Jaloyan1

Citation : onime

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.



C'est exact.


Qu'est ce que ça a d'idiot ? Que tu n'y arrive pas ?
  • Partager sur Facebook
  • Partager sur Twitter
29 octobre 2008 à 21:14:06

C'est bon, je viens de MP ma solution à l'exercice ^^

Pas très compliqué en fin de compte...
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2008 à 10:14:55

Citation : yoch

Citation : Jaloyan1

Citation : onime

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.



C'est exact.


Qu'est ce que ça a d'idiot ? Que tu n'y arrive pas ?



Au contraire, c'est juste que a mon avis en proposant cet exercice, il veut sans doute nous faire manipuler autre chose que les opérateurs binaires.
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2008 à 11:09:56

Citation : Jaloyan1

Citation : yoch

Citation : Jaloyan1

Citation : onime

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.



C'est exact.


Qu'est ce que ça a d'idiot ? Que tu n'y arrive pas ?



Au contraire, c'est juste que a mon avis en proposant cet exercice, il veut sans doute nous faire manipuler autre chose que les opérateurs binaires.



Tu parles beaucoup mais je doute beaucoup sur ta capacité à résoudre cet exercice DE TOI-MEME, sans aller le pomper sur google.
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2008 à 16:49:14

Citation : Erosquare

Citation : Jaloyan1

Citation : yoch

Citation : Jaloyan1

Citation : onime

Citation : Jaloyan1

Au fait, il y a une solution vraiment idiote et je serai ravi de voir qu'un zéro la mette en oeuvre.

Je vous la dirai lors de la correction si personne n'y a songé(je compte pas l'utiliser)



Tu penses aux opérateurs binaire ? Si c'est cela je doute que vrai zéro en soit capable.
Ceci dit c'est vrai qu'avec les opérateurs binaire ça se fait en 3 lignes.



C'est exact.


Qu'est ce que ça a d'idiot ? Que tu n'y arrive pas ?



Au contraire, c'est juste que a mon avis en proposant cet exercice, il veut sans doute nous faire manipuler autre chose que les opérateurs binaires.



Tu parles beaucoup mais je doute beaucoup sur ta capacité à résoudre cet exercice DE TOI-MEME, sans aller le pomper sur google.



En effet je parle beaucoup et je codes peu, mais si tu est si sur que je ne sais pas faire l'exo sans aller 1 seule fois sur google alors tu est sur de te gourrer,

suite de la discussion par mp pour éviter de poster des codes ici.
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2008 à 23:31:06

On peut simplifier un peu :
void conversion_(int nombre, int base)
{
  if (nombre != 0)
    {
      conversion_(nombre / base, base);
      putchar(digit[nombre % base]);
    }
}
  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2008 à 7:46:12

bonjour Chris:
est ce que dans les corrections, il ne serait pas judicieux pour tous les zeros que nous sommes de proposer
en premier : un algorithme, qui resoud le problème
en second : le code
Je constate que beaucoup se balancent des codes moi j'ai fait ceci ou cela, judicieusement ou pas, pour eviter que les novices les vrais ne se découragent!
J'ai fait exprès d'expliquer ma méthode de comment j'ai fait, elle vaut ce qu'elle vaut, mais elle m'apartient :p

En autre j'ai vu une solution récursive, pour l'instant c'est pas à ma portée par exemple, et certainement pas a ceux qui débutent en programmation!
merci :-°
  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2008 à 8:43:30

Citation

En autre j'ai vu une solution récursive, pour l'instant c'est pas à ma portée par exemple, et certainement pas a ceux qui débutent en programmation!


C'est quoi cette idée que la recursivité serrait un concept difficile a comprendre et a appliquer?
  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2008 à 9:24:01

Citation : Flooder

C'est quoi cette idée que la recursivité serrait un concept difficile a comprendre et a appliquer?



Developpe, car là j'ai rien appris de nouveau, et ton discours est désobligeant pour les 000 :colere2:
Pour ma part je t'en ferais une définition suivante :

En maths, soit par exemple une suite numérique définie par
1 2 3 4 5 6 7 8 9 10 11 12 ..............
par raisonnement réccurent elle se traduit par la formule suivante
U(n+1) = U(n) + 1

confert : cours de math niveau 1° scientifique (de mémoire)(est ce le niveau déjà requis par tous les 000 ?)

En informatique : je vais le resumé par c'est une fonction qui s'appelle elle même, on change juste les arguments entrants.

Bon eh bien explique moi de façon simple de préférence, comment (par un schéma ou un alorithme) cela fonctionne
merci

  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2008 à 9:55:40

Citation : candide

On peut simplifier un peu :

void conversion_(int nombre, int base)
{
  if (nombre != 0)
    {
      conversion_(nombre / base, base);
      putchar(digit[nombre % base]);
    }
}


Je n'ai pas pu le tester ton code, car il y a un truc qui me chatouille bien ,essaie ton code avec 1 base 10 et base 2 en 2eme arg.


Citation : zx-spectrum

U(n+1) = U(n) + 1



Tu est sur?

Je dirais plutôt :
U(n+1) = U(n) + U

Citation : zx-spectrum

Citation : Flooder

C'est quoi cette idée que la recursivité serrait un concept difficile a comprendre et a appliquer?



Developpe, car là j'ai rien appris de nouveau, et ton discours est désobligeant pour les 000 :colere2:
Pour ma part je t'en ferais une définition suivante :

En maths, soit par exemple une suite numérique définie par
1 2 3 4 5 6 7 8 9 10 11 12 ..............
par raisonnement réccurent elle se traduit par la formule suivante
U(n+1) = U(n) + 1

confert : cours de math niveau 1° scientifique (de mémoire)(est ce le niveau déjà requis par tous les 000 ?)

En informatique : je vais le resumé par c'est une fonction qui s'appelle elle même, on change juste les arguments entrants.

Bon eh bien explique moi de façon simple de préférence, comment (par un schéma ou un alorithme) cela fonctionne
merci




C'est pas comme pour les factorielles?

n! = n * (n-1)!
avec une fonction récursive, tu peux très bien coder cela.(enfin je crois, mais faut pas que ça dépasse la taille max de la variable.)
  • Partager sur Facebook
  • Partager sur Twitter