09. august 2003 - 17:01Der er
15 kommentarer og 3 løsninger
Ohm's lov
Hej Jeg er lige begyndt at lære noget om c++ og er stødt på problemmer.
Jeg har en formel for at lave ohm's lov (U=R*I) og det er også lykkedes for mig at lave et program der kan finde U, men det er også det eneste, Det jeg så gerne ville have den til at gøre er at man skal kunne vælge hvilken værdi man vil finde i stedet for det kun er U man kan finde!
i kan lige være med på en kikker i source'en --------------------------------------------------#include<stdio.h> #include<conio.h>
void main(){
int U,R,I;
clrscr(); printf("\n\n\n\n\n\t\t\t Indtast din Modstand: "); scanf("%d",&R); clrscr(); printf("\n\n\n\n\n\t\t\t Indtast dine Amperer: "); scanf("%d",&I); U=R*I; clrscr(); printf("\n\n\n\n\n\t\t\t Sp‘ndingen er nu: %d",U); getch();
Den eneste løsning jeg kan se på det er hvis jeg laver en menu i en bat fil og laver 3 c++ programmer der kan beregne I,U og R og fra batch filen starte den man vil finde!
men det er nemmest hvis alle 4 filer er i samme mappe! er der en måde man kan lave alt dette i blot en C++ fil?
som sagt er jeg ret meget newbie til c++ så de eneste commandoer jeg kender lidt til er: clrscr() printf() scanf() getch()
Det er det jeg gerne ville undgå ved at lægge det hele sammen i en stor c++ fil men det er den eneste metode jeg kan finde på da jeg ikke er så meget inde i c++
du kan også bare stille nogle simple if-sætnigner op. Altså først spørge hvilken af de tre brugeren vil have regnet, og så efterfølgende spørge ud fra dette valg, og til sidst beregne den manglende!
1) vis brugermuligheder (glem ikke afslut) 2) fang brugers input med f.eks. std::cin >> i 3) test input med f.eks. if-sætninger 4) hvis brugeren ønsker at finde U, så spørg efter R og I 5) foretag den/de nødvendige beregninger og udskriv resultatet. 6) start forfra (eller afslut)
Du skal starte med at spørge brugeren hvilken variabel han vil beregne:
char valg; printf("Hvad vil du beregne [uri]: "); valg = getchar(); /* evt getch() */
Så beder du brugeren intaste de værdier der ønskes:
if(valg == 'u || valg == 'i') { /* Bed brugeren om r */ } etc Og til slut beregner du det der skal beregnes og udskriver det.
PS: Du skal indsætte en fflush(stdout) efter printf hvis denne ikke afsluttes med en \n ellers er det ikke sikket at brugeren kan se det udskrevne før han har tastet enter.
"main() skal retunere en int" -> main() SKAL ikke returnere int, men det ses gerne? Der er dog nogle compilere som kræver at main() returnerer en værdi.
Forslag: Smid nedenstående ind i main og husk at inkludere <iostream>
double U, R, I; char valg = '\0'; //'\0' står valg ikke er truffet
cout << "Indtast vædier for U, R og I" << endl; cout << "Den ukendte gives værdien x... ";
if (!(cin >> U))) //Hvis bruger indtaster 'x' eller andet ugyldigt { cin.clear(); //Gør cin klar while (cin.get() != '\n') //til at køre igen continue; valg = 'U'; }
if (!(cin >> R)) //Hvis bruger indtaster 'x' eller andet ugyldigt { cin.clear(); while (cin.get() != '\n') continue; if (!valg) //Hvis valg ikke er truffet ovenfor valg = 'R'; else { cout << "Du er nødt til at skive en talværdi!"; while (!(cin >> R)) { cin.clear(); while (cin.get() != '\n') continue; cout << "Du er nødt til at skrive en talværdi!"; } } }
if (!(cin >> I)) //Hvis bruger indtaster 'x' eller andet ugyldigt { cin.clear(); while (cin.get() != '\n') continue; if (!valg) //Hvis valg ikke er truffet ovenfor valg = 'I'; else { cout << "Du er nødt til at skive en talværdi!"; while (!(cin >> I)) { cin.clear(); while (cin.get() != '\n') continue; cout << "Du er nødt til at skrive en talværdi!"; } } }
Prøvede lige at compile det og fandt en enkelt fejl, som er en slut parentes for meget i den første if-sætning. Man bør nok også ovenfor stederne med (cin >> RellerUellerI) lave en cout der siger til brugeren hvilken værdi de skal til at indtaste ;-)
#include <iostream> #include <cstdlib> using std::cout; using std::cin; using std::endl;
int main() { double U, R, I; char valg = '\0'; //'\0' står valg ikke er truffet
cout << "Indtast værdier for U, R og I" << endl; cout << "Den ukendte gives værdien x... " << endl;
cout << "Indtast U: "; if (!(cin >> U)) //Hvis bruger indtaster 'x' eller andet ugyldigt { cin.clear(); //Gør cin klar while (cin.get() != '\n') //til at køre igen continue; valg = 'U'; }
cout << "Indtast R: "; if (!(cin >> R)) //Hvis bruger indtaster 'x' eller andet ugyldigt { cin.clear(); while (cin.get() != '\n') continue; if (!valg) //Hvis valg ikke er truffet ovenfor valg = 'R'; else { cout << "Du er nødt til at skive en talværdi!"; while (!(cin >> R)) { cin.clear(); while (cin.get() != '\n') continue; cout << "Du er nødt til at skrive en talværdi!"; } } }
if (valg) //Hvis valg er truffet ovenfor { cout << "Indtast I: "; if (!(cin >> I)) //Hvis bruger indtaster 'x' eller andet ugyldigt { cin.clear(); while (cin.get() != '\n') continue; if (!valg) //Hvis valg ikke er truffet ovenfor valg = 'I'; else { cout << "Du er nødt til at skive en talværdi!"; while (!(cin >> I)) { cin.clear(); while (cin.get() != '\n') continue; cout << "Du er nødt til at skrive en talværdi!"; } } } } else //Ellers er valget ikke truffet og 'I' må være den ukendte valg = 'I';
int main() { switch(read_type()) { case 'S': prt_res("Sp‘ndingen er nu: ",read_mod()*read_amp()); break; case 'M': prt_res("Modstanden er nu: ",read_sp()/read_amp()); break; case 'A': prt_res("Amperer er nu: ",read_sp()/read_mod()); break; default: prt("Invalid beregning\n"); break; } getch(); return 0; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.