Avatar billede kmad98 Nybegynder
20. december 2002 - 22:13 Der er 2 kommentarer og
1 løsning

Skrive til fil / læse fra fil (på flere linjer)

Hej Eksperter !
Jeg er igang med at lave et program der kan skrive flere emailnumre(>1) til en fil og helst over flere linjer. Mit program skriver pt. kun et emailnummer og lagrer data i en fil. Jeg vil derfor gerne have hjælp til at skrive x antal emailnumre til en fil, og samtidigt kun skrive et emailnavn og subjekt for x antal emailnumre.
Meningen er, at der skal lagres én mail, men skrives til flere modtager (emailnumre), så der spares plads på hardisken!
Håber der er en der kan hjælpe mig. Jeg har endvidere vedhæftet en del af min kode (er det fuldstændig uoverskueligt ????).

# include <iostream>
# include <fstream>
# include <iomanip>

# include "archiveemails.h"

using namespace std;
using std::ifstream;
using std::ofstream;


int cc=0;        //counter for emails in memory - not total
int KK[100]={0};      //remeber all emailsno in memory


archiveemails::archiveemails(const char* namem)
{
    strcpy(archiveemailsName, namem);
    firstEmails=0;
    NOm=0;
}


void archiveemails::addEmails()
{
    char nor[5];
    char en[20], sj[30];
    int kontm=0, nrm;
    int nm;
{

    cout << "\tIndtast antal mails du vil sende (max 5) : "; cin >> nm;


    cout << "\tIndtast emailsnummer ( modtagernummer ) : ";

    while (kontm < 5)
    {
       
        kontm = 0;
        cin >> nor;
     

        while (strlen(nor)!= 4) 
        {
            cout << "\nUGYLDIGT!\nIndeholder ikke fire tal.\n\n\tIndtast emailnummer : ";
            cin >> nor; 
        }


        for (int jj = 0; jj <= 3; jj++)
        {
            //if (nor[jj] < 109 || nor[jj] > 112)  //(bruges i menu: ellers kommer
            //    kontm = -1;                          //melding om forkert emailnr !!!???
            //else
                kontm++;
        }

        if (kontm == 4)
        {
            nrm = atoi(nor);
            //nrm1 = atoi(nor1);

            for(int kk = 0; kk <= cc; kk++)
            {
                if(KK[kk]==nrm) /
                {
                    cout << "\nUGYLDIGT!\nemailnummeret eksisterer allerede.\n\n\tIndtast emailnummer : ";
                    kontm = -1;
                    break;
                }
                else
                    kontm++;
            }
        }
        else
            cout << "\nUGYLDIGT!\nIndeholder ikke fire tal.\n\n\tIndtast emailnummer : ";
    }

}
   

    cc++;
    KK[cc]=nrm;


    cout << "\tIndtast emailnavn      : "; cin >> en;
    cout << "\tIndtast subject        : "; cin >> sj;

    emails* PP = new emails(nrm , en, sj); 
    PP->getNextm() = firstEmails;
    firstEmails = PP;

    NOm++;

    firstEmails->printm();
}
Avatar billede arne_v Ekspert
20. december 2002 - 22:32 #1
Det virker meget uoverskueligt.

Der mangler også en del information.

Jeg tror, at du skal gribe det meget mere systematisk an.

Noget i retning af:
  - lav en beskrivelse af den ønskede logik i ganske almindelig dansk
  - opret klasser med members og methods som matcher problem-stillingen
    men uden indhold i metoderne
  - ret til indtil det compiler
  - lav den øverste logik og og lav dummy kode i de nederste lag
  - ret til indtil det compiler
  - ret til indtil det virker
  - erstat dummy kode med rigtig kode en metode af gange
  - check løbende at det compiler og virker
Avatar billede kmad98 Nybegynder
21. december 2002 - 01:30 #2
jeg har diverse klasser til at lave programmet komplet ! Selve programmet virker nu, men jeg mangler som sagt at kunne skrive flere emailnumre pr. sendt email.
Det er her omkring mit problem ligger:
.
.
.
cout << "\tIndtast antal mails du vil sende (max 5) : "; cin >> nm;


    cout << "\tIndtast emailsnummer ( modtagernummer ) : ";

    while (kontm < 5)
    {
       
        kontm = 0;
        cin >> nor;
.
.
.
hjalp det?
Avatar billede arne_v Ekspert
21. december 2002 - 16:01 #3
Ikke meget.

Ummidelbart vil tro at:

cout << "\tIndtast antal mails du vil sende (max 5) : "; cin >> nm;
cout << "\tIndtast emailsnummer ( modtagernummer ) : ";
while (kontm < 5)
{
  kontm = 0;
  cin >> nor;
...
}

skulle være:

cout << "\tIndtast antal mails du vil sende (max 5) : ";
cin >> nm;
for(kontm = 0; kontm < nm; kontm++)
{
  cout << "\tIndtast emailsnummer ( modtagernummer ) : ";
  cin >> nor;
...
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester