Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Du kan gøre det på følgende måde: #include <stdio.h>
bool ReadFile(int &Cola, int &Mars) { FILE* FileHandle=fopen("minfil.txt", "r"); if (!FileHandle) { printf("Error opening file\n"); } char DataBuffer[200]; bool MarsFound=false, ColaFound=false; int Offset, Length; while (gets(FileHandle)) // Så længe der er mere data i filen { Offset=0; Length=strlen(DataBuffer); while (Offset<Length && DataBuffer[Offset]!=':') Offset++; if (Offset==Length) continue; while (Offset<Length && DataBuffer[Offset]!=' ') Offset++; if (Offset==Length) continue; if (stricmp("cola", DataBuffer[Offset])==0) // hvis cola er fundet i filen { ColaFound=true; Cola=atoi(DataBuffer); } else if (stricmp("Mars", DataBuffer[Offset])==0) // hvis mars er fundet { Mars=atoi(DataBuffer); MarsFound=true; } } fclose(FileHandle); if (!MarsFound || !ColaFound) { printf("Kunne ikke finde alle alle varer i filen\"); return false; } return true; }
Det er RIGTIG hurtigt skrevet, og direkte her på eksperten, så jeg ved ikke om det kan køre. Hvis jeg skulle lave det ordentligt, så ville jeg nok prøve at lave det, så funktionen ikke var afhængig af hvor mange varer det drejer sig om, og hvad de præcist hedder. Jeg ved heller ikke om det sådan lige kan compile. Men prøv det, og skriv tilbage! Så ser jeg på det i morgen.
Denne kode gør noget af det: Først åbner den file, så læser den en line ad gangen og uddrager et tal, hvis du forstår den kan du sikkert selv uddrage fra kolonnet og checke på varetypen
void main(void) // { ifstream fil_ind("C:\\TEKSTFIL.TXT"); // åbner filen char linie[81]; // variabel til en linie tekst char substr[81]; // variabel til delstreng int tal, colaold, marsold;
while ((!fil_ind.eof()) { fil_ind.getline(linie, sizeof(linie)); for (int i =0; i < 80; i++) { if linie[i] == ' ' { linie[i] = '\0'; // nu er linie en streng der stopper ved // første mellemrum int = atoi(linie); // konverterer stregen til en int linie[i] = ' '; // oprydning !! break; // ud af for løkken } // endif } // endfor } // end while } // end program
Følgende program indlæser dataen til en tabel, og udskriver så denne sorteret efter vare navn. Jeg har anvendt strtok til at finde hvert enkelt "ord" i den linie du læser fra filen - simpelthen ved at adskille dem på blank, eller linie slut (CR+LF = \r\n) På denne måde kan man meget enkelt pille informationerne ud af de ord i linien, men på forhånd ved man skal bruge.
Koden er kørt igennem TC++ 3.0 or fungerer, som den står her:
int main(int argc, char *argv[]) { FILE *filpointer; char *filnavn = "\\util\\13.txt"; char buffer[257]; char *ptrBuffer; int tokenNr, idx, idy; defVare Vare[maxVarer]; int antalVarer; char vareNavn[sizeof(Vare[0].Navn)]; int solgtAntal;
// F›rste parameter = fil navn med data. if (argc > 1) filnavn = argv[1]; filpointer = fopen(filnavn, "rb"); if (filpointer == NULL) { cprintf("\aFilen \'%s\' kunne ikke l‘ses.\r\n", filnavn); return -1; };
// S† sus igennem filen og "opsaml" totaler. memset(Vare, 0, sizeof(Vare)); antalVarer = 0;
while (fgets(buffer, sizeof(buffer), filpointer) != NULL) { // "Tokenize", dvs. opdel, den l‘ste buffer i bidder adskildt af // blank eller linieslut. ptrBuffer = strtok(buffer, " \r\n"); tokenNr = 0; vareNavn[0] = '\x0'; solgtAntal = 0; while (ptrBuffer != NULL) { switch (++tokenNr) { case 1 : // F›rste bid skal v‘re antal varer solgt. // Hvis solgt antal bliver nul, kan vi glemme linien if ((solgtAntal = atoi(ptrBuffer)) == 0) // Vil stoppe while loopet, og forts‘tte med n‘ste // linie i filen. tokenNr = 99; break; case 2 : // Teksten 'af' - den er vi ligeglade med. case 3 : // Teksten 'vare:' - den er vi ogs† ligeglade med. break; case 4 : // Varenavn - det skal vi bruge, og s† skal vi ikke // bruge mere af linien. (Konvert‚r til store bogstaver // aht. sorteringen af tabellen.) strncpy(vareNavn, strupr(ptrBuffer), sizeof(vareNavn)-1); tokenNr = 99; break; } // Token nummer
// Hvis vi ikke allerede har behandlet sidste token, forts‘t med // n‘ste - ellers stop while loop'et if (tokenNr < 99) ptrBuffer = strtok(NULL, " \r\n"); else ptrBuffer = NULL; }; // Mens der stadig er tokens tilbage
// Hvis vi fandt en vare & et antal solgt, s† "kyl" dem ind i tabel- // len - sorteret. if (vareNavn[0] != '\x0') { for (idx = 0; idx <= antalVarer && idx < maxVarer; idx++) { // Hvis pladsen er tom, eller indeholder samme vare, // s† har vi fundet varens plads. if (Vare[idx].Navn[0] == '\x0' || strncmp(Vare[idx].Navn, vareNavn, sizeof(Vare[0].Navn)-1) == 0) break;
// Check om den vare vi lige har fundet, ligger alfabetisk FR // det nuv‘rende element. I s† fald, skal resten af tabellen // rykkes een plads op, og nuv‘rende plads indeholde den lige // fundne vare. if (strncmp(Vare[idx].Navn, vareNavn, sizeof(Vare[0].Navn)-1) < 0) { // Ryk tabellen op - og nulstil nuv‘rende element. for (idy = antalVarer; idy >= idx; idy--) Vare[idy+1] = Vare[idy]; memset(&Vare[idx], 0, sizeof(Vare[0])); // Stop loop - plads fundet. break; }; // Forts‘t med n‘ste element. }; // Alle elementer.
// Hvis idx er = maxVarer, har vi flere varer en der kan v‘re i tabellen. if (idx >= maxVarer) { // Skriv fejl - og forts‘t. cprintf("\aDer er flere varer, end de %d der er plads til i tabellen.\r\n" "Vare \'%s\' (%d antal solgt) kunne ikke gemmes.\r\n", maxVarer, vareNavn, solgtAntal); } // Ikke mere plads else { // Plads fundet - eller tilf›jet. if (Vare[idx].Navn[0] == '\x0') antalVarer++; strncpy(Vare[idx].Navn, vareNavn, sizeof(Vare[0].Navn)-1); Vare[idx].AntalSolgt += solgtAntal; }; }; // Vare fundet. }; // Indtil hele filen er l‘st.
cvsac >> Jeg vil ikke lave et 4. program til dig - ovenstående fungerer sikkert udemærket. Det du skal vide er, at når du indlæser fra en tekstfil, så er du nødt til at vide hvordan dataene er lagret (som du jo også ved). Uden den viden kan man ikke lave et program, som henter dataene.
Dvs, det er bare et spørgsmål om hvilken algoritme man vil bruge til at indlæse dataene efter. Én metode (en ganske primitiv) kunne f.eks. være, at du "kravler" hen til det første tal ved at benytte fscanf() 4 gange. Du vil således stå i filen parat til at indlæse det første tal. Du kan så lave en fscanf(filpointer, "%i%s%s%s", &antal, dummy, dummy, &vare) som løber indtil enden af filen er nået - værdierne af dummy ("af" og "vare:") skal således ikke bruges.
Den bedste løsning på opgaven vil så være en eller anden afvejning af hvor hurtig/effektiv din algoritme er og hvor let din kode er at læse/redigere.
Det var lidt om det principielle - håber du kan bruge det.
bool WriteVare(int cola, char*colavarenavn, int Mars, char* MarsVareNavn, int Snickers, char* SnickersVareNavn, int lion, char* lionvarenavn, int raider, char* raidervarenavn, int bounty, char* bountyvarenavn, int hekse, char* heksevarenavn, int skummus, char* skummusvarenavn, int sour, char* sourvarenavn, int bolge, char* bolgevarenavn, int barberque, char*barberquevarenavn,int colalager, char*colalagernavn, int marslager, char* marslagernavn, int snickerslager, char* snickerslagernavn, int lionlager, char* lionlagernavn, int raiderlager, char* raiderlagernavn, int bountylager, char* bountylagernavn, int hekselager, char* hekselagernavn, int skummuslager, char* skummuslagernavn, int sourlager, char* sourlagernavn, int bolgelager, char* bolgelagernavn, int barberquelager, char* barberquelagernavn) { struct tm *CurrentTime; long TimeVal; time(&TimeVal); CurrentTime = localtime(&TimeVal); char FileNameBuffer[1000]; sprintf(FileNameBuffer, "%.4d%.2d%.2d.txt", CurrentTime->tm_year+1900, CurrentTime->tm_mon+1, CurrentTime->tm_mday);
FILE* File=fopen(FileNameBuffer, "w"); if (File==NULL) { fprintf(stderr, "error opening file!\n"); return false; } int l; char Buffer[1000]; l=sprintf(Buffer, "der er solgt følgene :\n\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n\n\n\nDer er følgene på Lager :\n\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n%d af vare: %s\n ",cola, colavarenavn, Mars, MarsVareNavn, Snickers, SnickersVareNavn, lion, lionvarenavn, raider, raidervarenavn, bounty, bountyvarenavn, hekse, heksevarenavn, skummus, skummusvarenavn, sour, sourvarenavn, bolge, bolgevarenavn, barberque, barberquevarenavn, colalager, colalagernavn, marslager, marslagernavn, snickerslager, snickerslagernavn, lionlager, lionlagernavn, raiderlager, raiderlagernavn, bountylager, bountylagernavn, hekselager, hekselagernavn, skummuslager, skummuslagernavn, sourlager, sourlagernavn, bolgelager, bolgelagernavn, barberquelager, barberquelagernavn); fwrite(Buffer, l, 1, File); fclose(File); return true; }
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void MainMenu() { int x; int y; int cola=0; int Mars=0; int Snickers=0; int lion=0; int raider=0; int bounty=0; int hekse=0; int skummus=0; int sour=0; int bolge=0; int barberque=0;
int colalager=0; int marslager=0; int snickerslager=0; int lionlager=0; int raiderlager=0; int bountylager=0; int hekselager=0; int skummuslager=0; int sourlager=0; int bolgelager=0; int barberquelager=0;
int colalager2=0; int marslager2=0; int snickerslager2=0; int lionlager2=0; int raiderlager2=0; int bountylager2=0; int hekselager2=0; int skummuslager2=0; int sourlager2=0; int bolgelager2=0; int barberquelager2=0; while (true) { printf("Hvor mange coler er der på lager ? : "); cin >> colalager; printf("Hvor mange mars er der på lager ? : "); cin >> marslager; printf("Hvor mange snickers er der på lager ? : "); cin >> snickerslager; printf("Hvor mange lionbar er der på lager ? : "); cin >> lionlager; printf("Hvor mange raiders er der på lager ? : "); cin >> raiderlager; printf("Hvor mange bounty er der på lager ? : "); cin >> bountylager; printf("Hvor mange heksehyl er der på lager ? : "); cin >> hekselager; printf("Hvor mange skummus er der på lager ? : "); cin >> skummuslager; printf("Hvor mange sourcream chips er der på lager ? : "); cin >> sourlager; printf("Hvor mange bølge chips er der på lager ? : "); cin >> bolgelager; printf("Hvor mange barberque chips er der på lager ? : "); cin >> barberquelager; start: clrscr(); printf("tast 1 for cola :\n" "tast 2 for mars :\n" "tast 3 for snickers :\n" "tast 4 for Lion Bar :\n" "tast 5 for Raider :\n" "tast 6 for bounty :\n" "tast 7 for heksehyl :\n" "tast 8 for smummus :\n" "tast 9 for sourcream chips :\n" "tast 10 for bølge chips :\n" "tast 11 for barberque chips :\n" "tast 20 for at tilføje til lageret :\n" "tast 0 for afslut\n"); cin >> x; if (x==0) break; if (x==1) {cola++; colalager=colalager-1; } if (x==2) {Mars++; marslager=marslager-1; } if (x==3) {Snickers++; snickerslager=snickerslager-1; } if (x==4) {lion++; lionlager=lionlager-1; } if (x==5) {raider++; raiderlager=raiderlager-1; } if (x==6) {bounty++; bountylager=bountylager-1; } if (x==7) {hekse++; hekselager=hekselager-1; } if (x==8) {skummus++; skummuslager=skummuslager-1; } if (x==9) {sour++; sourlager=sourlager-1; } if (x==10) {bolge++; bolgelager=bolgelager-1; } if (x==11) {barberque++; barberquelager=barberquelager-1; } if (x==20) { printf("tast 1 for cola :\n" "tast 2 for mars :\n" "tast 3 for snickers :\n" "tast 4 for Lion Bar :\n" "tast 5 for Raider :\n" "tast 6 for bounty :\n" "tast 7 for heksehyl :\n" "tast 8 for smummus :\n" "tast 9 for sourcream chips :\n" "tast 10 for bølge chips :\n" "tast 11 for barberque chips :\n" "tast 0 for afslut\n"); cin >> y; if (y==1) { cout << "hvor mange ? :"; cin >> colalager2; colalager=colalager+colalager2; } if (y==2) { cout << "hvor mange ? :"; cin >> marslager2; marslager=marslager+marslager2; } if (y==3) { cout << "hvor mange ? :"; cin >> snickerslager2; snickerslager=snickerslager+snickerslager2; } if (y==4) { cout << "hvor mange ? :"; cin >> lionlager2; lionlager=lionlager+lionlager2; } if (y==5) { cout << "hvor mange ? :"; cin >> raiderlager2; raiderlager=raiderlager+raiderlager2; } if (y==6) { cout << "hvor mange ? :"; cin >> bountylager2; bountylager=bountylager+bountylager2; } if (y==7) { cout << "hvor mange ? :"; cin >> hekselager2; hekselager=hekselager+hekselager2; } if (y==8) { cout << "hvor mange ? :"; cin >> skummuslager2; skummuslager=skummuslager+skummuslager2; } if (y==9) { cout << "hvor mange ? :"; cin >> sourlager2; sourlager=sourlager+sourlager2; } if (y==10) { cout << "hvor mange ? :"; cin >> bolgelager2; bolgelager=bolgelager+bolgelager2; } if (y==11) { cout << "hvor mange ? :"; cin >> barberquelager2; barberquelager=barberquelager+barberquelager2; } } if (!WriteVare(cola, "cola", Mars, "Mars", Snickers, "Snickers", lion, "Lionbar", raider, "Raider", bounty, "Bounty", hekse, "Heksehyl", skummus, "skummus", sour, "Sourcream Chips", bolge, "Bølge salt", barberque, "barberque",colalager, "cola", marslager, "mars", snickerslager, "snickers", lionlager, "lionbar", raiderlager, "raider", bountylager, "bounty", hekselager, "heksehyl", skummuslager, "skummus", sourlager, "sourcream chips", bolgelager, "bølge chips", barberquelager, "barberque chips" )) return; goto start; }
-------- mit problem er at programmet skal kører på en lille bærbar der har strøm nok til ca 3 sec hvis strømmen går til vores netparty :)
så jeg ville have programmet til at læse den txt fil hvis den allerede fantes for den dag.
jeg har lavet det engang før med "FILE*" et eller andet det var extremt simpelt kan jeg huske og jeg brugte bare nogle "cin >> marsoldfile" og lagde som så til mars med "mars=mars+marsoldfile" men jeg kan ikke huske hvad jeg gjorde sidst så derfor spørg jeg her :))
Du kan nu godt bruge det jeg skrev før til at gøre dette her.
#include <stdio.h>
bool ReadFile(int &Cola, int &Mars, ..... ALLE DINE VARIABLER DER SKAL LÆSES I FILEN) { FILE* FileHandle=fopen("minfil.txt", "r"); if (!FileHandle) { printf("Error opening file\n"); } char DataBuffer[200]; bool MarsFound=false, ColaFound=false; int Offset, Length; while (gets(FileHandle)) // Så længe der er mere data i filen { Offset=0; Length=strlen(DataBuffer); while (Offset<Length && DataBuffer[Offset]!=':') Offset++; if (Offset==Length) continue; while (Offset<Length && DataBuffer[Offset]!=' ') Offset++; if (Offset==Length) continue; if (stricmp("cola", DataBuffer[Offset])==0) // hvis cola er fundet i filen { ColaFound=true; Cola=atoi(DataBuffer); } else if (stricmp("Mars", DataBuffer[Offset])==0) // hvis mars er fundet { Mars=atoi(DataBuffer); MarsFound=true; }
else if (stricmp(" ....... DEN VARE DU VIL SØGE EFTER! { DEN VARE DU HAR FUNDET=atoi(DataBuffer); VARE DU HAR FUNDET -Found=true; }
} fclose(FileHandle); if (!MarsFound || !ColaFound) { printf("Kunne ikke finde alle alle varer i filen\"); return false; } return true; }
Du skal bare indsætte alle de varenavne og "else if " sætninger du skal bruge.
Det er ikke den pæneste måde at gøre det på, men det er jo i forvejen ikke den pæneste måde det bliver gemt og behandlet på. Hvis du gerne vil have noget mere generelt, som ikke er afhængig af antallet og navnet på en vare, så kan det også lade sige gøre. Men hvis du blot vil have noget der kan virke, så er det her ok.
typedef int bool; const int false = 0; const int true = 1;
const int maxVarer = 11; const char* VareNavn[maxVarer] = { "Cola", "Mars", "Snickers", "Lion Bar", "Raider", "Bounty" , "Heksehyl", "Skummus", "Sourcream chips", "Bølge chips", "Barbeque chips" }; const char* FileName = "11434.dat"; typedef struct { int cola; int Mars; int Snickers; int lion; int raider; int bounty; int hekse; int skummus; int sour; int bolge; int barberque; } defLager; union { defLager FixLager; int TblLager[maxVarer]; } Beholdning;
/* Dan tom fil, hvis ingen post kan læses. */ if (fread(Lager, sizeof(*Lager), 1, File) != 1) { fclose(File); return WriteVare(Lager); }; /* Luk den just læste fil. */ fclose(File); return true; } /* ReadVare */
/* Hent beholdning. */ memset(&Beholdning, 0, sizeof(Beholdning)); if (!ReadVare(&Beholdning.FixLager)) return -1; /* menu loop. */ clrscr(); x = -1; while (x != 0) { printf("SALG:\n=====\n"); VareMenu(); printf("----------------------------------\n" "Tast 20 for at tilføje til lageret\n" "Tast 0 for at afslutte\n"); cin >> x; switch (x) { case 0 : /* Afslut. */ break; case 20 : /* Tilføj til beholdning. */ clrscr(); x = -1; while (x != 0) { printf("TILFØJ TIL LAGER:\n=================\n"); VareMenu(); printf("----------------------\n" "Tast 0 for at afslutte\n"); cin >> x; if (x >= 1 && x <= maxVarer) { Beholdning.TblLager[x-1]++; WriteVare(&Beholdning.FixLager); } else { if (x != 0) printf("FEJL: %d er IKKE et gyldigt varenummer.\n", x); }; }; /* Ydre while skal jo fortsætte. */ x = -1; break; default : /* Salg af vare nummer x. */ if (x >= 1 && x <= maxVarer) { if (Beholdning.TblLager[x-1] > 0) { Beholdning.TblLager[x-1]--; WriteVare(&Beholdning.FixLager); } else printf("FEJL: Ikke flere tilbage af vare nr. %d\n", x); } else printf("FEJL: %d er IKKE et gyldigt varenummer.\n", x); break; }; /* Switch */ }; /* while */
Læg mærke til at WriteVare selv åbner, opdaterer og lukker filen igen. Hver gang du ændrer på beholdningerne, laves bevidst WriteVare. Dette sikrer at din harddisk altid er opdateret med de sidste nye tal - også selvom strømmen svigter midt i det hele. (Det skal gå stærkt hvis strømsvigtet skal nå at komme mellem din indtastning og opdateringen af harddisken.)
Den formaterede udskrift du starter med at beskrive kan meget enkelt laves ud fra d.o.:
void WriteLagerStatus(void) { fprintf(stdprn, "Der er solgt følgende:\n======================\n"); for (int idx = 0; idx < maxVarer; idx++) fprintf(stdprn, "%d af Vare: %.15s\n", Beholdning.Tbl.Solgt[idx], VareNavn[idx]); fprintf(stdprn, "Beholdning er:\n==============\n"); for (int idx = 0: idx < maxVarer; idx++) fprintf(stdprn, "%d af Vare; %.15s\n", Beholdning.Tbl.Lager[idx], VareNavn[idx]); fprintf(stdprn, "--Slut på udskrift--"); } /* VareLagerStatus*/
Du skal selvfølgelig så opdatere defLager struct'en med et ekstra antal til de solgte varer:
struct { int cola; int mars; : int barberque; int colaSolgt; int marsSolgt; : int barberqueSolgt; } defLager; union { defLager FixLager; struct { int Lager[maxVarer]; int Solgt[maxVarer]; } TBL; } Beholdning;
- og opdatere dem samtidigt med at du nedtæller lagerbeholdningen:
typedef int bool; const int false = 0; const int true = 1;
const int maxVarer = 11; const char* VareNavn[maxVarer] = { "Cola", "Mars", "Snickers", "Lion Bar", "Raider", "Bounty" , "Heksehyl", "Skummus", "Sourcream chips", "Bølge chips", "Barbeque chips" }; const char* FileName = "11434.dat"; typedef struct { /* På lager */ int cola; int mars; int snickers; int lion; int raider; int bounty; int hekse; int skummus; int sour; int bolge; int barbeque; /* Solgt */ int colaSolgt; int marsSolgt; int snickersSolgt; int lionSolgt; int raiderSolgt; int bountySolgt; int hekseSolgt; int skummusSolgt; int sourSolgt; int bolgeSolgt; int barbequeSolgt; } defLager; union { defLager FixLager; struct { int Lager[maxVarer]; int Solgt[maxVarer]; } Tbl; } Beholdning;
/* Dan tom fil, hvis ingen post kan læses. */ if (fread(Lager, sizeof(*Lager), 1, File) != 1) { fclose(File); return WriteVare(Lager); }; /* Luk den just læste fil. */ fclose(File); return true; } /* ReadVare */
/* menu loop. */ clrscr(); x = -1; while (x != 0) { printf("SALG:\n=====\n"); VareMenu(); printf("----------------------------------\n" "Tast 20 for at tilføje til lageret\n" "Tast 21 for at udskrive status liste\n" "Tast 0 for at afslutte\n"); cin >> x; switch (x) { case 0 : /* Afslut. */ break; case 21 : /* Udskriv status/salgsliste */ WriteLagerStatus(); clrscr(); break; case 20 : /* Tilføj til beholdning. */ clrscr(); x = -1; while (x != 0) { { printf("SALG:\n=====\n"); VareMenu(); printf("----------------------------------\n" "Tast 20 for at tilføje til lageret\n" "Tast 21 for at udskrive status liste\n" "Tast 0 for at afslutte\n"); cin >> x; switch (x) { case 0 : /* Afslut. */ break; case 21 : /* Udskriv status/salgsliste */ WriteLagerStatus(); clrscr(); break; case 20 : /* Tilføj til beholdning. */ clrscr(); x = -1; while (x != 0) { printf("TILFØJ TIL LAGER:\n=================\n"); VareMenu(); printf("----------------------\n" "Tast 0 for at afslutte\n"); cin >> x; if (x >= 1 && x <= maxVarer) { Beholdning.Tbl.Lager[x-1]++; WriteVare(&Beholdning.FixLager); clrscr(); } else { if (x != 0) printf("FEJL: %d er IKKE et gyldigt varenummer.\n", x); }; }; /* Ydre while skal jo fortsætte. */ clrscr(); x = -1; break; default : /* Salg af vare nummer x. */ if (x >= 1 && x <= maxVarer) { if (Beholdning.Tbl.Lager[x-1] > 0) { Beholdning.Tbl.Lager[x-1]--; Beholdning.Tbl.Solgt[x-1]++; WriteVare(&Beholdning.FixLager); clrscr(); } else printf("FEJL: Ikke flere tilbage af vare nr. %d\n", x); } else printf("FEJL: %d er IKKE et gyldigt varenummer.\n", x); break; }; /* Switch */ }; /* while */
return 0; } /* Main */
Jeg har smidt printet til en fil - så kan du lave "copy 11434.prn lpt1" hvis du vil have den på papir.
Mit eksempel er direkte klippet ind fra TC++ 3.0, så koden skulle være god nok. Jeg vil umiddelbart to at dit problem skyldes at din compiler ikke tillader "nested comments". Prøv derfor at fjerne alle kommentarer, og se om det ikke hjælper. HVIS det hjælper, skal du lede efter en option i opsætningen af compileren der hedderr "Allow nested comments".
det var nu ikke det problemet var :)) men jeg har da fået det til at virke :)
så nu vil jeg dele nogle point ud :)
Synes godt om
Ny brugerNybegynder
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.