#include <cstdlib>
#include <iostream>
#include <Math.h>
using namespace std;
int stepCount,i,x,y,z,j,array1Size,array2Size,tester;
int numstring[10] = {0,1,2,3,4,5,6,7,8,9};
int numstringTest[10] = {0,1,2,3,4,5,6,7,7,9};
int* numbers;
int* differentNumbers;
void stepCounter(int a){
// determines the step number of the number
if(a/10 == 0)
stepCount = 1;
else if(a/100 == 0)
stepCount = 2;
else if(a/1000 == 0)
stepCount = 3;
else if(a/10000 == 0)
stepCount = 4;
else if(a/100000 == 0)
stepCount = 5;
else if(a/1000000 == 0)
stepCount = 6;
else if(a/10000000 == 0)
stepCount = 7;
else if(a/100000000 == 0)
stepCount = 8;
else if(a/1000000000 == 0)
stepCount = 9;
}
void stepIndicator(int b){
// indicates each step of the number and pass them into array 'number'
stepCounter(b);
numbers = new int [stepCount];
for(i=stepCount; i>0; i--){
//
/*
x = (round(pow(10,stepCount+1-i)));
y = (round(pow(10,stepCount-i)));
z = (round(pow(10,stepCount-i)));
*/
x = (int)(pow(10,stepCount+1-i)+0.5);
y = (int)(pow(10,stepCount-i)+0.5);
numbers[i-1] = (b%x - b%y)/y;
}
}
int sameNumberCheck(int *array, int arraySize){
//checks if the array has two or more of same integer inside return 1 if same numbers exist, 0 if not
for(i=0; i<arraySize-1; i++){
//
for(j = i+1; j<arraySize; j++){
//
if(array[i]==array[j]){
//
return 1;
}
}
}
return 0;
}
void sameNumberCheckOfTwoArrays(int* array1, int* array2){
//
array1Size = sizeof(array1)/sizeof(array1[0]);
array2Size = sizeof(array2)/sizeof(array2[0]);
cout << array1Size << endl;
}
int main(int argc, char *argv[])
{
stepCounter(999999);
cout << stepCount << endl;
stepIndicator(826424563);
for(j=0; j<9; j++){
//
cout << numbers[j] << endl;
}
cout << sameNumberCheck(numstringTest, 10) << " must be 1" << endl;
cout << sameNumberCheck(numstring, 10) << " must be 0" << endl;
//cout << sameNumberCheckOfTwoArrays(numstring, numstringTest) << " must be 10" << endl;
sameNumberCheckOfTwoArrays(numstring, numstringTest);
tester = sizeof(numstringTest)/sizeof(numstringTest[0]);
cout << tester << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
My code is like above but my question is very simple. You must have seen the function sameNumberCheckOfTwoArrays. takes to integer pointers(in this programme arrays) and finds size of the array. Method is simple:
array1Size = sizeof(array1)/sizeof(array1[0]);
array2Size = sizeof(array2)/sizeof(array2[0]);
cout << array1Size << endl;
As you can see. But when I call the function with numstring and numstringTest which each has 10 elements, it calculates the arraysize 1?! You can execute the code. But when I calculate without using funtion as you can see at the bottom of the code, I get 10 correctly. Why is this happening? I think I call function and pass values into function right? Or do I not?
See Question&Answers more detail:
os