Multidesk.be » Forums » C en C++ » Sorteren voor een C beginner (newbie) (gesloten)

Helpinformatie
Dit onderwerp bevindt zich in het archief.
Het is bijgevolg niet mogelijk er nog op te reageren.
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door een gast op zondag 6 juni 2004 om 13:57:12.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Hallo, Rambo heeft me gestuurd

Op onlinehelpdesk wordt ik gewoon niet geholpen.
Rambo beweert dat ze hier slimmer zijn dus mijn excuses dat ik hier niet eerst mijn vraag heb gesteld (ik had gewoon nog nooit van dit forum gehoord)

Dit is mijn bescheiden vraag:

De code die tussen de sterretjes staat is een sorteeralgoritme.
Kan iemand helpen zodat mijn resultaat in output.txt komt?
(nu komt die gewoon in het dos-venster terecht bij het compilen)

CODE
  1. #include <fstream.h>
  2. #include <algorithm>
  3.  
  4. typedef char A[21];
  5. typedef A B[10];
  6.  
  7. int LEZEN (B);
  8. void SCHRIJVEN (B,int);
  9.  
  10. //******************************************
  11. bool even_oneven(const int& y, const int& x)
  12. {if (!(x%2) && (y%2)) return true;
  13. return false;
  14. //******************************************
  15. }
  16.  
  17. int main(void) {
  18.  
  19. //*******************************************
  20. const int n=10;
  21. int test[n];
  22. for (int i=0; i<n; i++) test[i]=n-i;
  23. sort(test,test+n,even_oneven);
  24. for (int i=0; i<n; i++) cout << test[i] << " ";
  25. cout << endl;
  26. //***************************************************
  27.  
  28. B getallen;
  29. int aantal,i;
  30.  
  31. aantal=LEZEN(getallen);
  32. for (i=0;i<aantal;i++)
  33. SCHRIJVEN(getallen,aantal);
  34.  
  35. system("PAUSE");
  36. return 0;
  37. }
  38.  
  39. int LEZEN (B getal){
  40.  
  41. ifstream input;
  42. input.open ("input.txt");
  43. int i=0;
  44. char buffer[800];
  45.  
  46. while (input.getline (buffer, 799) != 0 ){
  47. strcpy (getal[i], buffer);
  48. i++;
  49.  
  50. }
  51. input.close ();
  52. cout<< "File ingelezen ..."<<endl;
  53.  
  54. return i;
  55. }
  56.  
  57. void SCHRIJVEN(B getal, int n){
  58. int i;
  59. ofstream output;
  60. output.open ("output.txt");
  61. for (i=0; i<n; i++)
  62. output << getal[i] << endl;
  63.  
  64. output.close();
  65. cout<< "Resultaat weggeschreven naar file ..."<<endl;
  66.  
  67. }

:)

[edit by admin]
Ik heb je code even tussen [ code ]tags geplaatst, zo wordt deze overzichtelijker en zonder smileys weergeven ;-)

Martijn
[/edit by admin]
Deze tekst werd het laatst bewerkt door Martijn op zondag 6 juni 2004 om 14:48:37.
^ Reactie #1 geschreven door een gast op zondag 6 juni 2004 om 15:33:15.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Bedankt Martijn :D
^ Reactie #2 geschreven door een gast op zondag 6 juni 2004 om 15:34:43.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
De bovenste includes zijn: (ze worden niet weergegeven)

fstream.h
algorithm
^ Reactie #3 geschreven door pke op zondag 6 juni 2004 om 21:03:34.
pke heeft nog geen avatar toegevoegd
Multiviteit: 161
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
CODE
  1.  
  2. void SCHRIJVEN(B getal, int n){
  3.      int i;
  4.      ofstream output;
  5.      output.open ("output.txt");
  6.      for (i=0; i<n; i++){
  7.          output << getal[i] << endl;
  8.      }
  9.      output.close();
  10.      cout<< "Resultaat weggeschreven naar file ..."<
  11. }
  12.  

kheb gewoon even uw for lus aangepast ... voor de rest lijkt me dat wel ok
wat gebeurt er juist fout ?

mvg,
Pke

Purple Dynamite
Steeds het laatste nieuws, interactiviteit, games, .....
Visit www.anderlecht-online.be !!!!
^ Reactie #4 geschreven door een gast op maandag 7 juni 2004 om 10:58:03.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Even mijn vraag anders formuleren:

Ik heb een functie geschreven die uit een reeks getallen vb:
1 2 3 4 5 6 7 8 9 10
sorteert, eerst oneven (groot naar klein) dan even (groot naar klein)
9 7 5 4 3 10 8 6 4 2

dit is me al gelukt. (zie onderstaande code)

Mijn probleem: hoe uitlezen uit tekstfile 1 2 3 4 5 6 7 8 9 10 en
daarna mijn werkende algoritme gebruiken, en dan in dezelfde file het
sorteer resultaat schrijven?
(dus 9 7 5 4 3 10 8 6 4 2 moet in een tekstfile terechtkomen)


Dit is het werkende sorteer programma:

#include <iostream>
#include <algorithm>
#include <stdlib.h>

bool even_odd(const int& x, const int& y);
int main()
{const int n=10;
int x[n];
for (int i=0; i<n; i++) x[i]=n-i;
sort(x,x+n,even_odd);
for (int i=0; i<n; i++) cout << x[i] << " ";
cout << endl;
system("PAUSE" );
return 0;
}
bool even_odd(const int& y, const int& x)
{if (!(x%2) && (y%2)) return true;
return false;
}

Alvast bedankt
^ Reactie #5 geschreven door een gast op maandag 7 juni 2004 om 11:00:21.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
kleine rechtzetting, ik had me mistypt sorry daarvoor 8-)

het is 9 7 5 3 1 10 8 6 4 2 maar maakt weinig uit want sorteeralgoritme neemt de taak reeds op zich.
^ Reactie #6 geschreven door een gast op maandag 7 juni 2004 om 15:54:35.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Maar hoe krijg ik het resultaat in een textfile???

:)
^ Reactie #7 geschreven door pke op maandag 7 juni 2004 om 21:21:31.
pke heeft nog geen avatar toegevoegd
Multiviteit: 161
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid

Dixit

Gast (op 07/06/2004 15:54:35) zei:
Maar hoe krijg ik het resultaat in een textfile???

:)

Ik veronderstel dat x[] uw gesorteerde tabel is na het sorteer-algoritme

wegschrijven doe je dan gewoon via de code dat ik hoger reeds heb gegeven.
Je vervangt dus de output naar het scherm
CODE
  1. for (int i=0; i<n; i++) cout << x[i] << " ";
  2. cout << endl;
  3.  

door wegschrijven naar een file:
CODE
  1.  
  2.      ofstream output;
  3.      output.open ("output.txt");
  4.      for (int i=0; i<n; i++){
  5.          output << getal[i] << endl;
  6.      }
  7.      output.close();
  8.      cout<< "Resultaat weggeschreven naar file ..."<
  9.  


succes!!
Purple Dynamite
Steeds het laatste nieuws, interactiviteit, games, .....
Visit www.anderlecht-online.be !!!!
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten