See, there are two do while loop, if I need a permutation with more than two lists, there'll be more and more do-while loops, that's make code looks ugly, I wonder if stl has some tricky way that can do this with just one next_permutation.
I need to be able to find every possible permutation using all possible values of a char. But I have to make it be able to form permutations from a length of 1 to variable N. For example, if N=3, I need it to be able to come up with
How could I do this. (I would like to avoid recursion, since N might be as large as 50 or 60 and using recursion would most likely cause a stack overflow)
I wrote this code to solve a problem in which the user inputs a permutation of size 'N' and the next permutation of the same elements has to be generated.
I went about this in this way: given 3 2 5 4 1, starting from the right, the first no. has to be searched which has a no. greater to it on its right. Here it is 2. Now an array is generated containing all no.s on its right and greater than it. For 2, it is: 5,4. Out of these the smallest member is searched for and switched with 2. So, 4 is switched with 2 to get the Next Permutation: 3 4 5 2 1.
The code I wrote does not show any error but does not return the correct value when run and gives the same value instead. If I enter '3 2 5 4 1' it returns the same value as the answer.
#include<iostream.h> #include<conio.h> void main() { clrscr(); int N,M,i,n,c,swap,flag,count,small,m; int Array[100],Key[100];
#include <iostream> // std::cout #include <algorithm> // std::next_permutation, std::sort int main () { int myints[] = {1,2,3}; std::sort (myints,myints+3); std::cout << "The 3! possible permutations with 3 elements:
[Code] ....
this will result
123 132 213 231 312 321
The question is : If I want to get a permutation combination with range of N
What should i do?
if N = 2 result should be 12,13,21.....such and such
Eliminate the last digit is working for 3 combination but if its going to a bigger number it does not work ...
I need to create such a function that the content of the first is put into the second, the content of the second into the third and the content of the third into the first.
For example, output should be like this 3 2 1 But the code below prints out: 1 2 2 Where am I making a mistake?
I'm currently working on assignment which requires to generate a random permutation of the first N integers. For example, if N = 4, one possible answer is {3,1,2,4} without duplicates. {3,3,2,4} is not correct
to fill a[4], generate random numbers until you get one that is not already in a[0], a[1], ..., a[n-1]. for a[0] whatever random number you generate can be put in it. So here is my code. It seem to works but sometime it give duplicates.
I have been given an assignment that has to do with permutations. I am suppose to read a text file that contains the permutation rules and the text to be "permutated", and then output the rules and the new text into an output file.
So far, I've gotten this:
Code: # include <stdio.h> void printArray(FILE* file, char* array, int maxSize) { int i; for (i = 0; i<maxSize; i++) fprintf(file, "%c", *(array + i));
[Code] ....
Here is what the input file looks like:
Code: 0 1 2 3 4 5 6 7 8 9 4 5 6 0 9 7 8 1 2 3
Moderation in temper, is always a virtue; but moderation in principle, is a species of vice.
Here is what the output file is suppose to look like:
Code: 0 1 2 3 4 5 6 7 8 9 4 5 6 0 9 7 8 1 2 3
ratMnioodetem rpein al,ywa isvirsetu a t m;eod buon r inaticipp,lerina s cpeis of icvies - Temho. -ainaPes
The first two lines are the permutation rules. Currently I have figured out how to read the file into an array and then print it back out into a text.
What I want to do is figure out how to read only the first two line of the input file and store that as a permutation rules, and then continue reading the rest of the input file and store that separately as the text to be "permutated". And then eventually figure out how to apply the permutation to the text.
I need to create a function with the following prototype:
bool isPermutation( const unsigned a[], unsigned elements );
unsigned a[] = {3, 0, 2, 1}; bool P1 = isPermutation( a, 4 ); would set P1 to true because the set of subscripts is {0, 1, 2, 3}, and the values are just a reordering of those values. On the other hand,
unsigned a[] = {3, 0, 2, 3}; bool P2 = isPermutation( a, 4 ); would set P2 to false because the set of subscripts is {0, 1, 2, 3}, but there’s no value that’s equal to 1.
I'm not exactly sure how to do this. I thought about it a couple different ways. I first thought about taking the range (max/min) and then checking to see if the numbers in between are equal from each other, distance-wise.
I then thought that I should just make this basically a sort function (I used bubble-sort), and then to just check if the numbers are equi-distant from each other.
This is my basic bubble-sort. Perhaps it is wrong, but I'm not certain...Perhaps I am making this function harder than it has to be.
unsigned temp = 0; for (unsigned i = 0; i < elements; i++){ for (unsigned k = 0; k < elements-1; k++){ if (a[k] > a[k+1]){ temp = a[k+1]; a[k+1] = a[k]; a[k] = temp; }}}
Should I do a sort like this, and then do something where I subtract a[i+1] - a[i], and see if that equals '1'?. I would think that would mean they would have to be equidistant. Even if this is correct, I feel like it could be more efficient.
Write a function that computes and returns the score for a permutation, i.e. the number of reversals required to make arr[0] == 1. HAVE TO USE FOLLOWING FORMAT:
Code: // POST: Returns the number of reversals needed to make arr[0] == 1 // if the reversal game were played on arr // Note: If arr[0] == 1 initially, then score(arr, n) returns 0 AND this is what i could muster; [code]....
In our homework assignment it states to, "write a set of dynamic linked lists" and so on. Now, the problem I'm confusing myself is at the storage inside of each node. To my understanding, each node contains the prev and next nodes, but also a pointer to the data, in this case being a string. He has asked us to manage these strings as rows of chars such as
char[0] = c // first node being addressed here char[1] = a char[2] = t char[3] = char[4] = d // second node starting here char[5] = o char[6] = g char[7] =
I have written my code where each node is holding a string, not separated as shown above... my question is to how you can build your doubly linked list where each node is being address a set of chars.
New to this C stuff, and was going through Kochan's book Programming in C and got to chapter 9 structured lists.There's this problem that requires you to set a Variable N that calculates days.
N = 1461 x f(year, month) / 4 + 153 x g(month) / 5 + day where f(year, month) = year-1 (if month <=2) =year (otherwise)
I was having issues getting the right values for N so I tried to see what T1.year gives me when I type in firstDay.month=02, firstDay.day=08 and firstDay.year=1999, and I got 8. According to book I should be getting 1998.
I'm trying to do is let the user type in something like A654321 (note: these are ALL the characters, i.e. 'A', '6', '5', '4', etc..) Then I just want to display that current number back to them and I am getting some weird pointer memory allocation error..
#include<iostream> using namespace std; //To rename data-type "int" or integer to "element" (Both are equivalent).. typedef int element; //To declare an appropriate SENTINEL. char const SENTINEL = '#';
[code]....
It seems like the first part that it bugs out at is in my Clean(); function..
Unhandled exception at 0x01383FBB in VegMe.exe: 0xC0000005: Access violation reading location 0xCCCCCCD0.
It doesn't like head = head->next; ?Also, ignore the ReverseList(); function, it is not being used as of now.
What I want to create is a program that sorts through a huge list (millions of lines).
I want it to get rid of any line that contains a word that isn't in an English dictionary.
Example list:
00sdfdsf ahdadsg angel ksjflsjdf green green000 carrot
and it would go through millions like that, giving me only:
angel green carrot
as my new list.
How could I go about this? What programs would I need? And at the very least how can I remove unwanted things like numbers, double letters, underscores etc.?
I am working on building a graph of a maze problem using an adjacency list and my own custom class Node.
Each Node has a vNum and jumpAmount integer variable, the vNum is the unique key.
If I have an array of lists of Node objects declared by: Code: forward_list<Node> adjacencyList[10] I skip the 0 row and only use 1-9. It makes more sense logically for my program and Im not worried about wasted memory at this point.
How could I go about traversing and outputting member variables for all the Nodes in each list in my array?
where the values in brackets are the nodes that have an edge with the ith row node. Had to put it in code tags for the thread to be allowed to post.
I am using the forward_list library for my list functions and this is where my problem arises. The cplusplus.com - The C++ Resources Network website iterates through the list using:
Code: for ( auto it = mylist.begin(); it != mylist.end(); ++it ) std::cout << ' ' << *it;
Obviously this works for ints, doubles, etc, but not objects with member variables. My attempt to replicate this code for my problem looks like:
Code: for( int i = 1; i < 10; ++i ) { cout << "Node " << i << " -> { "; for( Vertex it = adjList[i].begin(); it != adjList[i].end(); ++it ) { cout << it.getVNum() << ", "; }}
I have to come up with user defined conversions for this to work and I have never done such a thing. Is there a way to go about doing this to avoid user defined conversions, because if there isnt I feel like attempting to do this specific problem might be a little too difficult for someone who hasnt defined any custom conversions.
Potentially, I could write my own List class and have a next pointer member variable that points to the next object in the list and use that to use a dot reference to a get function to display member variables. This is how I learned linked lists back in my Data Structures class. However I am trying to avoid that for the time being, as that would be a lot more code to implement rather than just figuring out how to use the forward_list library.
I am writing a Windows Form program, and currently it has 3 Lists. I need to loop through all three, and use each possible combination, so am using three nested for loops.
I found that if the outer loop had less elements than one of the inner loops/lists, some were missed off, as I need to save all the possible combinations of list a + b + c.
This is what I wrote:
Code: public int CalculateOrderToProcessLists()//for three lists { int order = 0; if (sListOne.Count() > sListTwo.Count() && sListTwo.Count() > sListThree.Count()) { order = 123;
[Code ....
My problem is I would like to be able to have 4 (or more if possible) lists, and to calculate what order to process the lists will be exponentially more complex.
Any better way of comparing the sizes of the lists, so that I can use the nested loops of say 4 lists, but being able to use N number of lists would be awesome.
I am having some trouble getting a 3d array of pointers to link up with a linked list for each of the array elements. the 3d array of pointers is declared like this:
Code:
struct particle *cell[MAXCELLS][MAXCELLS][MAXCELLS]; and there are linked lists declared like this: Code: struct particle { /* structure for particles */ double sw[3]; /* square well components */ double hs[3]; /* hard sphere components */ double u[3]; /* unit vector for rotations */ struct particle *link; };
I want to get the array pointers 'cell[x][y][z]' to point to the first observed particle in a function next to main, something like this:
Code:
void generate_list(){ int i,j,k,l; /* determine the number of cells to decompose the simulation box in each of x, y and z directions*/ int(cells_x) = floor(boxX/cell_size); int(cells_y) = floor(boxY/cell_size); int(cells_z) = floor(boxZ/cell_size); /* initialise the array of pointers to NULL */ for (j=0;j<cells_x;j++){
[Code]...
I am getting a pointer type cast error when I compile "assignment from incompatible pointer type",
I have to write a program that reads from a text file, which contains a list of stock hourly prices and the company names. Something like this:
78.52 82.56 75.10 71.97 Water Company 22.40 25.68 21.37 22.96 Mega Shipping Inc
Each company data will be kept in a structure that contains: a pointer for the name, an array of the prices, and the average price for the day. The structures will be kept in a linked list. Each node structure will contain a pointer to one company data, and a pointer to the next node structure.This is all I have so far..
We have to sort the nodes alphabetically. My question is, how do I read the data from the file one line at a time, and insert them alphabetically one by one?
I'm trying to compare a single value with a value from my Linked list and if they are same, I want to add the value from the list to new list. In other words I want to create a new List with values with the first one. Here is the code that I made, but it's not working.
This is the code with which I search in the first list for a node with a value. In the main() function I have A.find_city(), so it can start from the start_pointer from the first list:
void List::find_city() { List *temp1; int b = 0; char city[20]; cout << "Enter city: "; cin >> city; temp1 = start_ptr;
[Code] ....
This is the code with which I add a node to the new list:
I have this code that I need to memorize for my final. Memorizing code is easy for me, but I'm trying pretty hard to fundamentally understand the functions, and what they are doing (even using pen and paper, to draw and trace).For example, in the push function below, I understand everything, except why I'm setting ptr = p. I feel like p should be equal to NULL, then the next node I push should be equal to p, etc.
Stack & Stack::push(double x) { Node * p = NULL; try { p = new Node; }
[code].....
Also, are LL Queues that hard to implement once you can do them w/stacks - That will probably be something I have to code for my final, as well. Below is the full code for my Stack class.
#include <iostream> #include <string> #include <stdlib.h> using namespace std; class Stack }
I do not know how to write the part indicated in Bold that represents the number of elements of contour. As seen from the code used for the tesselation OpenGL.
A static method named readFromFile that takes a C-string as the first parameter, and an orderedLinkedList<MemberDO> object as the second parameter. The first argument is the filename that contains data for existing members. This method should read the data for each individual member from the input file (one line of data per member), create a new MemberDO object, and insert this object into the linked list specified in the second argument.
How do I take the second parameter in, do I need to create the Linked List first? Here is the code I have so far
#include<iostream> #include<string> #include <fstream> using namespace std;
So I have been trying to implement the Dijkstra Algorithm for shortest path in a directed graph using adjacency lists, but for I don't know what reason, it doesn't print out the results (prints the minimum distance as 0 to all nodes).
It means there are 5 nodes, 7 arcs (directed edges), and the arcs exist from node 1 to 2 with the cost of 10, from 1 to 3 with the cost of 2, and so on.
However, the output is wrong. Where the program might fail. I took the main idea from here: [URL] ....
(At the end it gives the idea for Dijkstra's Algorithm using a priority_queue).