Gör ett sorterings-test baserat på pseudokod (C++)

Permalänk
Medlem

Gör ett sorterings-test baserat på pseudokod (C++)

Hej, har fått i uppgift att skriva kod i C++ baserat på pseudokod. Pseudokoden ska vara ett test för att se huruvida nummer i en textfil är sorterade (i storleksordning). Jag försöker läsa med hjälp av en header-fil och en main-fil läsa in och testa om en fil med några nummer är sorterade, men jag har kört fast och vet inte hur jag ska komma vidare härifrån. Jag är framför allt osäker på hur man använder en textfil som input-argument, jag har försökt göra det på egen hand genom att googla men det fungerar inte.

Pseudokoden ser ut såhär:

Algoritm 1: Avgör om en fil med värden är sorterad indata: Ett filnamn utdata: Sant eller falskt beroende på om filen är sorterad. a = readValue(A) medan notEndOf File(A) b = readValue(A) om a > b returnera false a = b returnera true

Header-fil med själva funktionen:

#include <iostream> #include <fstream> using namespace std; ifstream sortFile; //Vill ha en filström som inargument/invariabel: bool sortTest(ifstream&) { //deklaration av variabler: int talA, talB; sortFile >> talA; while (!sortFile.eof()){ sortFile >> talB; if (talA > talB) { return false; } talA = talB; } return true; }

Int main-funktion:

#include <fstream> #include <iostream> #include "sortTest.h" using namespace std; int main() { ifstream inFile; inFile.open("sortText.txt"); sortTest(inFile); return 0; }

Permalänk
Medlem

Tala gärna om vad som inte fungerar också, annars är det svårt att ge någon hjälp. Men det mest uppenbara är att du har return true; i din while-loop, så loopen avslutas efter första varvet.

Sen brukar man inte implementera funktioner så där i header-filer, det normala är att deklarera funktionen i header-filen men definiera den i en .cpp-fil. Se t.ex. learncpp.

Permalänk
Medlem
Skrivet av perost:

Tala gärna om vad som inte fungerar också, annars är det svårt att ge någon hjälp. Men det mest uppenbara är att du har return true; i din while-loop, så loopen avslutas efter första varvet.

Sen brukar man inte implementera funktioner så där i header-filer, det normala är att deklarera funktionen i header-filen men definiera den i en .cpp-fil. Se t.ex. learncpp.

Hej, jag uppdaterade precis mitt inlägg när du postade ditt inlägg. Problemet har någonting med filströmmarna, att läsa från en textfil. Men jag fixade return true;
Jag vet dock inte om det är fel i funktionen eller i mainfilen.

Permalänk
Medlem
Skrivet av Vading:

Hej, jag uppdaterade precis mitt inlägg när du postade ditt inlägg. Problemet har någonting med filströmmarna, att läsa från en textfil. Men jag fixade return true;
Jag vet dock inte om det är fel i funktionen eller i mainfilen.

Du kollar aldrig om du faktiskt lyckades öppna filen, så det kan kanske vara bra att göra. Se t.ex. learncpp för hur man normalt brukar öppna en fil och läsa från den.

Om problemet är att programmet inte lyckas öppna filen så beror det troligtvis på att filen ligger på fel ställe. När du bara anger namnet på den så är det en relativ sökväg, så filen måste ligga i samma mapp som ditt program körs från (vilket kanske inte är samma mapp som din kod ligger i).