urgent: cherche de l'aide pour finir un prog
j'ai vraiment besoin d'aide
------------
Pas d'"urgent" dans vos titre
urgent: cherche de l'aide pour finir un prog
j'ai vraiment besoin d'aide
------------
Pas d'"urgent" dans vos titre
bon qui commence .. aller je m efais plaisir , malgres un pseudo sympatiue , je ne pense pas que tu trouvera qq un pour faire ton prog , neamoin , si ut veux qu on t aide on le peux montre nous juste ou tu block dans ton programme , et qu elle probleme tu n arrive pas a resoudre
Wouaw, ça c'est du message, c'est la première fois que je vois ça ( et pourtant j'en ai vu )... Comme l'a dit Charly, montre nous où tu bloques au lieu de poster ce genre de message...
a+
voici la premiere partie du prog. c le developpement d'une epidemie.
J'arrive à le faire pour la premiere semaine. Le virus doit se propager danstoutes les villesavec un certain nombre de chance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 program massivedestruction; uses wincrt; type ville=record nomdeville:string; population:longint; nombredecas:real; end;{record} var liste:array[1..10] of ville; epidemie:ville; i,j:integer; pp:integer; {*********************************************************************************************} procedure deroulementsemaines; var encore : char; begin repeat writeln; writeln('semaine ',j); writeln('voulez vous continuer? (o)ui ou (n)on'); readln(encore); j:=j+1; until encore = 'n'; end; {*********************************************************************************************} procedure affichage; begin for i:=1 to 10 do begin epidemie:=liste[i]; writeln (epidemie.nomdeville,',population: ',epidemie.population,' ,nombre de cas: ',epidemie.nombredecas); end; end; {********************************************************************************************} Procedure choixdelavillededepart(var pp:integer); var p:integer; begin randomize; p:=random(10)+1; writeln('Ville de départ : ',liste[p].nomdeville); pp:=p; end; {*******************************************************************************************} Procedure nombredecas(pp:integer); var x:real; i:integer; begin randomize; x:=(random(3)+1)/100; liste[pp].nombredecas:=liste[pp].population*x; end; {******************************************************************************************} {******************************************************************************************} begin liste[1].nomdeville:='Paris'; liste[2].nomdeville:='Londres'; liste[3].nomdeville:='Rome'; liste[4].nomdeville:='Madrid'; liste[5].nomdeville:='Berlin'; liste[6].nomdeville:='Zurich'; liste[7].nomdeville:='Bruxelles'; liste[8].nomdeville:='Moscou'; liste[9].nomdeville:='Athenes'; liste[10].nomdeville:='Pekin'; liste[1].population:=2000000; liste[2].population:=1500000; liste[3].population:=500000; liste[4].population:=300000; liste[5].population:=1000000; liste[6].population:=200000; liste[7].population:=50000; liste[8].population:=300000000; liste[9].population:=800000; liste[10].population:=50000000; for i:=1 to 10 do liste[i].nombredecas:=0; choixdelavillededepart(pp); nombredecas(pp); j:=1; affichage; deroulementsemaines; end.
--------------------
Balise code par pascal, tu fait chier jf
ET ???J'arrive à le faire pour la premiere semaine. Le virus doit se propager danstoutes les villesavec un certain nombre de chance.
a+
et il faut que le virus se propage jusqu'a ce que toutes les populations de toutes les villes soit completement infectées
explique nous ton probleme !! plus precisemment ... car la je ocprends pas ou tu seche
Salut,je veux bien t'aider,
Pour ma part, ton programme a un serieux defaut au niveau de la fonction "deroulementsemaine". En effet, si tu choisis de continuer, ben ca ne fait rien justement a part incrementer ton nombre de semaines ce qui ne sert a rien.
De plus, tu demandes de saisir de saisir une ville de depart et en fait, elle est choisie aleatoirement donc quelle utilite de choisir une ville de depart. la variable pp n'est pas initialisé non plus...
De plus, c'est leplus important , tu ne definis aucune regle de propagation...
Si tu te bases juste sur le random. en algo ca donnerait ca (simplifie):
initialiser ville;
tantque le nombre de contaminesdemesvilles<=nombredevictimes faire
choisir villeauhasard;
dans cette ville
choisirnbredevictimes au hasard =<nombre d'habitants
soustraire le nombre de vistimes au nobre d'habitants
fintantque
voila en gors en reprenant tes declarations ca me ferait ca:
je te prie de pas vouloir critiquer si ca ne te convient pas car avec les infos que tu as donne c'etait dur de faire mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 ****************************************************** function TestVivant ():boolean; var cpt : integer; test:boolean; begin test=false; for cpt:=1 to 10 do begin if liste[cpt].nombredecas<>liste[cpt].population then test:=true; end; return test; end; ****************************************************** procedure epidemie(); var reste:integer; villenum:integer; begin villennum:=random(10)+1; reste:=liste[villeenum].population-liste[villenum].nombredecas; liste[villenum].nombredecas:= liste[villenum].nombredecas+(random(reste)+1); end; ****************************************************** begin while TestVivant=true do begin epidemie(); semaine=semaine+1; affichage(); end; end;
J'ai pas essaye (je suis creve) donc arrange ca a ta sauce mais sur leprincipe c'est bon.
A plus.
merci pour le coup de main .
je vais essayer de voir ce que ça donne.
mais je veux que le virus se developpe aléatoirement dans les autres villes.
mon programme , a chaque semaine infecte une ville aleatoire. (pourtant thouars n'est pas une de tes villes et donc impossible pour le virus d'aller-a-thouars ), ce n'est pas ce que tu voulais?
Salut !
Ton programme ne serait-il pas plus "parlant" s'il consistait en l'affichage permanent à l'écran de l'état de la population ?
Par exemple :
(je n'ai mis "code" que pour que tout soit aligné !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Semaine n° 4 de l'épidémie. Ville Population Infectés Paris 5.000.000 3.184 Bruxelles 1.500.000 1.832 Madrid 1.000.000 1.250 ... Pressez une touche pour passer à la semaine suivante : _
Ton programme consisterait alors en une boucle de lecture de caractères au clavier. A chaque touche pressée, tu passerais à la semaine suivante et tu appliquerais un Random à chaque ville pour décimer sa population. Tu mettrais alors à jour l'affichage à l'écran.
Ton programme ne s'arrêterait que lorsque toutes les villes seraient totalement infectées.
ça serait tres bien comme ça mais comment faire?
si tu peux me donner un petit coup de pouce merci
En reprenant mon exemple ,
je ferais ca:
Voila, bon courage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //Decalre cette variable au prealable! continu : char; ///////////////////////////////////////////// begin continu:=o; while (TestVivant=true and continu="o" ) do begin epidemie(); semaine=semaine+1; writeln(semaine numero: "+semaine); for i:=1 to 10 do begin writeln ("Ville "+Liste[i].nomdeville+"Population: "+ Liste[i].population+"Infectes: "+Liste[i].nombredecas); end; writeln ("Voulez vous continuer?(o/n)"); readln (continu); end; end;
Merci pour votre aide, c'est sympa.
Passez une bonne semaine.
Tu peux même garder un écran permanent et aller mettre à jour les différents chiffres en utilisant, par exemple, GotoXY ou CursorTo. Ca ferait plus "pro" !
j'ai du mal à replacer l'ensemble dans l'ordre de mon programme
je suis vraiment tres nul, mais il faut que je rende quelque chose à tous prix
merci d'avance
Voici le projet initial
1. Le développement d’une épidémie.
On se propose de simuler le développement d’une épidémie à l’aide du modèle suivant : la probabilité qu’un nouveau foyer d’épidémie se déclare dans une ville donnée est proportionnelle au nombre de foyers déjà existant dans la ville. On supposera qu’au départ, les villes sont exemptes de foyer d’épidémie. On supposera qu’au cours d’une semaine, il y a 1 chance sur 20 pour qu’un nouveau foyer se déclare dans une ville qui n’en contenait aucun, 2 chances sur 20 pour qu’un nouveau foyer se déclare dans une ville qui en contenait déjà 1, 3 chances sur 20 pour qu’un nouveau foyer se déclare dans une ville qui en contenait déjà 2, etc. On considèrera, par exemple, un ensemble de 10 villes. Le programmes fera défiler les semaines par une boucle et il comptabilisera le nombre de foyers qui se sont déclarés dans chaque ville. On pourra changer les paramètres du problème afin d’améliorer la simulation en tenant compte de la population des villes, qu’on se donnera d’avance.
j'ai un dernier probleme dans le programme.
J'ai un signe négatif qui apparait apres un certain nombre de semaine
voici le prog:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 program massivedestruction; uses wincrt; type ville=record nomdeville:string; population:longint; nombredecas:integer; end;{record} var liste:array[1..10] of ville; epidemie:ville; i,j:integer; pp:integer; continu:char; villenum:integer; semaine:integer; {***********************************************************************************} {function TestVivant :boolean; var cpt : integer; test:boolean; begin test:=false; for cpt:=1 to 10 do begin if liste[cpt].nombredecas<>liste[cpt].population then test:=true; end; end; {**********************************************************************************} procedure eppidemie; var reste:integer; villenum:integer; begin {villenum:=random(10)+1; } for villenum:=1 to 10 do begin {reste:=liste[villenum].population-liste[villenum].nombredecas;} reste := 5000; liste[villenum].nombredecas:= liste[villenum].nombredecas+abs(random(reste)); end; end; {******************************************************} procedure affichage; var continu:char; begin continu:='o'; while (continu <> 'n') do begin eppidemie; semaine:=semaine+1; writeln('semaine numero: ', semaine); for i:=1 to 10 do begin writeln ('Ville : ', Liste[i].nomdeville,', Population : ', Liste[i].population, ', Infectes : ',Liste[i].nombredecas); end; writeln ('Voulez vous continuer?(o/n)'); readln (continu); end; end; {******************************************************************************************} Procedure basededonnee; begin liste[1].nomdeville:='Paris'; liste[2].nomdeville:='Londres'; liste[3].nomdeville:='Rome'; liste[4].nomdeville:='Madrid'; liste[5].nomdeville:='Berlin'; liste[6].nomdeville:='Zurich'; liste[7].nomdeville:='Bruxelles'; liste[8].nomdeville:='Moscou'; liste[9].nomdeville:='Athenes'; liste[10].nomdeville:='Pekin'; liste[1].population:=2000000; liste[2].population:=1500000; liste[3].population:=500000; liste[4].population:=300000; liste[5].population:=1000000; liste[6].population:=200000; liste[7].population:=50000; liste[8].population:=300000000; liste[9].population:=800000; liste[10].population:=50000000; for i:=1 to 10 do liste[i].nombredecas:=0; end; {Programme principal} begin basededonnee; eppidemie; semaine:=semaine+1; affichage; end.
Je n'ai pas Turbo Pascal sous la main pour vérification et détails.
Mais si tu veux qu'à la fin, la population infectée soit égale à la population totale, il me semble que le type Integer ne permette pas d'aller aussi loin.
Utilises des longInt partout à la place des Integer. Notamment:
Cela ressemble à une erreur classique... quand la limite supérieure d'un type entier est atteinte et que tu ajoutes encore 1, tu te retrouves avec la limite inférieure (donc ici négative) du type entier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 type ville=record nomdeville:string; population:longint; nombredecas:longInt; end;{record}
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager