un petit ex en c++ - C++ - Programmation
Marsh Posté le 22-10-2005 à 11:36:47
balise code
Marsh Posté le 22-10-2005 à 17:39:42
Le monsieur te demande de mettre ton code dans des balises [ cpp ] ton code ici [ /cpp ] :
Code :
|
(comme expliqué dans les règles du forum )
Marsh Posté le 22-10-2005 à 17:49:09
A ok.Je m'excuse.
Code :
|
Marsh Posté le 22-10-2005 à 19:59:49
L'erreur vient sans aucun doute de ta partie plot_sin: Y=asin(i,eps) car ton i prend des valeurs comme hautarc qui ne sont pas dans [-1,1]. Fais donc un second rapport de proportionnalité j/2 = i/hauteur et ton j sera ce que l'asin devra calculer. Je ne vois pas l'utilité de la nouvelle variable hautarc.
Quant à l'autre rapport de proportionnalité, X = Y * (largeur/pi).
La valeur de l'eps que tu as a pris me parait un peu petite, 0.01 suffirait je pense.
Et n'oublie pas de tenir en compte nb_per: repet la seconde boucle for nb_per fois.
Marsh Posté le 22-10-2005 à 20:15:47
C'est vraiment tres sympa de me répondre mais comme je débute en C++ et je suis vraiment très nul j'ai pas vraiment bien compris
(Je sais j'en fait un peu trop et j'ai honte)
Marsh Posté le 22-10-2005 à 20:22:48
T'inquiète pas, j'ai jamais fait de C. Ou presque. Mais la difficultée n'est pas dans le langage parce qu'on ne te demande rien de technique, elle est dans la mise en équations.
T'as compris ton X=Y*(10/pi) ou tu l'as copié sur quelqu'un? (c'est un rapport de proportionnalité X/10=Y/pi)
C'est un devoir info de deug mias ça?
Marsh Posté le 23-10-2005 à 11:51:10
C'est ca en fait , ta fait mouche.
En fait je n'ait fait que suivre qques exercices qu'on a fait en classe.
Mais je vais être franc avec toi j'y pige rien a cet execrcice je l'ai même copier sur un "copain" qui ma assuré que ca marche et que c'est le bon exercice et tralala et trilili, tu vois le truc, il ma eu quoi, il voulais être le seul qui a fait un exercice qui tient la route.Lui il a doublé et ce que nous on fait c'est facile pour lui et il se permet de se foutre un peu de nous les nouveau.
C'est pour cela que je suis enervé et je veut absolument faire cette exercice.Tu comprends?
Marsh Posté le 23-10-2005 à 14:05:51
Mais non c'est le bon code, il y a juste une ou deux grosse erreur.
Compile le code en remplaçant le plot_sin par celui-ci:
void plot_sin(int nb_per, int largeur, int hauteur)
{
double Y, X;
double j=2*i/hauteur;
cout<< "^" << endl;
for(double i=hauteur; i >= -hautarc; --i)
{
Y = asin (j,eps);
X = Y * (10/pi);
cout<< '|';
for(double i=0; i < X; ++i)
{
cout<< ' ';
}
cout<< 'X' << endl;
}
}
Et change const double eps = 1.0e-5 à 0.01.
Puis dis ça s'améliore un peu. Ensuite il manquera plus qu'un ou deux détails.
Marsh Posté le 23-10-2005 à 19:21:40
Merci mec t'es trop sympa.Ils sont rares les gens comme toi.
Je vais essayer ca et je te dis quoi.
Encore merci
Marsh Posté le 24-10-2005 à 11:02:41
En fait j'ai fait l'exercice mais ca fait que calculer la valeur de arcsin.
Ca n'afiche pas le graphe c'est ca le truc.
Je vais te mettre ce que j'ai fait.
Code :
|
Je viens de la changer et j'obtiens que des x en verticale
Marsh Posté le 24-10-2005 à 14:41:10
Ca ne calculait pas du tout arcsin.
Celui-ci oui par contre, avec le tracé d'une sinusoide un peu fouillie:
Code :
|
Marsh Posté le 24-10-2005 à 16:14:21
Merci ca m'aide bcp ton exercice mais juste un truc qui cloche, le graphe n'est pas juste.En fait j'obtien ceci en compilant:
^
| XX
| X X
| X X
| X X
| X X
| X X
| X X
| X X
|X X
| X X
| X X
| X X
| X X
| X X
| X X
| X X
| X X
| XX
Marsh Posté le 24-10-2005 à 16:49:35
En fait l'erreur est dans la declaration des periodes.
Car il ya q'une seule periode c'est ca le truc.Meme si j'en met plusieurs ca me donne tjrs une comme cette exemeple-ci:
^
| XX
| X X
| X X
| X X
| X X
| X X
| X X
| X X
+---------------------------------------->
|X X
| X X
| X X
| X X
| X X
| X X
| X X
| X X
| X X
| XX
Ca c'est si je mets 2 periodes, 40 hauteur et 16 largeur
Marsh Posté le 24-10-2005 à 16:50:14
+---------------------------------------->
J'ai rajouté ceci car c'etait pas dedans
Marsh Posté le 24-10-2005 à 17:07:21
C'est un détail.
Celui-ci trace une sinusoide moins fouillie (prend le cas 1 / 20 / 16) :
Code :
|
Marsh Posté le 24-10-2005 à 19:19:14
Excuse moi de te derranger a nouveau mais j'obtiens tjrs pas le graphe.
Mais c'est vrai que cette fonction est vraiment bien.Merci
Marsh Posté le 24-10-2005 à 19:35:54
Oui oui il y aurait toujours le nombre de périodes à prendre en compte mais c'est pas à moi de le faire (bcp trop chiant comme truc!). Et il y a une petite dyssimétrie dans chaque de-mipériode à corriger. A part ça c'est le bon tracé.
Marsh Posté le 24-10-2005 à 19:47:56
Ouais je sais c'est pour ca que je vous demande de l'aide mais merci quand meme c'était deja une grande aide ce que ta fait jusqu'à présent.
Merci et bientot pour un prochain exercice peut etre lol!!
Marsh Posté le 25-10-2005 à 16:17:42
Salut les gars.Je sais que j'en fais un peu trop mais j'ai besoin de votre aide encore une derniere fois car j'arrive vraiment pas a terminer l'exercice.
J'ai avancé un peu mais je bloque tjrs ( je sais je suis nul )
Voila le code:
Code :
|
Svp aidez moi j'en ai besoin pour demain.
Marsh Posté le 07-11-2005 à 17:29:05
Salut c'est encore moi.
J'ai encore besoin de votre aide pour un autre exercice.
Il s'agit de cette fois d'un caclul matriciel.
Voici l'enoncé:http://www.ulb.ac.be/di/info-f-101/Projets/05-06/projet3.pdf
Je voulais aussi vous remercier pour votre aide concernant l'exercice d'avant.
Grave a vous j'ai pu le reussir.Merci bcp.
Je vais vous mettre le solution pour ceux qui les interesse:
Voici le site de la soluce avec d'autres exercices:http://www.ulb.ac.be/di/info-f-101/
Voila ben encore merci et j'espere que vous allez encore m'aider.
Marsh Posté le 07-11-2005 à 18:50:43
boob05 a écrit : Salut c'est encore moi. |
lis les règles, si tu ne t'es pas investi un minimum, personne ne devrai te répondre ...
La, tu balance l'énoncé du sujet en lien, démerdez vous. Personnellement,je prend ça comme une insulte, et je ne dois pas etre le seul.
Fais ce programme, et en cas de blocage, tu demandes.
Marsh Posté le 07-11-2005 à 20:20:19
Je n'insulte personne la désolé mais comment veut-tu que je m'investisse
quand je ne sais meme pas me débrouiller pour mes propres exercices.
J'ai pourtant essayé mais je n'y arrive pas et en plus je vous demande pas de me résoudre l'exercice vite fait commca.Si tu veut pas m'aider tant pis je t'y oblige pas.Mais sache que je me permetrais jamais de me foutre de vous ca il faut que vous le sachiez!!!Mais ca me rend vraiment triste ce que tu me dis la mais bon.
Marsh Posté le 07-11-2005 à 20:27:39
Dans ce cas-là, il te faut acheter un bouquin ou lire les tutoriaux sur le net en supplément à tes cours.
++fab a raison, on peut intervenir sur des points de problème précis, mais on ne résoud pas les exercices...
Marsh Posté le 07-11-2005 à 20:55:31
boob05 a écrit : Je n'insulte personne la désolé mais comment veut-tu que je m'investisse |
bon, on a tous débuté un jour. Et vu que j'étais particulièrement mauvais à mes débuts, je suis pret à comprendre ta détresse. Quel est le sujet ? qu'est-ce que tu as commencé à écrire ?
PS: mettre le sujet en lien ou copier-coller tel quel, c'est vraiment mal vu. Si tu ne le savais pas, maintenant tu le sais.
Marsh Posté le 07-11-2005 à 21:08:19
Écrivez une fonction sousMatriceCarreeLaPlusDense(int A[TAILLE][TAILLE],int n), où :
A est une matrice carrée positive,
n représente sa taille,
TAILLE est une constante donnant la taille maximale possible pour A.
qui doit trouver et afficher la sous-matrice carrée la plus dense.
Définitions :
une sous-matrice de A est lensemble des éléments contenus entre un coin supérieur gauche A[i][ j] et
un coin inférieur droit A[k][l] avec i <= k et j <= l,
la densité dune matrice est la somme de ses éléments divisée par sa taille.
Exemple Soit la matrice :
A= | 4 6 10 |
|2 4 5 |
|2 3 1 |
Après application de la fonction sur A, saffiche à lécran :
Sous-matrice la plus dense:
6 10
4 5
Densite:
12.5
car la somme fait : 6+10+4+5 = 25 et la dimension est 2. Dans le cas où plusieurs sous-matrices ont la
même densité, cest la première trouvée qui doit être affichée.
Voila l'énnoncé.
Ben le fait est que je ne vois pas comment commencer
PS:quand tu dis que t'étais mauvais à tes début, pourrait tu me dire comment ta fait pour y remédier.
Marsh Posté le 07-11-2005 à 21:47:03
boob05 a écrit : Ben le fait est que je ne vois pas comment commencer |
Ton problème est plutot d'ordre algorithmique, dans ce cas le bon forum est plutot la partie algo, mais bon passons.
Et bien, tu décomposes ton problème :
parcourir ta matrice A, à partir de chaque élément (A[i][j]), en extraire toutes les sous matrices, et pour chaque sous matrice, calculer sa "densité".
tu stocke la sous matrice ayant la densité maximum dans un coin, et tu l'écrase par une autre sous matrice lorsque celle-ci a une densité *strictement* supérieure.
Le choix de faire ça avec des matrices C-staile, ça va te faire chier.
Et le paramètre n, je ne l'ai pas compris :|
Si ta matrice peut prendre des coefs négatifs, les sous matrices extraites vont jusqu'à la matrice (1,1).
boob05 a écrit : |
je ne suis pas sur d'y avoir remédier un jour, ça m'a intéressé, mais ça n'a pas été immédiat.
Marsh Posté le 09-11-2005 à 11:59:29
Salut.En fait j'ai essayé de faire qqchose mais j'arrive pas loin
Voila ce que j'ai deja fait:
Code :
|
Je sais que c'est rien mais croyez moi j'ai vraiment essayé
Marsh Posté le 09-11-2005 à 19:42:28
pour le calcul de la densité, tu peux peut être faire comme ceci.
Attention, ça reste à des années lumières de la bonne façon de torcher ce problème ( ie à coup de slice, accumulate , valarray ou ublas::matrix<>, ... )
Code :
|
reste à faire une fonction pour extraire les sous matrices ...
Si j'ai bien compris, les sous matrices ont taille lignes, taille colonnes.
Marsh Posté le 09-11-2005 à 20:37:35
Ouais je pense que c'est ca.Moi aussi j'ai essayé mais je bloque.Déjà ça c'est un miracle
Marsh Posté le 10-11-2005 à 14:38:09
En fait je crois pas qu'on puisse utiliser le include cassert et les std::.
Apart ca je crois que le but de l'execice est de trouver la sou matrice la plus dense.
Marsh Posté le 10-11-2005 à 19:35:30
boob05 a écrit : En fait je crois pas qu'on puisse utiliser le include cassert et les std::. |
Ah ?
Citation : Apart ca je crois que le but de l'execice est de trouver la sou matrice la plus dense. |
tu crois ?
Marsh Posté le 10-11-2005 à 19:56:30
Bon ok c'est bon tu veut pas m'aider c'est une chose mais t'es pas obligé de te foutre de moi ok?
Marsh Posté le 10-11-2005 à 20:08:55
10 et un mars aussi .... y a deja un bout de soluce là faut pas pousser non plus, on va pas te le faire ton exo
Marsh Posté le 10-11-2005 à 20:14:16
Hey boob05 je coirs que tu abuses la, ++fab te donne deja pas mal de pistes, on dirait que tu veux juste que quelqu'un fasse le probleme a ta place. C'est un forum d'entraide, on va pas passer tes exams a ta place... Si tu comprends rien aux math et/ou en info va a ta BU et prends des bouquins. C'est pas tres complique, il faut juste s'y mettre, avec un peu de volonté et d'investissement personnel tu vas y arriver.
Marsh Posté le 17-11-2005 à 20:16:14
boob05 a écrit : Je n'insulte personne la désolé mais comment veut-tu que je m'investisse |
alors c'est dur l'ULB mon coco
allez bleu rdv à la St-V
Marsh Posté le 17-11-2005 à 20:46:06
ehben a écrit : alors c'est dur l'ULB mon coco |
T'es a l'ulb aussi.
Pour la St-V laisse tomber il faut que je ratrappe mon retard!
Ps: "bleu" hihi
Marsh Posté le 22-10-2005 à 11:34:09
Je dois faire un execrice en c++ pour bientot mais j'ai un peu de mal a obtenir ce qu'on me demande.
http://www.ulb.ac.be/di/info-f-101 [...] rojet2.pdf
Ceci est le lien de l'ennoncé de l'ex.
J'ai essayé de faire l'ex tout seul mais malheureusement j'obtiens pas ce qu'on me demande!!.
* #include <iostream>
* #include <math.h>
*
* using namespace std;
*
* const double eps = 1.0e-5;
*
* const double pi= 4*(atan (1.0));
*
* double asin(double x, double eps)
* {
* double terme=x, asinus=0;
* if(x==1)
*
* asinus= pi/2;
*
* else if(x==-1)
*
* asinus= -(pi/2);
*
* else
* {
* for(int i=1; abs(terme) >= eps; ++i)
* {
* terme *= (double(((2*i)-1)*(( 2*i )-1 ) / ( 2*i )*(( 2*i )+1))*x*x);
* asinus += terme;
* }
*
* }
* return asinus;
* }
*
* void affichage(double nb, double car)
* {
* for(int i=1; i<=nb; ++i)
*
* cout<< car;
* }
*
* void plot_sin(int nb_per, int largeur, int hauteur)
* {
* double Y, X;
* double hautarc = (hauteur/2)-1;
*
* cout<< "^" << endl;
*
* for(double i=hautarc; i >= -hautarc; --i)
* {
* Y = asin (i,eps);
* X = Y * (10/pi);
* cout<< '|';
*
* for(double i=0; i < X; ++i)
* {
* cout<< ' ';
* }
* cout<< 'X' << endl;
* }
* }
*
*
* int main()
* {
* int nb_per, largeur, hauteur;
* cin>> nb_per >> largeur >> hauteur;
* plot_sin(nb_per, largeur, hauteur);
* }
Voila ce que je fais mais j'obtiens pas le graph demandé.
Si qqun peut me corriger ce serait tres sypma.
Merci d'avance.