[HELP, C++] array with prime numbers

Hi, i'd need some help with a function...

well, i need to write a function with an array parameter and an int parameter.

that array has to be filled with first 10 prime numbers that are exact or higher than the int parameter...

and then i need an average value of those 10 prime numbers...

The problem is im not really sure how i should do the part to fill the array with prime numbers that are higher than that int?? So any code samples that does that would be really nice... (the average part shouldnt do much problems i think, so i only need for that array fill...)

Code:

`int avgprimearray (int higharray[], int somenumber){`

}

Re: [HELP, C++] array with prime numbers

Quote:

Originally Posted by

**Fromar123**
The problem is im not really sure how i should do the part to fill the array with prime numbers that are higher than that int?? So any code samples that does that would be really nice... (the average part shouldnt do much problems i think, so i only need for that array fill...)

How would you solve this problem if you didn't have a computer? What are the exact steps you'd take?

Re: [HELP, C++] array with prime numbers

well, i already have a IsPrime function that checks if numbers are prime (but that is for input),... so i'd guess i have to use that to get those primes, but the main problem is with the array part... should i set the length of array when i declare the function like this: int somefunc (int array[10], int somenum){...}

or later on in the function?

also i have problems with filling those 10 spots in the array, and to generate 10 prime numbers, i know how to check for IsPrime if i use cin, but im a little lost when it sohuld automatically get 10 in a certain range...

Re: [HELP, C++] array with prime numbers

It shouldn't be a problem to modify your `IsPrime()` function so that it takes the number it shall check for primeness as an `int` parameter rather than from `cin`. Then you call that from `somefunc()` in a loop to check successive numbers, the first one of course being the one you got passen in as the `somenum` parameter.

As I understand the assignment, you can assume the count of exactly 10 primes to find and store into the array to be part of the specification, so you can simply assume you got passed an array of the approprite size and hardcode the prime count of 10. If the caller passes an array of different size, then that's their problem. If the array is too long, it simply won't get filled completely, and if it's too short... :sick:

I'd also suggest to consider changing the declaration of the `array` parameter in the `somefunc()` function header from `int array[10]` to `int array[]` to reflect the fact that the array, as passed into the function, does not carry any size information. The `10` in the definition may give a false sense of safety in that the compiler somehow takes care that your function or the calling code passes a correctly sized array, which definitely is not the case. Probably better yet is to declare the parameter as `int *array` to reflect the fact that plain arrays in C++ are always passed to funtions as pointers. All the three parameter declarations are effectively equivalent, in particular you can syntactically handle the parameter as an array inside `somefunc()` and pass an ordinary array from the outside in all three cases.

On the side note, `array` isnt't really a good choice as a parameter or variable name. This is generally true for some reasons I'm not going to discuss here for brevity, but in particular, starting with C++11, standard library defines an `std::array` template with which your variable name may conflict.

Re: [HELP, C++] array with prime numbers

Quote:

Originally Posted by

**Fromar123**
well, i already have a IsPrime function that checks if numbers are prime (but that is for input),... so i'd guess i have to use that to get those primes

This is why you should separate I/O from your algorithms. If you had implemented the IsPrime function as

Code:

`int GetNumberFromUser();`

bool IsPrime(int n);

int main()

{

int n = GetNumberFromUser();

if (IsPrime(n))

// etc

}

Then you could now reuse the IsPrime function as is.

Quote:

Originally Posted by

**Fromar123**
also i have problems with filling those 10 spots in the array, and to generate 10 prime numbers, i know how to check for IsPrime if i use cin, but im a little lost when it sohuld automatically get 10 in a certain range...

You could check whether each subsequent number is a prime or not and stop when you have found 10 prime numbers.