Gå til innhold

Oblig 3 på skolen, ganske ny i C..


Anbefalte innlegg

Hei! Jeg er ganske så ny innen programmering, i dag har vi akkurat fått en ny oblig som skal leveres om noen uker.

 

http://www.ansatt.hig.no/frodeh/grprog/obliger/oblig_3.pdf

 

Oppgaven går i korthet ut på å lage et program som håndterer (leser inn/endrer) to ulike

klokkeslett, finner ut hvilket som er først (evt. at de er like) og regner ut tidsforskjellen på dem.

Dette gjentar seg så lenge brukeren ønsker det.

 

Vi blir alltid anbefalt til å lage pseudokode til oppgaven for våres egendel, på de første obligene gjorde ikke jeg det, men tenkte å starte med det framover.. Noen som kan hjelpe meg på vei her.. både med pseudokode og programmeringen, vet stortsett hvilke elementer jeg må ha med i koden men litt klundring blir det vel siden jeg ikke har programmert noe særlig!

Lenke til kommentar
Videoannonse
Annonse

Pseudokode er forsåvidt greit. Det er forskjellige måter å gjøre det på, men jeg synes det er ryddigst å lese om du organiserer det som noen få linjer først som gjør det du ønsker å oppnå, og så utdyper du funksjonene dine etterpå. Vær detaljert nok til at det dekker all logikken, men ikke nødvendigvis de tekniske detaljene (si at du skriver ut noe, men ikke gå i detalj om hvordan printf fungerer).

 

Hvis du først lapper sammen et forslag på pseudokode, så kan vi sikkert se om det ser noenlunde logisk ut?

Endret av Djn
Lenke til kommentar

Hei Oslenface, Aldri glem at en C++-kode kun gjør en ting av gangen. Skriv pseudokoden som om du skulle gjort det selv, bare med en ting av gangen.

Se på eksemplene til Frode, Studér dem. Gjerne et eksempel om dagen. Da får du også vite hvordan Frode tenker. Og Frode hjelper så klart hvis du har et spesielt spørsmål. Fagassene er også veldig villig til å hjelpe, da de får betalt og trenger penger.

 

Mvh medelev!

Lenke til kommentar

Godt å vite at det ikke er bare jeg som sliter med denne oppgaven;) Anbefaler å bruke Frode, fagassene og andre medelever, men også husk at det står en god del i eksemplet på ukeoppgave 17. Selv får jeg ikke fått ut de nåværende data ut på skjermen(søppeltallene), så tar gjerne imot tips :D

olsenface bare si ifra hvis det er noe du lurer på, så kansje vi kan hjelpe hverandre lit!

hilsen medstudent:D

Lenke til kommentar

F.eks. slik:

 

#include <stdio.h>
struct klokkeslett {
 int h;
 int m;
 int s;
};
void skrivTid(struct klokkeslett tid, const char* navn) {
 printf("%s er: %02d:%02d:%02d\n", navn, tid.h, tid.m, tid.s);
}
int main(int argc, char *argv[]) {
 struct klokkeslett tid1, tid2;
 skrivTid(tid1, "Tid nr. 1");
 skrivTid(tid2, "Tid nr. 2");
}

Lenke til kommentar

F.eks. slik:

 

#include <stdio.h>
struct klokkeslett {
 int h;
 int m;
 int s;
};
void skrivTid(struct klokkeslett tid, const char* navn) {
 printf("%s er: %02d:%02d:%02d\n", navn, tid.h, tid.m, tid.s);
}
int main(int argc, char *argv[]) {
 struct klokkeslett tid1, tid2;
 skrivTid(tid1, "Tid nr. 1");
 skrivTid(tid2, "Tid nr. 2");
}

 

Veldig skeptisk på at Olsenface kan levere det slik. Vi bruker foreløpig C og ikke C++, fagassene går andreåret programmering, og programmeringen din stemmer ikke med obligen.

 

Har gjort obligen ferdig i dag, kom på 100 linjer etter pynting. Jeg tror Olsenface heller må gjøre det slik jeg har beskrevet tidlgere.

Lenke til kommentar

F.eks. slik:

 

#include <stdio.h>
struct klokkeslett {
 int h;
 int m;
 int s;
};
void skrivTid(struct klokkeslett tid, const char* navn) {
 printf("%s er: %02d:%02d:%02d\n", navn, tid.h, tid.m, tid.s);
}
int main(int argc, char *argv[]) {
 struct klokkeslett tid1, tid2;
 skrivTid(tid1, "Tid nr. 1");
 skrivTid(tid2, "Tid nr. 2");
}

 

Veldig skeptisk på at Olsenface kan levere det slik. Vi bruker foreløpig C og ikke C++, fagassene går andreåret programmering, og programmeringen din stemmer ikke med obligen.

 

Har gjort obligen ferdig i dag, kom på 100 linjer etter pynting. Jeg tror Olsenface heller må gjøre det slik jeg har beskrevet tidlgere.

 

Innlegget mitt var ment som tips til han solo (innlegg #6), ikke noe mer enn det. Det blir nok fort minst 100 kodelinjer (ukommentert) for en fullstendig løsning av oppgaven.

 

Her er et forslag til hvordan main()-metoden kan se ut, en implementering av de funksjonene som brukes her vil kreve noen kodelinjer:

 

int main(int argc, char *argv[]) {
 time_t time1, time2;

 do {
   printf("\n");
   printTime(time1, "Time 1");
   if (!time_valid(time1) || boolUserResponse("  Change time", FALSE)) {
     changeTime(&time1);
   }
   printTime(time2, "Time 2");
   if (!time_valid(time2) || boolUserResponse("  Change time", FALSE)) {
     changeTime(&time2);
   }

   if (time_equals(time1, time2)) {
     printf("\nTime 1 and 2 are equal\n");
   }
   else {
     if (time_lessThan(time1, time2)) {
       printf("\nTime 1 is less than time 2\n");
     }
     else {
       printf("\nTime 2 is less than time 1\n");
     }
     printTime(time_diff(time1, time2), "Difference");
   }
 } while (boolUserResponse("\nOnce more", TRUE));

 return 0;
}

Endret av jonny
Lenke til kommentar

F.eks. slik:

 

#include <stdio.h>
struct klokkeslett {
 int h;
 int m;
 int s;
};
void skrivTid(struct klokkeslett tid, const char* navn) {
 printf("%s er: %02d:%02d:%02d\n", navn, tid.h, tid.m, tid.s);
}
int main(int argc, char *argv[]) {
 struct klokkeslett tid1, tid2;
 skrivTid(tid1, "Tid nr. 1");
 skrivTid(tid2, "Tid nr. 2");
}

 

Veldig skeptisk på at Olsenface kan levere det slik. Vi bruker foreløpig C og ikke C++, fagassene går andreåret programmering, og programmeringen din stemmer ikke med obligen.

 

Har gjort obligen ferdig i dag, kom på 100 linjer etter pynting. Jeg tror Olsenface heller må gjøre det slik jeg har beskrevet tidlgere.

 

Det at fagassene går "andreåret programmering" (faget er Algoritmiskemetoder) har ikke noe å gjøre med saken vell? hehe. Dere bruker ikke "foreløpig C" for å så "hoppe over til C++", hver gang du bruker cout eller cin, så oi oi oi, bruker du C++. Forresten, koden hadde sett så mye bedre ut slik (for det er jo C++ man lærer, prøv å lever den koden der til Frode, han kommer til å få et par grøssninger).

 

#include <iostream>

struct klokkeslett {
 unsigned int h;
 unsigned int m;
 unsigned int s;
};

void skrivTid(klokkeslett tid, const char* navn) {
 std::cout << navn << " er: " << tid.h << ":" << tid.m << ":" << tid.s << '\n';
}

int main() {
 klokkeslett tid1, tid2;    // Trenger ikke å si at det er en struct når du deklarerer
 skrivTid(tid1, "Tid nr. 1"); // Men de har jo ikke plitt initialisert, så woop woop, no display for you
 skrivTid(tid2, "Tid nr. 2");
 return 0;   // ikke glem, ikke glem
}

Lenke til kommentar

...

Det at fagassene går "andreåret programmering" (faget er Algoritmiskemetoder) har ikke noe å gjøre med saken vell? hehe. Dere bruker ikke "foreløpig C" for å så "hoppe over til C++", hver gang du bruker cout eller cin, så oi oi oi, bruker du C++. Forresten, koden hadde sett så mye bedre ut slik (for det er jo C++ man lærer, prøv å lever den koden der til Frode, han kommer til å få et par grøssninger).

...

 

Beklager, jeg var av den oppfatning at det var snakk om C-kode (noe emnetittelen gir inntrykk av).

Lenke til kommentar

Det at fagassene går "andreåret programmering" (faget er Algoritmiskemetoder) har ikke noe å gjøre med saken vell? hehe. Dere bruker ikke "foreløpig C" for å så "hoppe over til C++", hver gang du bruker cout eller cin, så oi oi oi, bruker du C++. Forresten, koden hadde sett så mye bedre ut slik (for det er jo C++ man lærer, prøv å lever den koden der til Frode, han kommer til å få et par grøssninger).

 

Tjah, det er da gyldig C++ også - om ikke idiomatisk. ;)

(Og det er da ingen grunn til å plage seg selv med iostream og << - operatoren bare fordi det er C++. )

Lenke til kommentar

Det er jo ganske digg med << operatoren og iostream, i min mening. Ta f.eks det å overloade den til å ta i mot egenlagde datastrukturer.

std::cout << (*tree); // Hvor variablen "tree" er en peker til et f.eks binært-søke tre

Endret av Valkyrex
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...