It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
im trying to find multiples of an array using a loop
int array[11] = {1,2,3,4,5,6,7,8,9,10,11};
int size=11;
for(int i=0;i > size;i++)
{
if (i%2==!0)
cout << array[i];
}
why wont this work
//Declare num first.
//Correct if condition..
//correct condition checking in for loop
int array[11] = {1,2,3,4,5,6,7,8,9,10,11};
int index=2;
int size=11;
int num = 5;
for(int i=0;i < size;i++)
{
if (i%num==0)
cout << array[i];
}
I think you might want to change the (somewhat ... unusual):
if (i%2==!0)
into:
if (i % 2 == 0)
In addition, you loop termination condition is such that the loop will never execute. Try:
for (int i = 0; i < size; i++)
Related
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
I have a problem with passing my created table to fillMatrix function.
Another thing is how to refer to this table in my function. I really appreciate every kind of help. I didn't get any console problem. Program is freezing.
int **createTable(int n)
{
int **table = new int*[n];
for(int i = 0; i<n; i++)
{
table[i] = new int[n];
}
return table;
}
void fillMatrix(int n, int **tab)
{
for(int x = 0; x<=n; x++)
{
for(int y= 0; y<=n; y++)
{
tab[x][y] = 0;
}
}
}
int main()
{
int n;
cout <<"Add size of table";
cin >> n;
int **table = createTable(n);
srand(time(NULL));
fillMatrix(n, table);
return 0;
}
I see only one problem in your code:
for(int x = 1; x <= n; x++)
{
for(int y = 1; y <= n; y++)
{
tab[x][y] = 0;
}
}
Arrays in C++ are zero-based, but you tried to assign tab[n][n] which causes undefined behavior.
Also, you should delete your array once it is no longer needed.
As another solution I suggest you use std::vector instead of dynamically allocated arrays.
it is what they told you about. Your for statement should be like this
for( int i = 0 ; i < n ; i++ )
instead of
for( int i = 0 ; i <= n ; i++ )
The compiler want warn you if you accidentally go beyond the size of an array thats why you didnt have any warnings or errors.
Think about using a vector instead of an array as suggested above.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I am having trouble trying to make a certain for-loop continue to completion in the 1D Queens problem.
First, I used goto statements for everything. Now I am trying to get rid of the goto statements by using functions instead. I will eventually get rid of all of them, but I am focusing on NR (new row) and backtrack first, since they are meant to call each other.
The for loop I am having trouble with is the one that checks if a position is safe for a queen. I point out the for-loop that does not complete in the comments.
//forward declarations
int backtrack (int board[], int& c_position);
//NR: q[c]++;
//if (q[c]==8) goto backtrack;
void NR (int board[], int& c_position) //new row
{
board[c_position]++;
if (board[c_position]==8) {backtrack(board, c_position);}
}
int backtrack (int board[], int& c_position) // backtrack
{
c_position--;
if (c_position==-1) {system("PAUSE"); exit(1);}
NR(board, c_position);
}
int main ()
{
int q[8] = {0}; //1D array, the board, all set to 0;
int c=0;
int count=0;
NC: c++; //new column
if (c==8) goto print;
q[c]=-1;
NR(q, c);
//test to see if position is safe
for (int i=0; i<c; i++) //this is the for loop I am having trouble with
{
if ( (q[i]==q[c]) || ((c-i)==abs(q[c]-q[i])) ) { NR(q, c); }
}
goto NC;
print: //printing the 1D board gives us a single line, where each number represents a row where a queen is
count++;
cout << count << endl;
for(int j = 0; j <= 7; j++)
{
cout << q[j] << " ";
}
cout << endl;
backtrack(q, c);
system("PAUSE"); return 0;
}
You're passing c by reference to a function that passes it to another function that decrements it.
That appears to foil your (outer goto-based) loop's attempt to increment it.
Anyway, that's what I'd look at more closely.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I'd like to add an int from a struct with a regular int in c++. Is there an easy way to do it? Ive searched pretty much everywhere but theres nothing on adding either two struct ints while reading in data from a binary file or adding a regular int and a struct int together.
This is the simple version of what I currently have.
struct Add{
int k;
};
int total;
Add a;
//read in first set of number from binary file
total += a.k;
//add up to total, then read in second set of number from binary file.
The problem is, when I output total, it only gives me the last number I tried adding int k to it and not the total.
My actual code as requested.
struct TaskInit{
int weight;
};
TaskInit t;
int totalWeight;
for (int i = 1; i <= noOfRecords; ++i)
{
afile.seekg ((i - 1) * sizeof (TaskInit), ios::beg);
afile.read (reinterpret_cast <char *>(&t), sizeof (t));
totalWeight += t.weight;
}
cout << totalWeight;
struct Add{
int k;
};
int total = 0; // no indeterminate values. always init locals!
Add a;
// open your file here.
while (inFile >> a.k) {
//read in first set of number from binary file
//add up to total, then read in second set of number from binary file.
total += a.k;
}
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I have data in a two dimensional array with n rows and p columns.
For example:
vector<vector<int> > dynamicArray(ROWS, vector<int>(COLUMNS));
for(int i = 0;i < dynamicArray.size();++i){
for(int j = 0;j < dynamicArray[i].size();++j){
dynamicArray[i][j] = i*j;
}
}
Now, I want to add several columns to this array. I tried the following (Add a column of all 10s to the array), but if failed:
for(int i=0; i < dynamicArray.size(); i++){
dynamicArray[i].push_back(10);
}
Is there a way to do this?
Thanks!
I've ran your code, and I've successfully added a column. What do you mean by it failed?
Personally I would've flattened the 2 dimensional array into 1 using one single vector.
class DynamicMatrix
{
vector<int> array;
int rows;
int columns;
public:
DynamixMatrix(int r,int c):array(vector<int>(r*c)),rows(r),columns(c){};
int getValue(int x,int y) { return array[x+y*c];}
int setValue(int x,int y, int v) { array[x+y*c] = v;}
void AddRow()
{
rows++;
array.resize(rows*columns);
}
void AddColumn()
{
column++;
array.resize(rows*columns);
}
}
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
can help me in simple code below??
i commented where problem is
TIA
for(int i=0;i<10;i++)
{
if(x[i] !=1000)
{
//do something
}
else
{
//i want it to go to the next i and again check x[i] != 1000,not i++
}
if(y != x[i])
{
//do something
}
}
I am not sure who j is but you may be looking for this:
if(x[i] !=1000)
{
//do something
}
else
{
//i want it to go to the next i and again check x[i] != 1000,not j++
continue;
}