Användarprofil

Uppgifter
Användarnamn
Email
Besök -
Hemsida Ingen
Plats (stad)
Senaste besök 01:00 - 1:a Januari 1970
Poster i forumet
Varningar
Grupp
Medlem sedan 01:00 - 1:a Januari 1970
Artiklar och filer
Den här användaren har inga artiklar eller filer

Avatar


Presentation av

Den här användaren har inte skapat någon personlig presentation.

Senaste inläggen i forumet

Nybörjar problem C++, primtals program funkar ej
Hittade felet själv:

  1. for (float xx=(sqrt(x));x<=number;x=(x 2))


Detta innebär att xx bara antar ett andra värde, alltså 'roten ur' startvärdet på x (= roten ur 3).

  1. xxx = (int) xx = (int) sqrt(3) = 1


Detta i sin tur gör att programmet hoppar över loopen där xxx inte får vara mindre eller lika med 1.

  1. for (;modu!=0,xxx>1;--xxx)



och därmed går programmet alltid direkt till där x skrivs ut.

Ändrade programkoden till detta istället:

  1. for (;x<=number;x=(x+2))
  2. {
  3. float xx=(sqrt(x));
  4. xxx=(int) xx;
  5. for (;xxx>1;xxx=xxx-1)
  6. {
  7. modu=x%xxx;
  8. if (modu==0) break;
  9. }
  10. if (modu>0)
  11. {
  12. cout << x << ", ";
  13. }
  14. else
  15. ;
  16. }


och nu funkar det som planerat.

Postad 20:42 - 20:e Mars 2010
Nybörjar problem C++, primtals program funkar ej
Hej,
Har suttit ett tag nu med detta program och ändrat små fel som hindrat programmet att fungera som tänkt men nu har ett nytt problem uppstått som jag inte kan se.

Program:

***********************************************
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int number;
  8.  
  9. cout << "How YOU doooin? " <<endl
  10. << "This time the program will help you find out every prim number" <<endl
  11. << "up to the number you write into the computer!!" <<endl
  12. << "Ain't that amazing how far today's technology has gone??" << endl <<endl;
  13. cout << "Write your number here: ";
  14. cin >> number;
  15.  
  16. int x=3;
  17. int xxx=0;
  18. int modu=1;
  19.  
  20. cout << 2 << ", ";
  21.  
  22. for (float xx=(sqrt(x));x<=number;x=(x 2))
  23. {
  24. xxx=(int) xx;
  25. for (;modu!=0,xxx>1;--xxx)
  26. {
  27. modu=x%xxx;
  28. }
  29. if (modu!=0)
  30. {
  31. cout << x << ", ";
  32. }
  33. else
  34. ;
  35. }
  36.  
  37. cout << endl << endl;
  38. }

***********************************************


Det är tänkt att användaren skriver in ett tal och att datorn skriver ut alla primtal fram tills detta tal (inkl. talet själv ifall det är ett primtal).

För tillfället skriver den ut alla ojämna tal oavsett om det är prim eller ej och jag finner inte problemet..

Förklaring till de olika namnen:

1. "number" = användarens inskrivna tal.

2. "x" = variabel som har ett startvärde på 3 och därefter ökar med 2 varje loopvarv (en förenkling åt kompilatorn då inga primtal kan vara jämna).

3. "xx" = roten ur x (ännu en förenkling åt kompilatorn).

4. "xxx" = integer tal utav "xx" (då roten ur blir ett float tal).

5. "modu" = modulo av "x" delat på "xxx" (för att se om x är delbart med något "xxx"-tal i loopen där "xxx" minskar med ett varje varv.


Uppskattar tacksamt all hjälp!

Postad 19:08 - 20:e Mars 2010

Skicka meddelande
Läs s blog