|
Well, if V1 == V2 ( always ), then remove one or the other.
or make V2 a reference to V1;
Vector V1;
Vector& V2 = V1;
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Ming Luo wrote: at some time, I want v1 and v2 to be a single variable...
Can't you just use a union ?
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
I'd be a little cautious naming your struct type, 'Vector'. That could collide and cause confusion. But having said that the following should be work okay.
struct{
float x,y,z;
} ThreeFloats;
...
ThreeFloats v1;
ThreeFloats* v2 = &v1;
...
v2->x = 1.2;
v2->y = 3.4;
v2->z = v1.x * v1.y;
assert ( v1.z == 1.2*3.4 );
Chris Meech
I am Canadian. [heard in a local bar]
When I want privacy, I'll close the bathroom door. [Stan Shannon]
BAD DAY FOR: Friendly competition, as Ford Motor Co. declared the employee parking lot at its truck plant in Dearborn, Mich., off limits to vehicles built by rival companies. Workers have to drive a Ford to work, or park across the street. [CNNMoney.com]
Nice sig! [Tim Deveaux on Matt Newman's sig with a quote from me]
|
|
|
|
|
I am transfering around large files and my problem is that I try to open these large files before they are done transferring. Is there a way to check to see if a file is complete or done transferring?
I guess I could just keep trying to open the file until it opens..... however, I was wondering if anybody else had a better idea.
Thanks,
Andrew
|
|
|
|
|
amt35 wrote: ...my problem is that I try to open these large files before they are done transferring.
Define "I." Is the same program doing the transferring and the opening?
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
Sorry, about that... I see the confusion.
The answer is no. Another program (or user) is transferring the files around and if they are placed in a folder I am "watching" then my program tries to process the file.
I am using ReadDirectoryChangesW to monitor the directory.
Thanks,
Andrew
|
|
|
|
|
you can't ... unless you know the size of the file beeing transfered.
the application that sends the file could rename the file to something like _uncomplete_<filename>.ext
and your application can check that the file name is still _uncomplete_
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
amt35 wrote: I am using ReadDirectoryChangesW to monitor the directory.
What does the call (to ReadDirectoryChangesW() ) look like?
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
If the file is kept open during the transfer, try and open it in exclusive mode - if it is alread open, the call will fail with a sharing violation.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Instead of trying to open the file, you could check the size of the file, and when it does not change for (??) 10 seconds or 1 second (depends on the stability of the file transfer) then try to open it.
Fundamentally, this file size approach is similar to your file opening approach - these are both trial-and-error.
The idea suggested in another reply of having the file transfer application rename the file when it finishes is neater.
|
|
|
|
|
hi
i am tryin to write a program(personal interest) which generates the strings of length 5 with a given input of 2 strings from a set of strings.
that is, we have 26 alphabets and the input is "a b".
and my desired output should be "a b c d e"(length =5)
and all possible combinations with "a b - - -".
and also output should not contain "a b d c e" if it has "a b c d e".
can anyone help me the loop.
thanking you.
|
|
|
|
|
You've not supplied near enough information to form a useful pattern. Based on the one example of "a b" producing "a b c d e", most anything is possible such as "s t" producing "s t u v w". I hardly think that is what you are after. Be more specific and you're bound to get more help.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
i meant :
the program takes the input a b (two inputs) and the rest it generates the combinations with a b - - -.(string combination of length 5 with first two given or inputted.)
and also if s and t are the inputs it creates the combinations with s t - - -.
without repetition means if a b c d e is one of the output a b d c e can't be the output.
and the program should generate each and every combination of the input.
like a and b are inputs then,
a b c d e
a b d e f
.
.
.
etc.
thanking you
|
|
|
|
|
well, just generate a random letter between a and z, repeat until it is not one of your 2 input letters, and add to the string ( repeat 3 times for the 3 letters ).
or do the letters "c d e" or "d e f" are sequential ?
can you have :
a b z g r
?
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
yeah
we can have a b z g r but if a b z g r comes first then a b g r z cannot occur.
or first can you please give me the loop code for generating the sequence of strings.
like a b c d e
...
..
..
a b x y z .
with each and every combination.
i am not that good in programming.
so can you please help me generating the string sequence.
thanking you
|
|
|
|
|
You're still not making any sense. What is the correlation between the two inputs and the final output? Do the two inputs always get appended to the front of the output? What would "c n" yield?
kamal_aluri wrote: ...the program should generate each and every combination of the input.
Which looks like what? For your "a b" example, the six outputs are:
a b c d e
a b c e d
a b d c e
a b d e c
a b e c d
a b e d c
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
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
|
|
|
|