C++ Nybörjarhjälp med programmering LÖST

Permalänk
Medlem

C++ Nybörjarhjälp med programmering LÖST

Hello,

Försöker få alla primtal mellan 1 och n utskrivna.
Har fått till det mesta men det skrivs ut en extra rad när jag flyttat ut funktionen från main.
Ser ut som en minnesadress eller liknande?

Vad tror ni?

#include <iostream> using namespace std; int findPrim(int n) { int i, j, start = 3; for (i = start; i <= n; i++) { for (j = 2; i % j != 0 && j < i; j++) { if (j == i -1 && i % j != 0) cout << i << " "; } } return i; } int main() { int n; cout << " Hitta alla primtal upp till: "; cin >> n; if (n < 2) { cout << " Det finns inga primtal under "; //undantag } cout << "2 "; //undantag int prim = findPrim (n); return 0; }

Edit* codeblock, cout<<prim,

Permalänk
Medlem

Rekommenderar att du använder code-taggen runt koden här på forumet så det blir mer läsbart.

Visa signatur

Desktop spel m.m.: Ryzen 9800X3D || MSI X870 Tomahawk Wifi || MSI Ventus 3x 5080 || Gskill FlareX 6000 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Arbetsstation: Ryzen 7945HX || Minisforum BD790i || Asus Proart 4070 Ti Super || Kingston Fury Impact 5600 65 GB || WD SN850 2TB || Samsung 990 Pro 2TB || Fractal Ridge
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem
Skrivet av dbis:

int prim = findPrim (n);
cout << " " << findPrim;
return 0;
}

Du försöker skriva ut findPrim. Det är en funktion i ditt program, men du gör inget anrop till funktionen här (inga paranteser efter funktionsnamnet) så istället för att skriva ut resultatet av funktionen så skrivs funktionens address ut.
Jag misstänker att du egentligen ville skriva

cout << " " << prim;

på den raden för att resultatet av det tidigare anropet till findPrim.

Permalänk
Medlem

cout << " " << findPrim;

varför skriver du ut findPrim?

Visa signatur

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Permalänk
Medlem
Skrivet av ZecretW:

cout << " " << findPrim;

varför skriver du ut findPrim?

Ja det kan man fråga sig
Fixade det men nu skrivs n+1 ut på slutet av primtalen?

Permalänk
Medlem
Skrivet av evil penguin:

Rekommenderar att du använder code-taggen runt koden här på forumet så det blir mer läsbart.

Tackar, visste inte hur man gjorde, fixat.

Permalänk
Medlem
Skrivet av dbis:

Ja det kan man fråga sig
Fixade det men nu skrivs n+1 ut på slutet av primtalen?

Programme är så kort att du i varje cout kan lägga till A, B, C osv så kan du se vilken som skriver ut det du inte vill ha och söka där.

Visa signatur

"Om man arbetar tillräckligt länge med att förbättra ett föremål går det sönder. "

Hjälp oss göra världen lite snällare! www.upphittat.nu

Permalänk
Medlem
Skrivet av dbis:

Ja det kan man fråga sig
Fixade det men nu skrivs n+1 ut på slutet av primtalen?

Din findPrim-funktion skriver själv ut primtalen som hittas, men returnerar även n + 1 (eller snarare i, som kommer vara n + 1 efter att loopen körts) av någon anledning (varför?). Och om du "fixat" utskriften i main till att skriva ut returvärdet från findPrim så skrivs ju därför n + 1 ut efter anropet till funktionen.

Permalänk
Medlem
Skrivet av perost:

Din findPrim-funktion skriver själv ut primtalen som hittas, men returnerar även n + 1 (eller snarare i, som kommer vara n + 1 efter att loopen körts) av någon anledning (varför?). Och om du "fixat" utskriften i main till att skriva ut returvärdet från findPrim så skrivs ju därför n + 1 ut efter anropet till funktionen.

Okej, tack för lösningen.
Så simpelt nu när man får det förklarat för sig.. flera gånger

Tack för hjälpen!