|
he just want 3 other letters ( different than the 2 original ones ).
I don't think there is any correlation between the 2 input values and the 3 others (except they must be different )
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
i am sorry for being unclear.
the thing is there are 26 alphabets and the inputs should be 2(a b or b c or whatever)
and the program should generate strings of length 5 starting with given input.(a b or whatever)
that is combinations of a b - - -
the three -'s should be filled with the string combinations(from the remaining 24 alphabets) of length 3 and other than given input (a b in this case.)
thanking you.
|
|
|
|
|
This should work:
#include <string>
#include <algorithm>
std::string GenerateString(const std::string& input)
{
std::string output("abcdefghijklmnopqrstuvwxyz");
for(int i=0; i<2; i++)
{
std::remove(output.begin(), output.end(), input.at(i));
}
std::random_shuffle(output.begin(), output.end());
output.resize(3);
output.insert(0, input);
return output;
}
[edit]of course, you better check the size of input to make sure it has 2 chars in it, else you'll get an exception. [/edit]
~Nitron.
ññòòïðïðB A start
-- modified at 16:44 Tuesday 7th February, 2006
|
|
|
|
|
Your loop should probably look something like:
char Result[7];
// assuming result[0] and Result[1] have already been filled
Result[6] = '\0';
for (Result[2] = 'a'; Result[2] <= 'z'; Result[2]++)
{
if ( Result[2] != Result[0]
&& Result[2] != Result[1])
{
for (Result[3] = Result[2]; Result[3] <= 'z'; Result[3]++)
{
if ( Result[3] != Result[0]
&& Result[3] != Result[1]
&& Result[3] != Result[2])
{
........ etc.
printf ("%s\n",Result);
}
}
}
}
Didn't yet think this through completely, but its a start.
William
|
|
|
|
|
Keep an array of alphabet, and take two letters as input.
And then create a copy of the removed letters and store it as an array.
then, use a combination generator (you can google for it), a JAVA implementation can be found below. (The only problem you would face to port this code to C++ or C is the BigInteger class, you might use __int64 for factorial calculation. you need to be able to assign 24! in that implementation, the int type might also work, you can check it by calculating 24! .
http://www.merriampark.com/comb.htm[^]
however, if you consider comb(n,r) = n!/(n-r)!r! then 24!/(24-3)!3! = 24.23.22/3! so if you can modify the JAVA implementation likewise then you do not need to take care of bounds for 'int' for this particular problem.
this might be one of solutions, and thought out while writing.
Bekir.
|
|
|
|
|
thanx to everybody who replied for my question.
i got it and i'll paste the program when it's in shape.
thanx guys.
|
|
|
|
|
Hi again
I am embarrassed to ask this question, but hey, if you dont ask, you dont get to know...
I have an application written by others that generates an Edit Box by using the following code:
HWND hwndEdit;
hwndEdit = CreateWindowEx(WS_EX_CLIENTEDGE, _T("EDIT"), "",
WS_CHILD|WS_VISIBLE|WS_TABSTOP,
20,25,200,23,
hWnd, NULL, hInstance, NULL);
I now want to add to the program by including a ListBox. Can I do this by:
HWND hwndList;
hwndList = CreateWindowEx(WS_EX_CLIENTEDGE, _T("LISTBOX"), "",
WS_CHILD|WS_VISIBLE|WS_TABSTOP,
20,25,200,23,
hWnd, NULL, hInstance, NULL);
(changing the co-ords, of course)
This does appear to work, but I cant work out how to add strings to the ListBox - can anyone help, or show me what I am doing wrong
Thanks for any help that you can give to a newbie!
Mike
|
|
|
|
|
Send the listbox the LB_ADDSTRING message.
char szMyString[64];
strcpy(szMyString, "This is my string.");
lResult = SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)szMyString );
The string should end up in the list box.
See other LB_??? messages for the other actions you can perform on the listbox.
People that start writing code immediately are programmers (or hackers), people that ask questions first are Software Engineers - Graham Shanks
|
|
|
|
|
Your a Star!
I have just tried that and it works - simple!
Thank you very much
Mike
|
|
|
|
|
|
just a guess, why are you passing CClassBase const& parameters instead of the common const CClassBase& ... i don't remember if it changes something, so i wondered about that...
any reason ?
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
|
badkarma pointed a good point. however, instead of redefining the methode for the specialization, what happens if you change your
CClassBase fun(CClassBase const& X, CClassBase const& Y){...} into
const CClassBase& fun(CClassBase const& X, CClassBase const& Y){...}
.....?
_Russell_ wrote: I don't know if is possible that I can use this operator ("=") defined into the parent class using derivates object
thanksfully to OOP paradigm, such a thing is possible ! a child class instance remains an instance of the base class type... so pointing childs with a base class pointer works (but it has to be pointer - or reference, but not variables)...
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
Yes,
the point is that the child object could have some variable (members) more than the parent -> and here there was problems!! (I think)
thanks anyway
Have a nice code day
|
|
|
|
|
i think using dynamic_cast<>() on the return value of fun() might have worked too, without overloading the specialization within the child class...
Z = dynamic_cast< CClassDouble > (fun(X, Y));
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
-- modified at 11:29 Tuesday 7th February, 2006
|
|
|
|
|
I believe the problem lays with the function fun
The function fun returns a CClassBase object and not a CClassDouble object.
The compiler can't upcaste the object from CClassBase to CClassDouble
this can be solved by adding a default constructor to the class CClassDouble
class CClassDouble: public CClassBase<double>{
public:
CClassDouble(const CClassBase<double>& R) {...}
...
}:
Hope that this will solve your problem
codito ergo sum
|
|
|
|
|
Thanks,
there was a cast problem!;)
It is only a little bit strange that it isn't automatically converted (they are exactly the same thing)
So, bye for 3 weeks (only answers!)
And, olso this time, a 5 for you.
Have a nice code day
|
|
|
|
|
hi,
its not that strange since the lower class (CClassBase ) cannot know all the extra members that need to be initialized when creating a CClassDouble object.
Don't worry about asking quistion, especially those about templates,
there my favorite ones
codito ergo sum
|
|
|
|
|
_Russell_ wrote: CClassBase fun(CClassBase const& X, CClassBase const& Y){...}
You can't write that. CClassBase is a template class, you need to supply a template parameter:
template <class T> CClassBase<T> fun(const CClassBase<T>& X, const CClassBase<T>& Y){} The only time you write plain CClassBase is in the ctor and dtor.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
How can I build an ActiveX-DLL in Visual Studio 6.0? I have especially a problem in constucting a new method, which is an ActiveX-Component. There's a tool called "ActiveX Testcontainer" in which I should see my methods, but I don't. What's wrong?
I created a project with the "ActiveX-Control-Wizard" and added a "Member-Function". This isn't shown as a method in the "ActiveX Testcontainer".
Thanks for your help!
Markus
Do also have a look at my earlier Thread:
http://www.codeproject.com/script/comments/forums.asp?forumid=1647&fr=26#xx1362023xx[^]
|
|
|
|
|
You have to "Add Method" to add exported like function, It seems that you just add member function to the class only. Try right clicking IDispatch interface ( can identify with an image 'o-0' before the class name) and use "Add Method" to add a functon, which will be available in test container.
|
|
|
|
|
OK, it works!
But there's still one question: when I compile the project, I get an .ocx file. I want to implement this funciton for a SOAP-Server. The generator need a .dll file. Can I simply change the extension?
|
|
|
|
|
Hello all,
I have created an SDI application with multiple document templates. When I click new file I get the option of which document type to create, which is nice. However if I create a document of a different type the current document then a new frame gets opened and I end up with one frame for each document type. I was hoping to get just the one frame, and to be able to switch the document type. Any suggestions as to how I can achieve this?
Cheers,
Mark
|
|
|
|
|
anyone?
Thought I'd try killing the old frame when the new one opened to appear as if it was the same frame. Unfortunately the first frame is the main application window, so when that is closed the whole application closes - bye bye new window too. Hmmm
I'm really surprised that this doesn't seem possible!
Mark
|
|
|
|
|
I have written a simple 3rd party Administration DLL for the RRAS service running on Win 2000. All works fine, the RRAS service starts and my exported functions are called by RRAS.
When I move to Windows server 2003 I cannot get the RRAS service to start - I get error 0x126 (module cannot be found) As far as I can tell, the Admin Dll functions required to be exported in Win 2003 are the same as win 2000, so I am now banging my head against the wall. Help!!
Have trawled through MSDN to no avail. I suspect I may be doing something daft - but who knows?
Dave T. Leeds UK
|
|
|
|