| Autor | Správa |
math-ew
 Užívateľ
 Založený: 14.01.2012 Príspevky: 20
 |
Zdravím, riesim logisticky prepoctovy programik a viaznem zrejme na banalite .. no skratka mam vytvorenu funkciu ktora po jej vlozeni pomocou pointrov vzajomne prehodi hodnoty dvoch premennych ..z troch. podla toho ktore urcim v hlavicke funkcie..ide o prieskum vsetkych kombinacii z troch prvkov. cize vlozim fciu a zadam prvy vzorec ..malo by nasledovat dalsich 7 inych vzorcov..nasledne zas vlozim tu istu funkciu, cize mam novu komb. a zas zvazok tych istych vzorcov..ale problem je ze aj ked kombinacna fcia je funkcna..zo vzorcov mi tlaci stale 0.Viete mi povedat preco ?Dakujem za kazdu radu...vkladam zjednoduseny kod len s podstatou.Dakujem
| kód: | #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int Dmj1r, Smj1r, Vmj1r, Hmj1r, Qmj1r, Dpal, Spal, pk1v;
void kombi(float *a, float *b);
main() {
float Dmj1r, Smj1r, Vmj1r, Hmj1r, Qmj1r, Dpal, Spal, pk1v;
printf("zadaj DLZKU mj1r v <m>: \n"); scanf("%f",&Dmj1r);
printf("zadaj SIRKU mj1r v <m>: \n"); scanf("%f",&Smj1r);
printf("zadaj VYSKU mj1r v <m>: \n"); scanf("%f",&Vmj1r);
printf("zadaj HMOTNOST mj1r v <kg>: \n"); scanf("%f",&Hmj1r);
printf("zadaj POCET mj1r v <ks>: \n"); scanf("%f",&Qmj1r);
kombi(&Dmj1r, &Smj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Smj1r, &Vmj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Dmj1r, &Smj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Smj1r, &Vmj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Dmj1r, &Smj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Smj1r, &Vmj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
system("pause");
}
/* FUNCTIONS */
void kombi(float *a, float *b){
float p;
p=*a;
*a=*b;
*b=p;
} |
// pridané po 50 minútach od posledného príspevku
vlastne potrebujem vysledky tych vzorcov ktore nasledne budem vyhodnocovat v dalsich castiach prog. |
| |
  |
 |
BX
 Užívateľ
 Založený: 17.07.2011 Príspevky: 94
 | Zaslal: Po 23.01.12 10:50 |   |
To môžeš byť celkom rád, že ti tam chodia aspoň nuly.
| kód: | | pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r)) |
Premenné Dpal a Spal majú akú hodnotu?
A čo tam robia tie globálky s rovnakými menami? Dúfam, že to tam nie je naschvál... |
| |
   |
 |
math-ew
 Užívateľ
 Založený: 14.01.2012 Príspevky: 20
 | Zaslal: Po 23.01.12 14:31 |   |
spravne postrehy a pekne povedane (: ale to su len preklepy.. samozrejme ze Dpal a Spal idu tiez z klavesy a tie globalne bol omyl ale po odstraneni sa nic nezmenilo..moze byt problem ze to robim v devc++ ? ak som spravne postrehol podpora c by mala fungovat. no prenikam do tychto veci len pomaly .. vdaka |
| |
  |
 |
BX
 Užívateľ
 Založený: 17.07.2011 Príspevky: 94
 | Zaslal: Po 23.01.12 15:32 |   |
Tak som to vyskúšal (A v DevCpp aby sa nepovedalo) a akonáhle inicializujem Dpal a Spal, všetko ide a nuly nevidím.
Skúšam to s hodnotami:
Dpal = 1000;
Spal = 500;
Vstup:
100
60
40
30
3 |
| |
   |
 |
math-ew
 Užívateľ
 Založený: 14.01.2012 Príspevky: 20
 | Zaslal: Po 23.01.12 17:42 |   |
spravne, nasledovny zaver som totiz necakal..Pri normalej priamej inicializacii Dpal a Spal to slape. ale problem zrejme robia fcie pre Dpal a Spal ktore som najprv neuviedol kvoli adminmi odporucanej strucnosti. Ide o fcie osetrujuce presiahnutie rozmerovych limit. Cize bez nich to ide..po ich vlozeni prebieha inicializacia Dpal a Spal nepriamo cez fcie a tak mi to hadze nuly.(a po tychto fciach nasleduje este priama inicializacia dalsich premennych..to len mimochodom) tak vkladam este raz kod aj s tymi fciami...ak by si sa nato nahodou mohol este mrknut..alebo niekto ... fakt diks.
| kód: | #include <stdio.h>
#include <stdlib.h>
#include <math.h>
float dlzkap(float Dpal, float Dmj1r);
float sirkap(float Spal, float Smj1r);
void kombi(float *a, float *b);
main() {
float Dmj1r, Smj1r, Vmj1r, Hmj1r, Qmj1r, Dpal, Spal, Vpal, Hpal, Dlp, Slp, Vlp, Nlp,
pk1v, H1v, pv, Vmj2r, Hmj2r, pkNaPal, PPP, PPMpo, PPMpr;
printf("zadaj DLZKU mj1r v <m>: \n"); scanf("%f",&Dmj1r);
printf("zadaj SIRKU mj1r v <m>: \n"); scanf("%f",&Smj1r);
printf("zadaj VYSKU mj1r v <m>: \n"); scanf("%f",&Vmj1r);
printf("zadaj HMOTNOST mj1r v <kg>: \n"); scanf("%f",&Hmj1r);
printf("zadaj POCET mj1r v <ks>: \n"); scanf("%f",&Qmj1r);
dlzkap(Dpal, Dmj1r); /* tieto dve fcie zrejme robia problem */
sirkap(Spal, Smj1r);
printf("zadaj VYSKU pal. v <m>: \n"); scanf("%f",&Vpal);
printf("zadaj VAHU pal. v <m>: \n"); scanf("%f",&Hpal);
printf("\nzadaj DLZKU loznej plochy v <m>: \n"); scanf("%f",&Dlp);
printf("zadaj SIRKU loznej plochy v <m>: \n"); scanf("%f",&Slp);
printf("zadaj VYSKU loznej plochy v <m>: \n"); scanf("%f",&Vlp);
printf("zadaj NOSNOST loznej plochy v <kg>: \n"); scanf("%f",&Nlp);
kombi(&Dmj1r, &Smj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Smj1r, &Vmj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Dmj1r, &Smj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Smj1r, &Vmj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Dmj1r, &Smj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
kombi(&Smj1r, &Vmj1r);
printf("\n %.3f %.3f %.3f \n", Dmj1r, Smj1r, Vmj1r);
pk1v=(floor(Dpal/Dmj1r))*(floor(Spal/Smj1r));
printf("\n %.0f \n", pk1v);
system("pause");
}
/* FUNCTIONS */
float dlzkap(float Dpal, float Dmj1r){
do{
printf("\nzadaj DLZKU pal. v <m>: \n"); scanf("%f",&Dpal);
if(Dpal<Dmj1r)
printf("\nDlzka mj1r je vacsia ako dlzka pal.\n");
}
while(Dpal<Dmj1r);
}
float sirkap(float Spal, float Smj1r){
do{
printf("zadaj SIRKU pal. v <m>: \n"); scanf("%f",&Spal);
if(Spal<Smj1r)
printf("\nSirka mj1r je vacsia ako sirka pal.\n");
}
while(Spal<Smj1r);
}
void kombi(float *a, float *b){
float p;
p=*a;
*a=*b;
*b=p;
}
|
|
| |
  |
 |
BX
 Užívateľ
 Založený: 17.07.2011 Príspevky: 94
 | Zaslal: Po 23.01.12 21:10 |   |
Nevidím, že by si ich nastavoval.
Vidím funkciu, ktorej predáš ako parameter neinicialozovanú premennú a práve načítanú premennú, niečo s nimi urobíš a toť vše. Ak chceš načítať premennú vo funkcii, predaj funkcii len ukazateľ na ňu tak, ako to robíš v kombi() |
| |
   |
 |
math-ew
 Užívateľ
 Založený: 14.01.2012 Príspevky: 20
 | Zaslal: Po 23.01.12 22:22 |   |
|
  |
 |
BX
 Užívateľ
 Založený: 17.07.2011 Príspevky: 94
 | Zaslal: Ut 24.01.12 10:49 |   |
Niet za čo  |
| |
   |
 |
|
Nemôžete pridávať nové témy do tohto fóra. Nemôžete odpovedať na témy v tomto fóre. Nemôžete upravovať svoje príspevky v tomto fóre. Nemôžete mazať svoje príspevky v tomto fóre. Nemôžete hlasovať v tomto fóre.
|
|