CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] Besoin d'aide pour 3 exercices

Sureliaz
Sureliaz
Niveau 5
06 novembre 2009 à 10:47:20

Bonjour,

Je suis actuellement en 1ere année de licence maths-info, et dans le cadre du cours de Java, j'aurais besoin de votre aide pour 3 exos.

:d) Exo 1 :
Écrire un programme qui, pour deux nombres n et m entrés par l’utilisateur, affiche le motif suivant (ici, n = 9, m = 4 ) :

    • ******
  • *
  • *
    • ******

J'ai déjà fait un programme similaire en cours, je sais qu'il faut imbriquer 2 boucles for ( 1 pour les lignes, 1 pour les colonnes ), malheureusement le problème est que je ne vois pas comment faire les espaces au centre du dessin...

:d) Exo 2 :
Soit n un entier entré par l’utilisateur obligatoirement entre 1 et 99.
a) Faire un programme permettant de calculer la somme des chiffres de l’entier n. Par exemple, si n = 78 alors la somme est 7 + 8 = 15.
b) Modifier le programme précédent pour que l’on puisse recalculer la somme des chiffres du résultat obtenu jusqu'à ce que l’on obtienne un entier à un seul chiffre. Par exemple, si n = 99 la somme des chiffres est 18; on recalcule la somme des chiffres de 18 et on obtient 9. Le programme s’arrête car le résultat obtenu (9) n’a qu’un seul chiffre.

Alors là, je n'ai aucune idée, si ce n'est de lister tous les cas de cette manière :
if (n>=0 && n<=9) System.out.println(n)
else if (n==10) System.out.println(1)
else if (n==11 || n=20) System.out.println(2)
....
et cela jusqu'à 100 en énumérant tous les cas...

:d) Exo 3:
Écrire le programme qui permet d’afficher toutes les manières possibles de faire 1 euros à partir de pièces
de 50 centimes, 20 centimes et 10 centimes (on pourra utiliser des boucles for). Afficher ensuite le nombre de combinaisons possibles.
Les variables nécessaires (mais non suffisantes) sont: nbf est le compteur du nombre de façons de faire 1 euro; n10 est le nombre de pièces de 10 centimes; n20 est le nombre de pièces de 20 centimes; n50 est le nombre de pièces de 50 centimes.

Indication: Pour résoudre le problème, on aura besoin de: 0 à 2 pièces de 50 centimes; 0 à 5 pièces de 20 centimes; 0 à 10 pièces de 10 centimes.

Les résultats devront être affichés de la façon suivante :
1E = 0* 50c 0* 20c 10* 10c
1E = 0* 50c 1* 20c 8* 10c
1E = 0* 50c 2* 20c 6* 10c
1E = 0* 50c 3* 20c 4* 10c
1E = 0* 50c 4* 20c 2* 10c
1E = 0* 50c 5* 20c 0* 10c
1E = 1* 50c 0* 20c 5* 10c
1E = 1* 50c 1* 20c 3* 10c
1E = 1* 50c 2* 20c 1* 10c
1E = 2* 50c 0* 20c 0* 10c
Il y a 10 combinaisons possibles pour faire 1 euro.

Pour cet exercice, je n'ai vraiment aucune idée, et pourtant j'ai cherché...

Merci de m'avoir lu et merci d'avance pour votre aide :)

Sureliaz
Sureliaz
Niveau 5
06 novembre 2009 à 10:51:55

Mince, dans l'exercice 1, le dessin que l'on veut afficher est , pour n=9, m=4 :

    • ******
  • _____*
  • _____*
    • ******

Les tirets bas sont des espaces, mais peu importe :p)

_skip
_skip
Niveau 10
06 novembre 2009 à 11:13:10

Pour le 2, tu peux isoler les chiffres de la façon suivante :

12345 % 10 = 5
12345 % 100 = 45 => 45 / 10 = 4;
12345 % 1000 = 345 => 345 / 100 = 3;
...

et ainsi de suite jusqu a ce que le modulo te donne le chiffre de départ lui même.

je vais même t'aider à trouver le pas :

soit n : le nombre
soit i : compteur de boucle = 0;
soit sum : somme des chiffres = 0;

BOUCLE :
temp = n modulo 10^(i+1);
Si temp == n ALORS SORTIR
s += temp / 10^i;
++i;

Amuses-toi bien!

Sureliaz
Sureliaz
Niveau 5
06 novembre 2009 à 11:51:25

Merci beaucoup ! Je n'y avais pas pensé !

Je vais essayer ça de ce pas :)

Sureliaz
Sureliaz
Niveau 5
06 novembre 2009 à 21:07:15

Bonsoir,

J'ai eu une idée pour faire l'exercice 1, malheureusement je ne peux pas compiler donc je recopie le programme, en espérant que quelqu'un jète un œil dessus et me dise ce qui va / ce qui ne va pas :)

public class dessin
{public static void main(String args[])
________{int m,n;
________System.out.println("Entrez le nombre de lignes : ");
________________m=Lire.i();
________System.out.println("Entrez le nombre de colonnes : ");
________________n=Lire.i();
________for (int i=1,i<=m,i++)
________________{for (int j=1,j<=n,i++)
________________________{if (i==1 || i==m || j==1 || j==n) System.out.print("*");
________________________else System.out.print("_");
________________________}
________System.out.println("_");
________________}
________}
}

Merci d'avance :)

PS : Pouvez-vous me dire comment faire des espaces en début de ligne ( sur le forum )? Car les _ font un peu moches :p)

Bunyan
Bunyan
Niveau 17
06 novembre 2009 à 21:23:53

Mets plutôt ton code sur des sites genre celui-ci : http://pastebin.com/ ou celui-là http://codepad.org/

Je pense que tu auras un problème et que tu obtiendras non pas quelque chose comme :

    • *****************
  • ..................*
    • *****************

(remplacer les "." par des espaces)

Mais plutôt quelque chose comme :

    • *****************

**

    • *****************
Sureliaz
Sureliaz
Niveau 5
06 novembre 2009 à 21:42:25

Merci de ta réponse :)

Mais que manque-t'il alors pour faire les espaces ? J'ai beau relire mon programme, je ne vois pas...

Bunyan
Bunyan
Niveau 17
06 novembre 2009 à 21:48:59

Je l'avais fait en C début octobre sur ce forum pour quelqu'un qui avait du mal a faire cet exercice.

Voila la solution :
http://codepad.org/f0rYwOnd

Bien que ce ne soit pas du Java, tu devrais la comprendre si tu déroules mentalement le code.

Pour ton exo 3, a part "tricher" un peu en ne faisant pas un programme "aveugle", je ne vois pas comment le réaliser.
Si tu sais qu'il y a 10 solutions et ce qu'elles sont, dans ce cas-là, il ne reste plus qu'a les afficher les unes après les autres.

Sureliaz
Sureliaz
Niveau 5
06 novembre 2009 à 21:59:09

Merci beaucoup :)

J'essaierais de faire l'exercice 3 demain, j'aurais sûrement les idées plus claires... :-d

Bunyan
Bunyan
Niveau 17
06 novembre 2009 à 22:01:07

Et si tu veux voir le cheminement qui a amené a cette solution, voici le sujet ou la question a été posée : https://www.jeuxvideo.com/forums/1-47-45425-1-0-1-0-petit-probleme-en-c.htm

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment