3 svar
160 visningar
Chimmy är nöjd med hjälpen
Chimmy 2 – Fd. Medlem
Postad: 19 sep 2021 19:44 Redigerad: 19 sep 2021 21:58

Skapa en alarm klocka

Hej jag behöver hjälp med att skapa en alarm klocka i programmeringsspråket C. Användaren ska ange vad klockan är och även vid vilken tid alarmet ska vara. Det ska räknas upp från den nuvarande tiden till alarmet, men istället för att skriva ut alarmtiden ska det istället skrivas ut ALARM. Jag har kommit en bit (se nedan) men jag vet inte hur jag ska komma vidare. Tacksam för svar  :))

 

#include <stdio.h>

int present_time, time_for_alarm; 
int hours_present,min_present,sec_present;
int hours_alarm, min_alarm, sec_alarm;

void clock_();
int update_time();
void convert_into_parts();

int main()
{
     clock_();
     update_time();
     convert_into_parts();
     return 0;
}

void clock_()
{
     printf("What time is it?(HHMMSS): ");
     scanf("%d", &present_time);

    printf("When do you want your alarm?(HHMMSS): ");
    scanf("%d", &time_for_alarm);

    update_time();
}

void convert_into_parts(time_for_alarm, present_time)
{
      hours_present = present_time/10000;
      min_present = (present_time/100)% 100; /* jag delar upp nuvarande tiden till timmar, sekunder och minuter*/
      sec_present = (present_time % 100);

      hours_alarm = time_for_alarm/10000;
      min_alarm = (time_for_alarm/100) % 100; /* jag delar upp alarm tiden till timmar, sekunder och minuter*/
       sec_alarm = (time_for_alarm % 100);
}

int update_time()
      {
              while (hours_present!=hours_alarm){
               if (hours_present==hours_alarm && min_present == min_alarm && sec_present==sec_alarm){
                    printf("ALARM");
                }
                else {
                      if (sec_present<=60){
                           sec_present++;
                           if (sec_present==60){
                                sec_present = 0;
                                min_present++;
                           }
                           if (min_present == 60){
                               min_present=0;
                               hours_present++;
                           }
                           if (hours_present==24){
                                 hours_present = 0;
                           }
                    }
             }

       }
}

 

Laguna Online 28543
Postad: 20 sep 2021 08:55

Ska du köra update_time innan du har gjort convert_into_parts?

Jag förstår inte helt vad programmet ska göra. Ska det bry sig om den verkliga tiden, eller bara låtsas? Ska det skriva ut någonting medan tiden går, innan det säger ALARM?

if (sec_present<=60){ ska nog vara if (sec_present<60){ annars kommer du att få sec_present till 61.

Lindehaven 820 – Lärare
Postad: 20 sep 2021 09:19

Din main() behöver anropa funktionerna i en mer logisk ordning. 1) ta in tidssträngar från användaren, 2) gör om tidssträngarna till hhmmss, och 3) låt tiden gå tills dags för alarm.

int main()
{
    clock_();              /* 1) */
    convert_into_parts();  /* 2) */
    update_time();         /* 3) */
    return 0;
}

Anropet till update_time() i clock_() behöver tas bort eftersom konverteringen till hhmmss ännu inte genomförts.

När slutligen update_time() anropats så behöver den funktionen uppdatera klockan tills dess både timmar, minuter och sekunder överensstämmer med alarmtiden. I din kod pågår den endast tills dess klocktimmen och alarmtimmen överensstämmer.

(och klockan kommer ju att gå väldigt fort)

Chimmy 2 – Fd. Medlem
Postad: 20 sep 2021 12:32

Tack så mycket för svar :))

Svara Avbryt
Close