Kezdőoldal » Számítástechnika » Programozás » Miért nem jó ez program?...

Miért nem jó ez program? Lefordul csak a számok beadása után axe leáll mert hibát észlelt.

Figyelt kérdés

Csak gyakorolok.

Egy ehhez hasonló kódot már töltöttem fel ide de ez a kérdés teljesen másról szól.


Itt nem a prímszámok ki íratásával van a gondom.

Olyat akarok csinálni,hogy egy függvénynek át adok egy std::arrayt majd a függvényből vissza egy tömböt.


Lefordul még csak warning sincs de nem működik.


Itt a kód:

//main.cpp

#include <iostream>

#include <math.h>

#include <array>


bool* isPrime (std::array<int, 5>::iterator);


int main (void)

{

std::array<int, 5> numberArray;

std::cout << "Give me a number or press zero to quit: ";

std::cin >> numberArray.at(0);

if (numberArray.at(0))

{

for (unsigned short i(1); i < 5; ++i)

{

std::cout << "Give me a number: ";

std::cin >> numberArray.at(i);

}

bool *pp(isPrime(numberArray.begin()));

std::cout << '\n';

for (unsigned short i(0); i < 5; ++i)

if (pp[i])

std::cout << "The injected " << numberArray.at(i) << "is a prime number.\n";

else

std::cout << "The injected " << numberArray.at(i) << "is not a prime number.\n";

delete [] pp;

}

std::cout << "Program exited.";

return 0;

}


bool* isPrime (std::array<int, 5>::iterator it)

{

bool *p(new bool[5]);

unsigned short pointerIndex(0);

while (it != it + 5)

{

if (*it <= 1) p[pointerIndex] = false;

else if (*it == 2) p[pointerIndex] = true;

else if (!(*it % 2)) p[pointerIndex] = false;

else

{

const unsigned short root(static_cast<unsigned short>(sqrt(*it)));

for (unsigned short distance(3); distance <= root; ++distance)

if (!(*it % distance))

p[pointerIndex] = false;

p[pointerIndex] = true;

}

++it;

++pointerIndex;

}

return p;

}



www.pastebin-com/5Mp4ALrH


2013. máj. 10. 17:11
 1/4 A kérdező kommentje:
++distance módosítva distance+= 2 de ennek semmi köze ahhoz,hogy miért áll le futás közben az értékeke beadása után.
2013. máj. 10. 17:19
 2/4 A kérdező kommentje:

Ez a jó link:

A pastebin pont com /Gh25XD79

2013. máj. 10. 17:21
 3/4 A kérdező kommentje:
Miért nem írtok?
2013. máj. 10. 23:01
 4/4 A kérdező kommentje:

Egyébként seggfault a helyzet.

Ennél a sornál seggfaultozik: else if (!(*it % 2)) p[pointerIndex] = false;


De hogy csináljam,hogy jó legyen?

2013. máj. 11. 01:38

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!