-kga- Skrevet 31. august 2005 Del Skrevet 31. august 2005 Starta og programer for første gang i går, har vel holdt på en fem timer tid. Lurte på om det er noen lettere måte og skrive dette på. Ble veldig mye iffer og setninger og slikt. Er det slik det er, eller lærer jeg mer forkortings metoder senere? //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { int post; int vekt; printf("Tast in nvekta paa brevet i hele gram \n"); printf(":"); scanf("%d", &vekt); printf("\n\n"); printf("Velg type brev du skal sende\n"); printf("Tast 1 for A-post\n"); printf("Tast 2 for B-post\n"); printf(":"); scanf("%d", &post); printf("\n\n\n"); { if (post==1) { if (vekt<20) printf("Du maa betale 4.20kr for og sende %d grams brev med A-post",vekt); if ((vekt>20) && (vekt<50)) printf("Du maa betale 6.30kr for og sende %d grams brev med A-post",vekt); if ((vekt>50) && (vekt<100)) printf("Du maa betale 8.00kr for og sende %d grams brev med A-post",vekt); if ((vekt>100) && (vekt<250)) printf("Du maa betale 15.00kr for og sende %d grams brev med A-post",vekt); if ((vekt>250) && (vekt<500)) printf("Du maa betale 26.50kr for og sende %d grams brev med A-post",vekt); if ((vekt>500) && (vekt<1000)) printf("Du maa betale 42.00kr for og sende %d grams brev med A-post",vekt); } if (post==2) { if (vekt<20) printf("Du maa betale 3.60kr for og sende %d grams brev med B-post",vekt); if ((vekt>20) && (vekt<50)) printf("Du maa betale 5.40kr for og sende %d grams brev med B-post",vekt); if ((vekt>50) && (vekt<100)) printf("Du maa betale 7.00kr for og sende %d grams brev med B-post",vekt); if ((vekt>100) && (vekt<250)) printf("Du maa betale 12.00kr for og sende %d grams brev med B-post",vekt); if ((vekt>250) && (vekt<500)) printf("Du maa betale 22.50kr for og sende %d grams brev med B-post",vekt); if ((vekt>500) && (vekt<1000)) printf("Du maa betale 35.00kr for og sende %d grams brev med B-post",vekt); } } getchar();getchar(); return 0; } //--------------------------------------------------------------------------- Lenke til kommentar
willbend Skrevet 31. august 2005 Del Skrevet 31. august 2005 Ja, isteden for alle if'ene kan du bruke switch isteden. Lenke til kommentar
Mr.Garibaldi Skrevet 31. august 2005 Del Skrevet 31. august 2005 Ja, isteden for alle if'ene kan du bruke switch isteden. Tror ikke du tjener så mye på å kjøre switch/case annet enn på første if.. her er et litt renset forslag { switch (post) case 1: if (vekt<20){ printf("Du maa betale 4.20kr for og sende %d grams brev med A-post",vekt); }else if (vekt < 50){ printf("Du maa betale 6.30kr for og sende %d grams brev med A-post",vekt); }else if (vekt < 100){ printf("Du maa betale 8.00kr for og sende %d grams brev med A-post",vekt); }else if (vekt < 250){ printf("Du maa betale 15.00kr for og sende %d grams brev med A-post",vekt); }else if (vekt < 500){ printf("Du maa betale 26.50kr for og sende %d grams brev med A-post",vekt); }else{ printf("Du maa betale 42.00kr for og sende %d grams brev med A-post",vekt); } break; case 2: if (vekt<20){ printf("Du maa betale 3.60kr for og sende %d grams brev med B-post",vekt); }else if (vekt < 50){ printf("Du maa betale 5.40kr for og sende %d grams brev med B-post",vekt); }else if(vekt < 100){ printf("Du maa betale 7.00kr for og sende %d grams brev med B-post",vekt); }else if (vekt < 250){ printf("Du maa betale 12.00kr for og sende %d grams brev med B-post",vekt); }else if (vekt < 500){ printf("Du maa betale 22.50kr for og sende %d grams brev med B-post",vekt); }else{ printf("Du maa betale 35.00kr for og sende %d grams brev med B-post",vekt); } break; } Lenke til kommentar
JBlack Skrevet 31. august 2005 Del Skrevet 31. august 2005 #include <stdio.h> #define TARIFFER 6 int main(int argc, char* argv[]) { int post; int vekt; double pris; int i; double tariff[2][TARIFFER]={{4.2,6.3,8.0,15.0,26.50,42.00},{3.6,5.4,7.0,12.0,22.50,35.00}}; int vektgrense[TARIFFER]={20,50,100,250,500,1000}; printf("Tast in nvekta paa brevet i hele gram \n"); printf(":"); scanf("%d", &vekt); printf("\n\n"); printf("Velg type brev du skal sende\n"); printf("Tast 1 for A-post\n"); printf("Tast 2 for B-post\n"); printf(":"); scanf("%d", &post); printf("\n\n\n"); for (i=0;i<TARIFFER;i++) if (vekt>vektgrense[i]) pris=tariff[post-1][i]; printf("Du maa betale %f for og sende %d grams brev med A-post",pris,vekt); getchar();getchar(); return 0; } Lenke til kommentar
-kga- Skrevet 31. august 2005 Forfatter Del Skrevet 31. august 2005 takker og bukker. dog den siste ser ut til at det kan ta litt tid føre mine skills blir så gode, men den var vertfal kortere. godt og vite. takker. Lenke til kommentar
JBlack Skrevet 31. august 2005 Del Skrevet 31. august 2005 Å lage en if for hvert alternativ på den måten er ikke god programmering. Da er det bedre å bruke en datastruktur som inneholder dataene, og så jobbe mot den. Det er ikke spesielt komplisert. Det er to tabeller. En for satsene (ikke tariff... huff ) og en for vektgrensene. Om man ønsker å endre noe, så endrer man bare tabellen. Lenke til kommentar
hishadow Skrevet 1. september 2005 Del Skrevet 1. september 2005 (endret) Et til... struct VEKTKATEGORI { int min_vekt; int max_vekt; float a_pris; float b_pris; }; int ANTALL_VEKTKATEGORIER = 6; VEKTKATEGORI vektkategorier[ANTALL_VEKTKATEGORIER] = { { 0, 20, 4.20, 3.60}, { 20, 50, 6.30, 5.40}, { 50, 100, 8.00, 7.00}, { 100, 250, 15.00, 12.00}, { 250, 500, 26.50, 22.50}, { 500, 1000, 42.00, 35.00} }; VEKTKATEGORI * FinnVektkategori(int vekt) { // Søk etter vektkategorien som vekten hører til. for(int i = 0; i < ANTALL_VEKTKATEGORIER; i++) { if((vekt >= vektkategorier.min) && (vekt < vektkategorier.max)) { // Vektkategori er funnet. Returner adressen til kategorien. return &(vektkategorier); } } // Ingen vektkategori ble funnet. Returner en tom adresse. return 0; } int main(int argc, char* argv[]) { int vekt, type; printf("Tast inn vekta paa brevet i hele gram: \n"); scanf("%d", &vekt); printf("\n\n"); printf("Velg type brev du skal sende\n"); printf("Tast 1 for A-post\n"); printf("Tast 2 for B-post\n"); printf(":"); scanf("%d", &type); printf("\n\n\n"); VEKTKATEGORI* vektkategori = FinnVektkategori(vekt); if(vektkategori == 0) { printf("Ugyldig vektkategori valgt.\n"); return -1; } if(type == 1) { printf("Du maa betale %f for og sende %d grams brev med A-post", vektkategori->a_pris, vekt); } else if(type == 2) { printf("Du maa betale %f for og sende %d grams brev med B-post", vektkategori->b_pris, vekt); } else { printf("Ugyldig type valgt.\n"); return -1; } return 0; } ..litt mer tekst når jeg ser det men kanskje litt enklere å forandre. ed:bugbugbug Endret 2. september 2005 av hishadow Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå