Multidesk.be » Forums » C en C++ » Resultaat wegschrijven naar *.txt (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 woensdag 9 juni 2004 om 09:37:03.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Welke regels moet ik toevoegen om mijn resultaat gewoon weg te schrijven naar *.txt?

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

int main(void)
{
int reeks[20],i,j,aantal,hulp;
int eerste,laatste,midden;

/* inlezen van de gegevens*/
cout << \"Geef het aantal getallen:\";
cin >> aantal;
for (i=0;i<aantal;++i)
{
cout << \"geef getal:\";
cin >> reeks[i];

}

/* sorteren */
for (i=1;i<aantal;i++)
{
hulp=reeks[i];
eerste=0; laatste=i-1;
while (eerste<=laatste)
{
midden=(eerste+laatste)/2;
if (hulp<reeks[midden])
laatste=midden-1;
else eerste=midden+1 ;
}
for (j=i-1;j>=eerste;j--)
reeks[j+1]=reeks[j];
reeks[eerste]=hulp;
}

/* uitlezen van de resultaten*/
for (i=0;i <aantal;++i)
cout << reeks[i] << \"\\n\";
system(\"PAUSE\");
return 0;
}
^ Reactie #1 geschreven door Bridge_Burner op woensdag 9 juni 2004 om 09:39:01.
Bridge_Burner heeft nog geen avatar toegevoegd
Multiviteit: 404
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
analoog aan het antwoord op http://www.multidesk.be/forums/000687/#2962
^ Reactie #2 geschreven door een gast op woensdag 9 juni 2004 om 09:47:34.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid

Ik versta die uitleg niet echt...
wat meer uitleg aub, want ik ben een amateur

(blush)
^ Reactie #3 geschreven door pke op woensdag 9 juni 2004 om 18:59:09.
pke heeft nog geen avatar toegevoegd
Multiviteit: 161
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik heb het gevoel dat een bepaalde school dit forum heeft gevonden ;)
want ik ben deze vraag al 2 à 3 keer opt forum tegengekomen en ik ben ook al 3 keer gecontacteerd via email voor dit "probleem"

Zoals Brigde_Burner reeds zei is het antwoord al gegeven in een andere topic!!

wegschrijven naar een file gaan gewoon door
CODE
  1.  
  2.      ofstream output;
  3.      output.open ("output.txt");
  4.      for (i=0; i<aantal; i++)
  5.           output << reeks[i] << endl;
  6.                
  7.      output.close();
  8.  


Als je een amateur bent is het misschien niet slecht om eerst de basic van C++ onder de knie te krijgen én dan pas te willen werken met files ed.
Purple Dynamite
Steeds het laatste nieuws, interactiviteit, games, .....
Visit www.anderlecht-online.be !!!!
^ Reactie #4 geschreven door een gast op donderdag 10 juni 2004 om 08:32:40.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ja, dit klopt het is 1 en dezelfde school

Het zijn weer examens hé :)

In naam van gans de school willen we pcke hartelijk bedanken voor zijn hulp.

Waar docenten niet in lukken, daar lukt pcke dus duidelijk wel in.


:D
^ Reactie #5 geschreven door Martijn op donderdag 10 juni 2004 om 08:53:14.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid

Randinformatie

't is pke :-D

En inderdaad, 't is ne krak :-P
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #6 geschreven door een gast op donderdag 10 juni 2004 om 10:06:44.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid

Nog 1 vraagje:

hoe kan men inlezen vanuit tekstfile, zodat ik vooraf de getallen in file kan plaatsen? (de rest werkt)



#include <fstream.h>
#include <stdlib.h>
#include <iostream.h>
#include <stdio.h>


int main(void)
{

int reeks[20],i,j,aantal,hulp;
int eerste,laatste,midden;

/* inlezen van de gegevens*/
cout << "Geef het aantal getallen:";
cin >> aantal;
for (i=0;i<aantal;++i)
{
cout << "geef getal:";
cin >> reeks[i];

}

/* sorteren */
for (i=1;i<aantal;i++)
{
hulp=reeks[i];
eerste=0; laatste=i-1;
while (eerste<=laatste)
{
midden=(eerste+laatste)/2;
if (hulp<reeks[midden])
laatste=midden-1;
else eerste=midden+1 ;
}
for (j=i-1;j>=eerste;j--)
reeks[j+1]=reeks[j];
reeks[eerste]=hulp;
}

/*wegschrijven naar tekstfile*/
ofstream output;
output.open ("output.txt" );
for (i=0; i<aantal; i++)
output << reeks[i] << endl;

output.close();


/* uitlezen van de resultaten*/
for (i=0;i <aantal;++i)
cout << reeks[i] << "n";
system("PAUSE" );
return 0;
}
^ Reactie #7 geschreven door pke op donderdag 10 juni 2004 om 11:30:34.
pke heeft nog geen avatar toegevoegd
Multiviteit: 161
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Vervang uw stuk inlezen:
CODE
  1.  
  2. /* inlezen van de gegevens*/
  3. cout << "Geef het aantal getallen:";
  4. cin >> aantal;
  5. for (j=0;j<aantal;++j){
  6.     cout << "geef getal:";
  7.     cin >> reeks[j];
  8. }
  9.  

Door dit stuk voor het inlezen via file (code gemaakt voor elk data-item op een nieuwe lijn)
CODE
  1.  
  2.     ifstream input;
  3.     input.open ("input.txt");
  4.     int aantal=0;
  5.     char buffer[800];
  6.        
  7.     while (input.getline (buffer, 799) != 0 ){
  8.         strcpy (reeks[aantal], buffer);
  9.         aantal++;
  10.     }
  11.     input.close ();
  12.     cout<< "File ingelezen ..."<<endl<<"Er werden "<<aantal<<" getallen ingelezen"<<endl;
  13.  


Nog een kleine opm. :

Ik zou iets doen aan uw "programmeerstijl" want eens je iets grotere (en zelfs bij dit programma is het storend!!) programma's gaat schrijven is het héél onduidelijk om de code te lezen.
Normaal gaat men ervan uit dat 1 blokje code +- 25 lijnen mag bevat en vanaf dan dat men moet werken met methodes.
Dus: splits uw code op in verschillende methode die je dan oproept via uw main!! Bv. Inlezen(), Sorteren(), Uitschrijven() en uw code zal er ineens al een stuk duidelijker uitzien!!


Randinformatie

bedankt voor de complimentjes ;-)
Deze tekst werd het laatst bewerkt door pke op donderdag 10 juni 2004 om 11:35:59.
Purple Dynamite
Steeds het laatste nieuws, interactiviteit, games, .....
Visit www.anderlecht-online.be !!!!
^ Reactie #8 geschreven door een gast op donderdag 10 juni 2004 om 11:55:26.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
nog 1 foutje:


strcpy (reeks[aantal], buffer);

compiler zegt:

passing 'int' to argument 1 of 'strcpy(char*, const char *) lacks a cast

wat doe ik verkeerd?









#include <fstream.h>
#include <stdlib.h>
#include <iostream.h>
#include <stdio.h>


int main(void)
{

int reeks[20],i,j,aantals,hulp;
int eerste,laatste,midden;



//* inlezen van de gegevens*/
cout << "Geef het aantal getallen:";
cin >> aantals;
for (j=0;j<aantals;++j)
{
cout << "geef getal:";
cin >> reeks[j];

}

ifstream input;
input.open ("input.txt" );
int aantal=0;
char buffer[800];

while (input.getline (buffer, 799) != 0 ){
strcpy (reeks[aantal], buffer);
aantal++;
}
input.close ();
cout<< "File ingelezen ..."<<endl<<"Er werden "<<aantal<<" getallen ingelezen"<<endl;






/* sorteren */
for (i=1;i<aantals;i++)
{
hulp=reeks[i];
eerste=0; laatste=i-1;
while (eerste<=laatste)
{
midden=(eerste+laatste)/2;
if (hulp<reeks[midden])
laatste=midden-1;
else eerste=midden+1 ;
}
for (j=i-1;j>=eerste;j--)
reeks[j+1]=reeks[j];
reeks[eerste]=hulp;
}

/*wegschrijven naar tekstfile*/
ofstream output;
output.open ("output.txt" );
for (i=0; i<aantals; i++)
output << reeks[i] << endl;

output.close();


/* uitlezen van de resultaten*/
for (i=0;i <aantals;++i)
cout << reeks[i] << "n";
system("PAUSE" );
return 0;
}


^ Reactie #9 geschreven door pke op donderdag 10 juni 2004 om 13:13:52.
pke heeft nog geen avatar toegevoegd
Multiviteit: 161
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ge moet die char* nog omzetten naar 'n int!

Vervang het inlezen door dit:
CODE
  1.  
  2. char* buffer;
  3. while (input.getline (buffer, 799) != 0 ){
  4.         reeks[aantal] = atoi (buffer);
  5.         aantal++;
  6. }

Purple Dynamite
Steeds het laatste nieuws, interactiviteit, games, .....
Visit www.anderlecht-online.be !!!!
^ Reactie #10 geschreven door een gast op donderdag 10 juni 2004 om 15:07:07.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Bedankt pcke,

ge zijt gewoon de beste :D
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten