Forum: Vad är fel?

Forum huvudsida -> Programmering -> Vad är fel?

Sidor: 1

Till botten

C22H28N2O 20:12 - 26:e Juni 2006 | Post #1
Medlem
Inlägg: 14


Skicka PM
  1.  
  2. #include <iostream>
  3. #include <string>
  4. #include <iodos.h>
  5. using namespace std;
  6. using std::cout;
  7. using std::cin;
  8.  
  9. int fatoce(float tal_1);
  10.  
  11. int fatoce(float tal_1) {
  12. float summa;
  13. summa = tal_1 - 32 * 5 / 9;
  14. return summa;
  15. }
  16. int main() {
  17. float val;
  18. float tal_1;
  19. dos_console();
  20. cout << "Vad vill du göra?\n";
  21. cout << "1. Konvertera ifrån Fahrenheit till Celsius\n";
  22. cout << "2. Konvertera ifrån Celsius till Fahrenheit\n";
  23. cin >> val;
  24. if (val == 1); {
  25. cout << "Skriv in antalet Fahrenheit \n";
  26. cin >> tal_1;
  27. cout << "\n" << fatoce(tal_1);
  28. cout << "\n";
  29. }
  30. system("PAUSE");
  31. return 0;
  32. }



Som sagt, vad är felet? Den vill inte räkna ut "summa = tal_1 - 32
  • 5 / 9;" rätt.


-------------------------
:D:D:D



Nissebosselasse 20:58 - 26:e Juni 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Semikolon efter if-satsen, ta bort det.

---

En annan sak..kolla den här funktionen:
  1.  
  2. int fatoce (float tal_1)
  3. {
  4. float summa;
  5. summa = tal_1 - 32 * 5 / 9;
  6. return summa;
  7. }

Vilken typ returnerar du inuti funktionen? En float, d.v.s., ett decimaltal. Men vilken typ har själva funktionen? Int, d.v.s. heltal. Du kommer få ett avrundningsfel där (vilket kanske är roten till ditt fel som du skriver om).

I funktionen main läser du in användarens val som ett flyttal (float, decimaltal). Du borde ändra float val; till int val;, eftersom du kollar efter värdet 1 i if-satsen.

-------------------------
http://pushingcows.se
Gula Nallen

Senast redigerad 01:37 - 27:e Juni 2006


C22H28N2O 13:26 - 27:e Juni 2006 | Post #3
Medlem
Inlägg: 14


Skicka PM
Tack, tack för hjälpen. ,,r väldigt ny på det här med C++. Smiley

EDIT: Nehepp, vill inte fungera ändå, den får fortfarande 32 Fahrenheit till 15*C. Smiley

EDIT2: Man kanske inte kan räkna ut tal_1 - 32
  • 5 / 9; direkt? Utan man måste kanske ta det i steg?


-------------------------
:D:D:D

Senast redigerad 13:35 - 27:e Juni 2006


Independence 13:51 - 27:e Juni 2006 | Post #4
Administratör
Inlägg: 1800


Skicka PM
Använd lite parenteser så blir det enkalre för både dig och kompilatorn att se vad som ska göras:
  1.  
  2. summa = (tal_1 - 32) * (5 / 9);


-------------------------

Vi är riddarna som säger fiskbulle!





C22H28N2O 13:58 - 27:e Juni 2006 | Post #5
Medlem
Inlägg: 14


Skicka PM
    Citat av Independence:
Använd lite parenteser så blir det enkalre för både dig och kompilatorn att se vad som ska göras:
  1. summa = (tal_1 - 32) * (5 / 9);


Tack tack, det fixade allt. Smiley

EDIT (Igen..): Nu vill den ha allt till 0. Jag blir trött på detta. Smiley

-------------------------
:D:D:D

Senast redigerad 14:10 - 27:e Juni 2006


Independence 14:18 - 27:e Juni 2006 | Post #6
Administratör
Inlägg: 1800


Skicka PM
Kan du skriva ut hela källkoden till programmet igen?
Enda jag kan tänka på som bör ge fel är avrundningsfelet som nissebosselasse pratade om.

-------------------------

Vi är riddarna som säger fiskbulle!





ozamosi 14:20 - 27:e Juni 2006 | Post #7
Administratör
Inlägg: 1129


Skicka PM
(5/9) = 0, ty 5 och 9 är integers. Ersätt (5 / 9) med (5.0 / 9) så borde det fungera bättre.

-------------------------
Ljusblå



C22H28N2O 14:23 - 27:e Juni 2006 | Post #8
Medlem
Inlägg: 14


Skicka PM
  1.  
  2. int fatoce(int tal_1) {
  3. int rakna1;
  4. int rakna2;
  5. int summa;
  6. rakna1 = tal_1 - 32;
  7. rakna2 = rakna1 * 5;
  8. summa = rakna2 / 9;
  9. return summa;
  10. }


Så gjorde jag och det fungerade, säkert onödigt att göra det i steg så ni kanske har ett tips på hur man gör?

-------------------------
:D:D:D



Nissebosselasse 14:47 - 27:e Juni 2006 | Post #9
Medlem
Inlägg: 490


Skicka PM
Vill du ha svaret som heltal eller flyttal? Annars kan du slå ihop allt i return-satsen:
  1.  
  2. float fatoce (int tal_1) {
  3. return ((tal_1 - 32) * (5.0 / 9.0));
  4. }

Tror inte man behöver en type-cast där...

-------------------------
http://pushingcows.se
Gula Nallen



Independence 14:49 - 27:e Juni 2006 | Post #10
Administratör
Inlägg: 1800


Skicka PM
C22H28N2O: Det borde inte vara någon skillnad på det du skrev och ett uttryck med parenteser, såhär blir det du skrev nu:

  1.  
  2. summa = ((tal_1 - 32) * 5 ) / 9;


-------------------------

Vi är riddarna som säger fiskbulle!



Senast redigerad 14:50 - 27:e Juni 2006


C22H28N2O 14:56 - 27:e Juni 2006 | Post #11
Medlem
Inlägg: 14


Skicka PM
    Citat av Independence:
C22H28N2O: Det borde inte vara någon skillnad på det du skrev och ett uttryck med parenteser, såhär blir det du skrev nu:

  1. summa = ((tal_1 - 32) * 5 ) / 9;


Så, nu har jag fått kläm på detta lite mer, tack för hjälpen alla. Smiley

-------------------------
:D:D:D



Sidor: 1

Forum huvudsida -> Programmering -> Vad är fel?
Atom feed

Du får inte posta i den här tråden | Till toppen