Gå til innhold

[Løst]Trenger hjelp med en struct- oppgave


Anbefalte innlegg

Videoannonse
Annonse

Garanterer ikke at den er bug-fri, men tror det virker rimelig greit.

(Uten at jeg har testet noe særlig, men likevel...)

 

Den skal ihvertfall være svært enkel å forstå :)

 

 

 

#include <stdio.h>

struct Length
{
    int m;
    int cm;
    int mm;
};

//    Global variable. Creates three of the struct, as defined in the task.
struct Length LengthArray[2];

void add_length(struct Length *AddedLength)
{
    int i = 0;

    AddedLength->m = 0;
    AddedLength->cm = 0;
    AddedLength->mm = 0;    

    for (i = 0; i < 3; i++)
    {
        AddedLength->cm += LengthArray[i].cm;
        AddedLength->mm += LengthArray[i].mm;
        AddedLength->m += LengthArray[i].m;

        if (AddedLength->mm > 10)
        {
            int Rem = (AddedLength->mm % 10);
            AddedLength->cm += (AddedLength->mm / 10);
            AddedLength->mm = Rem;
        }

        if (AddedLength->cm > 100)
        {
            int Rem = (AddedLength->cm % 100);
            AddedLength->m += (AddedLength->cm / 100);
            AddedLength->cm = Rem;
        }
    }
}

int main()
{
    int i = 0;
    struct Length AddedLength;

    printf("%s", "Please enter the your values.\r\n");
    
    //    Fills the three variables with (user generated) content, as the task specifies.
    for (i = 0; i < 3; i++)
    {
        printf("%s%i%s", "Struct #", i, "\r\nM:  ");
        scanf("%i", &LengthArray[i].m);
        printf("%s", "CM: ");
        scanf("%i", &LengthArray[i].cm);
        printf("%s", "MM: ");
        scanf("%i", &LengthArray[i].mm);
    }

    add_length(&AddedLength);

    printf("%s%i%s%i%s%i%s", "Result: ", AddedLength.m, "m, ", AddedLength.cm, "cm, ", AddedLength.m, "mm\r\n");
    printf("%s%i%c%c%i%i", "Float: ", AddedLength.m, 0x2E, ((AddedLength.cm < 10) ? (0x30) : (0x00)), AddedLength.cm, AddedLength.mm);
 }

 

Endret av ze5400
Lenke til kommentar

Det var lettere ja. :)

 

Hva betyr alle disse: "AddedLength->m = 0;" Altså "->".

 

Denne må du forklare litt: "struct Length LengthArray[2];" Kopierer du den den første på en måte?

 

" printf("%s%i%c%c%i%i", "Float: ", AddedLength.m, 0x2E, ((AddedLength.cm < 10) ? (0x30) : (0x00)), AddedLength.cm, AddedLength.mm);"

 

Hvis det er noe jeg bør vite så skylder jeg på at jeg har sittet på pcen hele dagen nesten... :p

Endret av mx1000
Lenke til kommentar
Det var lettere ja. :)

 

Hva betyr alle disse: "AddedLength->m = 0;" Altså "->".

Vi benytter en peker. Derfor.

 

Denne må du forklare litt: "struct Length LengthArray[2];" Kopierer du den den første på en måte?

Oppretter en array-instans av strukturen, med tre plasser inni. 0,1 og 2.

 

 

 

" printf("%s%i%c%c%i%i", "Float: ", AddedLength.m, 0x2E, ((AddedLength.cm < 10) ? (0x30) : (0x00)), AddedLength.cm, AddedLength.mm);"

Hexadesimalske koder for forskjellige ascii-tegn. 0x2E = ".", 0x30 = "0", 0x00 = NUL.

 

Hvis det er noe jeg bør vite så skylder jeg på at jeg har sittet på pcen hele dagen nesten... :p

Lenke til kommentar

Fordi vi har angitt at vi skal passe som 'char'.

Det er faktisk mye lurere å gjøre slik, istedenfor med char, som jeg gjorde, for min metode setter inn ett whitespace når det ikke skal noe, slik at det ikke er så sweet.

 

Uansett, nå har jeg oppdatert posten min lengre oppe på denne siden med en hvor litt bugs er fikset, b.la. den du nevner.

 

Håper du har fått svar på alt du lurte på :)

Lenke til kommentar

Og problemet var at det var glemt en "m" slik at det ble "m" istendenfor "mm", i den nest siste setningen.

printf("\n%s%i%s%i%s%i%s", "Result: ", AddedLength.m, "m, ", AddedLength.cm, "cm, ", AddedLength.mm, "mm\r\n");

 

Da anser jeg denne oppgaven som løst. Bare skrive en kort rapport og levere.

 

 

Takk for all hjelp her! :D

Endret av mx1000
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...