Koordinatsystem

Tags:    c++

Hej alle
Jeg har fået til opgave at lave et, rent ud sagt, sindsygt program?
Jeg skal lave et program (hvor hovedfilen skal kaldes for ”visdata.c”) til at plotte et to-dimentionelt koordinat system på skærmen ved hjælp af ascii tegn. Programmet skal demonstreres til at kunne vise nedenstående output, hvor der (som eksempler) er tal værdier (x0,y0)= (5,10), (x1,y1) = (10,10), (x3,x4)=(15,20), etc. Koordiantsættene skal aflæses og bruges som data for programmet:

(man kan åbenbart ikke sætte koordinatsystemet ind på denne side, så hvis i ønsker at se koordinatsystemet skal i bare angive mail, så sender jeg den til jer.)

Der er følgende funktionelle krav til funktionerne i header filen:

a) Programmet skal kunne vise en string til hver af titlerne på de to akser. Ovenfor er der f.eks. brugt ”Temp (C)” til y-aksen.

b) Det skal kunne modtage en minimum værdi og en maksimum værdi for både x- og y-akserne. Ovenfor er der f.eks. brugt 0.0 og 100.0 til x-aksen.

c) Programmet skal selv kunne udregne og skrive intervalværdierne på akserne.

d) I programmet skal bruges følgende ting: const, extern, pointere, funktioner, headerfiler, #define, #ifndef, makefil, structs, switch, enumeration, typedef, den tertiere operator ”? :” og multidimensionelle arrays.

e) Der må ikke laves hardcoding i programmet. Mest muligt skal laves med ”#define”.

f) Programmet skal organiseres fornuftigt med header filer til forskellige formål, samt fornuftige funktioner til de ting programmet skal gøre.


Jeg synes altid det er lidt svært at komme igang med en opgave, og især når det er så svær en opagve. Jeg har startet med at lave et mini-program der indikerer hvordan man læser fra en fil og i dette tilfælde er det så kun de to første koordinatsæt:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define FILE_NAME "testdata.txt"

int main(void)
{
// Pointer til filen
FILE *fp;

// Variable til en tid og temperatur
double dv, dv1;

// Viser det aktuelle bibliotek hvor programmet ser efter koordinatsættene
printf("%s\n", getcwd(NULL, 0));

fp = fopen(FILE_NAME, "r");

if(fp == NULL)

{
printf("koordinatsættene.");
exit(EXIT_FAILURE);

}

fscanf(fp, "%lf %lf", &dv, &dv1);
printf("%.3lf %lf", dv, dv1);
fclose(fp);

return EXIT_SUCCESS;

}


Men nu er jeg gået i stå.. jeg aner ikke hvor jeg skal begynde.



85 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Nej det virker nemlig ikke. Programmet kan ikke forstå udtrykket Putstr. Det er da meningen at udtrykket Putstr skal blive mørk i forhold til de andre værdier ik?

Og med hensyn til at bruge Putstr til akse angivelse, får min lærer ikke ret. Jeg beholder nemlig memcpy funktionen til at angive akseværdierne. Og så er jeg ligeglad med hvad min lærer har at sige til det:)
læreren skal jo ikke have ret i ALT.



Du skal putte funktionen PutStr ind i koden, et sted lige inden main.
Jeg ved ikke hvad du mener med "skal blive mørk i forhold til de andre værdier".

Og lærer skal kun have ret, når de har ret.



Kan man gøre det på følgende måde:
Fold kodeboks ind/udKode 





Nej, det kan man ikke, for det kan ikke oversættes.

Hint: Man kan ikke have funktioner inden i andre funktioner (herunder main).



Fold kodeboks ind/udKode 


Mener du funktionen PutStr() skal sættes før int main() ??



Ja, PutStr skal være inden main, flyt denne del op inden main:
Fold kodeboks ind/udKode 


Og slet denne linje:
PutStr ();

Har i slet ikke lært om funktioner på din skole?



Jeg tror jeg skal bruge en funktion der hedder puts istedet for Putstr..Kan det passe??

For jeg har nemlig aldrig lært om Putstr.



PutStr en en funktion vi selv har lavet.
puts er en funktion fra standard biblioteket.

I dit oprindelige indlæg skriver du at programmet skal opbygges med: "fornuftige funktioner til de ting programmet skal gøre". Det fik mig til at tro at du vidste hvad funktioner var...



Okay det virker både med Putstr og Puts. Så går ud fra at det er det samme.

Men på koordinatsystemet for jeg nede på x-aksen følgende ud:
Fold kodeboks ind/udKode 




Ja jeg kender standard bibliotek funktioner såsom gets, atoi, atol, strtol, strtof, strtod osv..

troede nemlig du havde brugt en funktion fra standard biblioteket.



t