Noméro de jours de l'année a partir d'une date - C++ - Programmation
Marsh Posté le 12-02-2011 à 15:34:12
C'est pas mal ce que tu as fait, mais pas la peine de créer une entrée initiale inutile, et autant utiliser la table pour avoir le nb de jours déjà écoulés les mois précédents, plutôt que tout recalculer à chaque fois.
Tiens, partant de ton code, j'ai écrit rapidement ceci pour illustrer mes propos:
Code :
|
A+,
Marsh Posté le 13-02-2011 à 17:10:39
Merci beaucoup pour tes conseils!
ton programme m'a permis de comprendre certains trucks!
J'ai juste un autre souci, j'ais fais un autre programme, la compilation ne me donne aucune erreur mais en l'executant il y a un beug windows et je ne comprend pas pourquoi.
voici le sujet :
Exercice 2. Tri de tableaux.
On cherche à trier dans l’ordre croissant les éléments d’un tableau d’entiers. Il existe de très nombreuses méthodes de tri. Voici celle dite du “tri à bulles” : tant que le tableau n’est pas trié, on le parcourt du premier au dernier indice en échangeant les éléments consécutifs qui sont dans le mauvais ordre. Si, lors d’une passe, aucune paire d’éléments n’a été échangée, alors le tableau est trié.
Testez votre tri sur quelques tableaux d’un millier d’éléments :
– un tableau déjà ordonné,
– un tableau dans l’ordre décroissant,
– un tableau initialisé aléatoirement ; on pourra utiliser pour cela la fonction standard rand() (disponible après un #include <stdlib.h> ) qui renvoie un nouveau nombre au hasard à chaque appel.
Il y deux manières de tester votre tri :
– écrire une fonction d’affichage du tableau et laisser l’utilisateur vérifier de visu,
– écrire une fonction qui vérifie automatiquement que le tableau est bien trié en comparant les couples d’éléments consécutifs.
Note culturelle : dans la pratique, c’est la méthode dite du “tri rapide” qui est employée. Elle est plus complexe à programmer mais, comme son nom l’indique, plus rapide.
et voici ce que j'ai fais:
Code :
|
Merci d'avance pour tes conseils éclérés
a+
Marsh Posté le 13-02-2011 à 17:37:58
Citation : int T[n]; |
Ça ne peut pas marcher, puisque la valeur de n n'est pas connue à ce stade. Ça ne devrait même pas compiler.
Plusieurs remarques.
Il faut choisir: soit on fait du C, soit on fait du C++.
Si on fait du C++, on utilise les entrées sorties C++ et non pas celles du C (même si ça marche avec).
Donc ici:
#include<stdio.h> inutile, si on utilise plutôt
#include <iostream>
using namespace std; et si on remplace les printf et scanf par cout et cin.
Plutôt que de tout faire dans main, il est bien plus judicieux de faire quelque chose de modulaire:
- Une procédure de création et remplissage du tableau
- Une procédure de tri de tableau
- Une procédure d'affichage du tableau
De plus, quand on parcours un tableau,
for (i=1;i<=n;i++) { ...quelque chose avec T[i] }
ça ne marche pas, puisque l'indice pour un tableau varie de 0 à n-1 et non de 1 à n .
D'autre part, la boucle de tri est surement fausse, puisque l'on a:
for (j=1;j<=n;j++) {
en boucle principale et que j n'est plus jamais utilisé ensuite.
A+,
Marsh Posté le 13-02-2011 à 19:08:02
Merci beaucoup pour cette rapide reponse !
Je pense y arriver avec ces conseils.
a+
Marsh Posté le 13-02-2011 à 21:51:56
Bon, au cas ou ça peut en intéresser d'autres, une solution purement C++ utilisant des conteneurs standards (au vu de l'énoncé, c'est plus du code a la C avec des tableaux qui est attendu dans son exercice, donc c'est pas une solution prête à l'emploi pour l'auteur du topic)
Code :
|
A+,
Marsh Posté le 12-02-2011 à 12:46:38
Bonjours,
je suis débutant en programmation et j'ai un programme a écrire, mais j'ai tout essayer et je n'arrive pas à le faire fonctionner...
J'implore donc l'aide de quelqu'un!
Voici le sujet:
Programmez une fonction qui prend en argument un numéro de jour (entier entre 1 et 31), de mois (entier entre 1 et 12) et renvoie le numéro de jour dans l’année (entre 1 et 366). On utilisera pour cela un tableau contenant le nombre de jours de chaque mois.
Facultatif : modifiez votre fonction pour qu’elle gère les années bissextiles (tous les 4 ans, sauf les multiples de 100 qui ne sont pas multiples de 400).
et voici ce que j'ai réussi a faire:
Merci d'avance pour votre aide !
Message édité par gilou le 12-02-2011 à 15:39:29