Program v C - pomoc

Programovacie jazyky, rady, poradňa...
iKevin
Novice
Novice
Príspevky: 3
Registrovaný: 27 jún 2012, 12:44

Program v C - pomoc

Príspevok od používateľa iKevin »

Čaute všetci. Potreboval by som pomoc s programom na výpočet objemu a povrchu telies (guľa, ihlan atd..).
Som zaciatocnik a neviem si s tým poradiť - program som napísal, skompiloval, ale výsledky sa nezhodujú s mojimi :? .
Môžete mi poradiť, čo s tým mám robiť? Tu je zdrojový kód:

Kód: Vybrať všetko

#include <stdio.h>
#include <conio.h>

int main(){
    int cislo;
    float v = 0;
    float r = 0;
    float s = 0;
    float PI = 3.14;
    float vysledok;
    
        printf("Vyberte si moznost vypoctu:\n\n");
        printf("\t1. Objem Gule\n");
        printf("\t2. Povrch Gule\n");
        
        printf("\t3. Objem Kuzela\n");
        printf("\t4. Povrch Kuzela\n");
        
        printf("\t5. Objem Valca\n");
        printf("\t6. Povrch Valca\n");
        
        scanf("%d", &cislo);
             
             switch(cislo){
                   /* Guľa */
                   case 1:          /* V Gule | V=4/3*PI*r*r*r */
                        printf("\nVlozte polomer gule:\n");
                        scanf("%f", &r);
                        vysledok = 4/3*PI*r*r*r;
                        printf("Vysledok je %f.\n", vysledok);
                        break;
                   case 2:          /* S Gule | S=4*PI*r*r */
                        printf("\nVlozte polomer gule:\n");
                        scanf("%f", &r);
                        vysledok = 4*PI*r*r;
                        printf("Vysledok je %f.\n", vysledok);
                        break;
                        
                   /* Kuzel */
                   case 3:          /* V Kužeľa | V=1/3*PI*r*r*v */
                        printf("\nVlozte polomer kuzela:\n");
                        scanf("%f", &r);
                        printf("Vlozte vysku kuzela:\n");
                        scanf("%f", &v);
                        vysledok = 1/3*PI*r*r*v;
                        printf("Vysledok je %f.\n", vysledok);
                        break;
                   case 4:          /* S Kuzela | S=PI*r*r+PI*r*s */
                        printf("\nVlozte polomer kuzela:\n");
                        scanf("%f", &r);
                        printf("Vlozte vysku kuzela:\n");
                        scanf("%f", &v);
                        printf("Vlozte dlzku strany kuzela:\n");
                        scanf("%f", &s);
                        vysledok = PI*r*r+PI*r*s;
                        printf("Vysledok je %f.\n", vysledok);
                        break;
                        
                        /* Valec */
                   case 5:          /* V Valca | V=PI*r*r*v */
                        printf("\nVlozte polomer valca:\n");
                        scanf("%f", &r);
                        printf("Vlozte vysku valca:\n");
                        scanf("%f", &v);
                        vysledok = PI*r*r*v;
                        printf("Vysledok je %f.\n", vysledok);
                        break;
                   case 6:          /* S Valca | S=2*PI*r*r+2*PI*r*v */
                        printf("\nVlozte polomer kuzela:\n");
                        scanf("%f", &r);
                        printf("Vlozte vysku kuzela:\n");
                        scanf("%f", &v);
                        vysledok = 2*PI*r*r+2*PI*r*v;
                        printf("Vysledok je %f.\n", vysledok);
                        break;
                        }
                   
                       
    system ("pause");
return 0;
    }
// Chcel som to urobiť bez math.h (čo som hľadal na internete, všade bol podobný program robený s hlav. súborom math.h) - ako som už vravel, som začiatočník, kúpil som si knižku P. Herouta, a ku hlavičkovému súboru math.h som sa ešte nedostal :).
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Program v C - pomoc

Príspevok od používateľa BX »

Keď chceš robiť s desatinými číslami, tak rob s desatinými číslami - používaj float, alebo double a odpovedajúci formát v scanf a printf
iKevin
Novice
Novice
Príspevky: 3
Registrovaný: 27 jún 2012, 12:44

Re: Program v C - pomoc

Príspevok od používateľa iKevin »

No, tak som to upravil na float (viď zdrojový kód hore) ale problém je, že mi to zle počíta.
Skopíruj si to a skompiluj. Napr. ak si vyberieš možnosť 3 - V Kužeľa, VŽDY ti to dá výsledok 0. Ale napr. valec (5. a 6. možnosť) vypočíta správne. Problém je len v 1. a 4. možnosti.
robbo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 209
Registrovaný: 11 okt 2008, 22:34

Re: Program v C - pomoc

Príspevok od používateľa robbo »

Problém je v tých zlomkoch 1/3 a 4/3, delí ti to tam celočíselne teda tie zlomky berie ako 0 a 1. Prepíš to napr. na 1.0/3 a 4.0/3
iKevin
Novice
Novice
Príspevky: 3
Registrovaný: 27 jún 2012, 12:44

Re: Program v C - pomoc

Príspevok od používateľa iKevin »

Ah, už to ide :). Díky moc.

//autoeditácia príspevku (29 Jún 2012, 16:35)
Čaute všetci. Znovu potrebujem vašu pomoc :).

Trochu som ten program prepísal, ale nedá sa mi skompilovať. Môžete sa mi na to pezrieť? :smt017
Spoiler

Kód: Vybrať všetko

#include <stdio.h>
#include <conio.h>

int main(){
    
    int moznost;
    int podstava = 0;
    float v = 0;
    float r = 0;
    float s = 0;
    float PI = 3.14159265;
    float vysledok;
    float a = 0;
    float b = 0;
    float c = 0;
    float va = 0;
    
    printf("Vyberte si moznost vypoctu:\n\n");
    
                    printf("\t1. Objem Gule\n");
                    printf("\t2. Povrch Gule\n");
        
                    printf("\t3. Objem Kuzela\n");
                    printf("\t4. Povrch Kuzela\n");
        
                    printf("\t5. Objem Valca\n");
                    printf("\t6. Povrch Valca\n");
    
                    printf("\t Objem Ihlana\n");
                    printf("\t Povrch Ihlana\n");
    
    scanf("%d", &moznost);
    
                switch(moznost){
                                /* Guľa */
                                case 1:
                                     printf("\nVlozte polomer gule:\n");
                                     scanf("%f", &r);
                                     vysledok = 4.0/3*PI*r*r*r;
                                     printf("Vysledok je %f.\n", vysledok);
                                     break;
                                case 2:
                                     printf("\nVlozte polomer gule:\n");
                                     scanf("%f", &r);
                                     vysledok = 4*PI*r*r;
                                     printf("Vysledok je %f.\n", vysledok);
                                     break;
                                     
                                 /* Kuzel */
                                case 3:
                                     printf("\nVlozte polomer kuzela:\n");
                                     scanf("%f", &r);
                                     printf("Vlozte vysku kuzela:\n");
                                     scanf("%f", &v);
                                     vysledok = 1.0/3*PI*r*r*v;
                                     printf("Vysledok je %f.\n", vysledok);
                                     break;
                                case 4:
                                     printf("\nVlozte polomer kuzela:\n");
                                     scanf("%f", &r);
                                     printf("Vlozte vysku kuzela:\n");
                                     scanf("%f", &v);
                                     printf("Vlozte dlzku strany kuzela:\n");
                                     scanf("%f", &s);
                                     vysledok = PI*r*r+PI*r*s;
                                     printf("Vysledok je %f.\n", vysledok);
                                     break;
                                     
                                /* Valec */
                                case 5:
                                     printf("\nVlozte polomer valca:\n");
                                     scanf("%f", &r);
                                     printf("Vlozte vysku valca:\n");
                                     scanf("%f", &v);
                                     vysledok = PI*r*r*v;
                                     printf("Vysledok je %f.\n", vysledok);
                                         break;
                                case 6:
                                     printf("\nVlozte polomer kuzela:\n");
                                     scanf("%f", &r);
                                     printf("Vlozte vysku kuzela:\n");
                                     scanf("%f", &v);
                                     vysledok = 2*PI*r*r+2*PI*r*v;
                                     printf("Vysledok je %f.\n", vysledok);
                                     break;
                                     
                                /* Ihlan */
                                case 7:
                                     printf("\nTyp podstavy:\n");
                                     printf("\t1. Trojuholnik");
                                     printf("\t2. Stvorec");
                                     printf("\t3. Obdlznik");
                                     printf("\t4. Rovnobeznik");
                                     printf("\t5. Lichobeznik");
                                     
                                                  scanf("%d", &podstava);
                                                              
                                                                  if(podstava == 1){
                                                                          printf("Vlozte dlzku strany trojuholnika\n");
                                                                          scanf("%f", &a);
                                                                          printf("Vlozte vysku trojuholnika\n");
                                                                          scanf("%f", &va);
                                                                          printf("Vlozte vysku ihlana\n");
                                                                          scanf("%f", &v);
                                          
                                                                          vysledok = a*va/2.0*v/3.0
                                                                          printf("Vysledok je %f.\n", vysledok);
                                                                          }
                                                                  if(podstava == 2){
                                                                          printf("Vlozte dlzku strany stvorca\n");
                                                                          scanf("%f", &a);
                                                                          printf("Vlozte vysku ihlana\n");
                                                                          scanf("%f", &v);
                                          
                                                                          vysledok = a*a*v/3.0
                                                                          printf("Vysledok je %f.\n", vysledok);
                                                                          }
                                                                  if(podstava == 3){
                                                                          printf("Vlozte dlzku strany a\n");
                                                                          scanf("%f", &a);
                                                                          printf("Vlozte dlzku strany b\n");
                                                                          scanf("%f", &b);
                                                                          printf("Vlozte vysku ihlana\n");
                                                                          scanf("%f", &v);
                                          
                                                                          vysledok = a*b*v/3.0
                                                                          printf("Vysledok je %f.\n", vysledok);
                                                                          }
                                                                  if(podstava == 4){
                                                                          printf("Vlozte dlzku strany a\n");
                                                                          scanf("%f", &a);
                                                                          printf("Vlozte vysku strany a\n");
                                                                          scanf("%f", &va);
                                                                          printf("Vlozte vysku ihlana\n");
                                                                          scanf("%f", &v);
                                          
                                                                          vysledok = a*va*v/3.0
                                                                          printf("Vysledok je %f.\n", vysledok);
                                                                          }
                                                                  if(podstava == 5){
                                                                          printf("Vlozte dlzku strany a\n");
                                                                          scanf("%f", &a);
                                                                          printf("Vlozte dlzku strany c\n");
                                                                          scanf("%f", &c);
                                                                          printf("Vlozte vysku lichobeznika\n");
                                                                          scanf("%f", &va);
                                                                          printf("Vlozte vysku ihlana\n");
                                                                          scanf("%f", &v);
                                          
                                                                          vysledok = ((a+c*va/2.0)*v/3.0
                                                                          printf("Vysledok je %f.\n", vysledok);
                                                                          }
                                                                  else{
                                                                       printf("Error 37");
                                                                       }
                                          break;
                                case 8:
                                     printf("\nTyp podstavy:\n");
                                     printf("\t1. Trojuholnik");
                                     printf("\t2. Stvorec");
                                     printf("\t3. Obdlznik");
                                     printf("\t4. Rovnobeznik");
                                     printf("\t5. Lichobeznik");
                                     
                                                  scanf("%d", podstava);
                                                  
                                default:
                                        printf("Error 37");
                }
    
    getch();
}
// Problémy sú pri funkciách if.
metthal
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2475
Registrovaný: 26 jan 2006, 18:32
Bydlisko: Nitra / Brno

Re: Program v C - pomoc

Príspevok od používateľa metthal »

:roll: Ludia, aj niekedy citate co vam pise za chyby pri kompilovani? Chybaju ti bodkociarky na konci riadkov pri priradovani do vysledku v case ihlana.
jorg22
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1087
Registrovaný: 12 aug 2006, 20:39
Kontaktovať používateľa:

Re: Program v C - pomoc

Príspevok od používateľa jorg22 »

chybaju ti bodkociarky a jedna zatvorka, compiler ti vypise na ktorych riadkoch konkretne.
Napísať odpoveď