|
have a file created with the following text 4,3,1,2, my object is to find the highest value then output to a file in correct orsder to 1,2,3,4. This is all I have and I am a little rusty cause it has been a while:
Go back and re-read what I typed , I never stated that it was pre written in ascending order. in the first line in big characters is what I had said.
|
|
|
|
|
Herboren wrote: my object is to...output to a file in correct orsder to 1,2,3,4.
How is that not writing to the file in ascending order?
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
=D Basically I have a pre-written file with random numbers, then locating the highest number in that file, (yes I know what the highest number is I just want the program to do it) then comparing the highest number to the other integers in that file and placing them in correct order in a different file, I dont know any other basic way to put it.
|
|
|
|
|
Herboren wrote: ...I dont know any other basic way to put it.
Maximilien told you how to do it, while Stephen showed you how.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
Hi,
If you want the list of numbers to be written back in the file in ascending order, then all u have to do is sort the numbers u have as many others have mentioned, the sorting takes care of the highest number in each case.
locating the highest number in the file helps to sort only 1 time. say 4 3 1 2, now u find the highest number to be 4 and then u write as 3 1 2 4. now from the remaining 3 numbers u have to again find the highest which is 3 and then sort as 1 2 3 4. this is highly inefficient way of doing. this is called bubble sort i suppose. there are many algorithms like quick sort, heap sort for reading a string of values and writing them back in the desired order (ascending or descending). hope u find it useful.
regards,
-cedance
|
|
|
|
|
As a matter of fact it was bubble sort, from what I recall my last teacher telling us about it, I had totally forgotten about it but popped when you mention it. That why I wasnt familiar with the heap or quick sort, I suppose she wanted us to do something hard so that way we knew how to understand it afterwards.
|
|
|
|
|
Try something like this:
#include "StdAfx.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
using namespace std;
ifstream in("C:\\In.txt");
if (!in)
{
cerr << "Failed to open input file!" << endl;
return 1;
}
ofstream out("C:\\Out.txt");
if (!out)
{
cerr << "Failed to open output file!" << endl;
return 2;
}
vector<int> nums;
copy(istream_iterator<int>(in), istream_iterator<int>(), back_inserter(nums));
sort(nums.begin(), nums.end());
copy(nums.begin(), nums.end(), ostream_iterator<int>(out, "\n"));
return 0;
}
Note I read the whole file into a std::vector , sort it and then output the results.
Steve
|
|
|
|
|
I did find something rather useful and did find your code very useful working with vectors. Something called an insertion sort. looks custom but does a nice job.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <insertion_sort.h>
int main()
{
double vals[25];
int n=25;
srand((unsigned int) time(NULL));
for (int i=0; i<n; i++) vals[i]=((double) n*rand())/RAND_MAX;
printf("\nArray to be sorted:\n");
for (int i=0; i<n; i++) printf("%3.0f ", vals[i]);
Array::Sort::insertionSort<double>(vals, n);
printf("\n Sorted array:\n");
for (int i=0; i<n; i++) printf("%3.0f ", vals[i]);
printf("\n");
return 0;
}
here is the location of the header. <a href="http://www.stepanovpapers.com/algSimMeas/insertion_sort.H" rel="nofollow">Insertion Sort</a>
-- modified at 17:33 Sunday 11th March, 2007
|
|
|
|
|
You can do better then an insertion sort which is O(n^2). Use the STL's sort algorithm which comes with your compiler and get O(N log(N)) complexity. To access the algorithm include <algorithm> and replace the sorting code with this:
std::sort(vals, vals+n);
See http://www.devx.com/vb2themax/Article/19900[^] for a comparison of the efficiencies of different sorting algorithms.
For things like sorting and the like the STL will suite your needs just fine and you're better of learning it then downloading equivalent or inferior code.
Steve
|
|
|
|
|
Hi,
I've made a little Window with the MFC, but when reposition the window and then select new, the window jums some lines down and some lines right. Did you know how i could avoid this ?
void CTestView::OnFileNew()
{
CRect rc;
GetWindowRect (&rc);
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
CClientDC dc(this);
dc.SetMapMode (MM_TEXT);
dc.LPtoDP (&rc);
// ClientToScreen (&rc);
pFrame->SetWindowPos (&CWnd::wndTop, rc.left, rc.top, 200, 100 ,SWP_NOREPOSITION);
}
Here is my codr, i hope you can help me !
Many THX
CrocodileBuck
|
|
|
|
|
CrocodileBuck wrote: the window jums some lines down and some lines right. Did you know how i could avoid this ?
Yes. Don't move the window!
What are you trying to do to the rect there?
Mark
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Hi Mark,
thx for your quick reply!
! What are you trying to do to the rect there? !
What do you mean exactly ?
I need the rect for Set WindowPos() function cause SetWindowPos needs the x and y Coord of the Window.
But i onla want to chance the width and height of the window and i want it to keep his place when i move the window and click on new in the menue !
I hope you know what i want and sry for my bad engLish
Buck
|
|
|
|
|
CrocodileBuck wrote: I need the rect for Set WindowPos() function cause SetWindowPos needs the x and y Coord of the Window.
But i onla want to chance the width and height of the window...
While SetWindowPos() is ignoring them, you might want to go ahead and specifiy 0 for x and y . The last argument should also be changed to SWP_NOMOVE .
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
SetWindowPos() ignores nothing !
When i Set X and Y to 0 the Window jumps to the upper left corner of the screen, but i want it to stay where i moved it to. I only want to change the With and height of the window and not its position !
Buck
|
|
|
|
|
CrocodileBuck wrote: SetWindowPos() ignores nothing !
It does if you use it correctly.
"Approved Workmen Are Not Ashamed" - 2 Timothy 2:15
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
OK. coud you pleeeese explain me how i use it correctly????
pleeese i am coding the mfc since 2 weeks and try to solfe this prob since Sunday please david help me to get it working correctly !
Buck
|
|
|
|
|
AAAAAAAAAHHHHHRRGGGGGGGGGGHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!
SWP_NOMOVE
Retains the current position (ignores X and Y parameters).
YYYIIIIIIIIIIPPPIIIIIIEEEEEEYAAAAAAAAAYEEEEEEEEEEEEAAAAAAAAAAAAAHHHHHH!
THX David it was you who kicked me to the Flags
Buck
|
|
|
|
|
void CTestView::OnFileNew()
{
CRect rc;
GetWindowRect (&rc);
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
CClientDC dc(this);
dc.SetMapMode (MM_TEXT);
dc.LPtoDP (&rc);
// ClientToScreen (&rc);
pFrame->SetWindowPos (&CWnd::wndTop, 0, 0, 200, 100 ,SWP_NOREPOSITION|SWP_NOMOVE); //add one more flag SWP_NOMOVE
}
life is like a box of chocolate,you never know what you r going to get.
|
|
|
|
|
I see you have a solution cool!
I just meant the SetMapMode and LPtoDP stuff.
Seems to me simply doing something like this would work -
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
CRect rc;
pFrame->GetWindowRect (&rc);
pFrame->MoveWindow (rc.left, rc.top, 200, 100);
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Greetings:
I have this CListCtrl in a dialog and it has the potential to have to display 10's of thousands of records. Originally, I created all the rows and populated ALL of the text items but this took a prohibitively long time.
I had thought that it was the text preparation part of the process that was taking so long, so I tried just creating the columns and ALL of the rows I needed but not filling the rows in until the user scrolled. I would then fill in only the rows that came into view. My assumption was incorrect as I discovered that what was taking a great deal of the time was just creating all of the empty rows.
What is the usual approach to handling this? The main requirement that I have is that the vertical scroll bar on the list control still reflect the actual number of records that I have.
Thanks in advance!
Mark
|
|
|
|
|
Jethro63 wrote: What is the usual approach to handling this?
It depends on the individual. Some people give up and post a question on a forum like Code Project. Others read the documentation[^] and locate the solution.
led mike
|
|
|
|
|
What? All of the documentation from end to end? I searched MSDN under the following search keys:
CListCtrl, rows, many
CListCtrl, items, many
List, rows, many
List, items, many
List, huge
List, rows, lots
List, big
and lots more - came up with nothing. Had I known to look for the string "Virtual List", I would have but why would I? There's nothing in the word "Virtual" that would lead me to think it would handle many items. It would never have occurred to me to include the word "Virtual" in any of my searches.
I wrote to another forum and got a very simple, one line response: "Check out Virtual List". As I am sure that you are a very busy man, can you not see the logic in writing this significantly shorter, more useful, and less sarcastic response?
Thank you,
Mark
-- modified at 14:16 Thursday 8th March, 2007
|
|
|
|
|
I am constantly amazed (on this site) that so many people are trying to write Windows software
that have never read (or don't know of the existence of) any of the Platform SDK.
When I use a control I always at least check here: Individual Control Information[^]
There's an overview section for pretty much every control which contains probably everything one
needs to know to start using the control. So for a listview control, a quick look finds this:
List-View Controls Overview[^]. There's alot of info there, including a
solution to your original question
These links are to info in the online documentation but IMO every Windows programmer should
download the Platform SDK and use the documentation occasionally. Then with two clicks, one can
navigate to User Interface | Windows Controls and find a plethora of information.
I hope this helps a bit for the future (if not you then maybe someone else reading).
Cheers!
Mark
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|
|
Mark Salsbery wrote: I am constantly amazed (on this site) that so many people are trying to write Windows software
that have never read (or don't know of the existence of) any of the Platform SDK.
Fish Filet eaters that whine [high-pitched-voice] oh I can't just drag and drop that like in VB while biting into my Fish Filet?[/high-pitched-voice] L O S E R S
led mike
|
|
|
|
|
And sarcasm is nothing....I've seen people called "stupid" for their questions here LMAO!
I'll just never get it....Windows is complex - I can't imagine ever completing a task without
consulting the docs. Maybe some people have it all memorized...I'm not one of 'em
"Great job, team. Head back to base for debriefing and cocktails."
(Spottswoode "Team America")
|
|
|
|