1 Востаннє редагувалося barni (08.06.2018 08:46:49)

Тема: Часовий пояс

Підкажіть будь ласка, як зробити щоб після введеня (1-23) можна було вибрати чи продовжити роботу з програмкою чи завершити.

#include <stdio.h>
#include <time.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
    setlocale(LC_CTYPE, "rus");
    time_t rawtime;
    struct tm * time_num;
    time(&rawtime);
    time_num = localtime(&rawtime);
    
    struct time_zon
    {
        char zone_name[50];
        int time_i;
    };
    
    struct time_zon time_zon[24];
    char zone_name_string[] = "!Нiуе, Самоа !-13 !Гаваї !-12 !Аляска !-11 !Пiвнiчноамериканськи тихоокеанський час !-10 !Гiрський час(США, Канада i Мексика) !-9 !Центральний час !-8 !Пiвнiчноамериканський схiдний час !-7 !Атлантичний час !-6 !Пiвденноамериканський захiдний час (Бразилiа, Буенос-Айрес, Джорджтаун), Ґренландiя !-5 !Середньоатлантичний час !-4 !Азорськi острови, Кабо-Верде !-3 !Захiдноєвропейський час (Дублiн, Единбург, Лiсабон, Лондон), Касабланка, Монровiя !-2 !Центральноєвропейський час !-1 !Схiдноєвропейський час (Україна, Калiнiнградський час Росiї) !+0 !Росiя (Москва) !+1 !Грузiя, Об'єднанi Арабськi Емiрати !+2 !Єкатеринбурзький час Росiї !+3 !Росiя (Омськ) !+4 !Красноярський час Росiї, Австралiя (Захiдна Австралiя) !+5 !Iркутський час Росiї !+6 !Якутський час Росiї, Пiвденна Корея, Японiя !+7 !Росiя (Владивосток) !+8 !Середньоколимський час Росiї, Центрально-тихоокеанський час !+9 !";
    int j = 0, z, k, i;
    
    for (i = 1; i < 24; i++) {
        char zone[50];
        char time_i_str[3];
        j++;
        z = 0;
        do
        {    
            zone[z] = zone_name_string[j];
            z++;
            j++;
        }
        while (zone_name_string[j] != '!');
        j++;
        k = 0;
        do
        {
            time_i_str[k] = zone_name_string[j];
            k++;
            j++;
        }
        while (zone_name_string[j] != '!');
        memcpy(time_zon[i].zone_name, zone, z);
        time_zon[i].zone_name[z-1] = 0;
        time_zon[i].time_i = atoi(time_i_str);
    }
    
    int num, timep_hour;
    printf("Поточний час у вашому часовому поясi: %d:%d:%d", time_num->tm_hour, time_num->tm_min, time_num->tm_sec);
    printf("\n");
    printf("\nВведiть номер часового поясу iз списку нижче:\n01. UTC-11:00 Нiуе, Самоа\n02. UTC-10:00 Гаваї\n03. UTC-9:00 Аляска\n04. UTC-8:00 Пiвнiчноамериканський тихоокеанський час\n05. UTC-7:00 Гiрський час(США, Канада i Мексика)\n06. UTC-6:00 Центральний час\n07. UTC-5:00 Пiвнiчноамериканський схiдний час\n08. UTC-4:00 Атлантичний час\n09. UTC-3:00 Пiвденноамериканський захiдний час (Бразилiа, Буенос-Айрес, Джорджтаун)\n10. UTC-2:00 Середньоатлантичний час\n11. UTC-1:00 Азорськi острови, Кабо-Верде\n12. UTC+00:00 Захiдноєвропейський час (Дублiн, Единбург, Лiсабон, Лондон), Касабланка, Монровiя\n13. UTC+1:00 Центральноєвропейський час\n14. UTC+2:00 Схiдноєвропейський час (Україна, Калiнiнградський час Росiї)\n15. UTC+3:00 Росiя (Москва)\n16. UTC+4:00 Грузiя, Об'єднанi Арабськi Емiрати\n17. UTC+5:00 Єкатеринбурзький час Росiї\n18. UTC+6:00 Росiя (Омськ)\n19. UTC+7:00 Красноярський час Росiї, Австралiя (Захiдна Австралiя)\n20. UTC+8:00 Iркутський час Росiї\n21. UTC+9:00 Якутський час Росiї, Пiвденна Корея, Японiя\n22. UTC+10:00 Росiя (Владивосток)\n23. UTC+11:00 Середньоколимський час Росiї, Центрально-тихоокеанський час ");
    povt:printf("\nВведiть номер: ");
    scanf("%d", &num);
    printf("\n");
    
    if (num > 23 || num < 1) {
        printf("\nВведено неправильне значення.");
        goto END;
    }
    
    time(&rawtime);
    time_num = localtime(&rawtime);
    timep_hour = 0;
    
    if (time_zon[num].time_i == 0) {
        printf("Поточний час у часовому поясi %s: %d:%d:%d\n", time_zon[num].zone_name, time_num->tm_hour, time_num->tm_min, time_num->tm_sec);
        goto END;
    }
    

    timep_hour = time_num->tm_hour + time_zon[num].time_i;
    if (timep_hour == 24) timep_hour = 0;
    printf("Поточний час у часовому поясi %s: %d:%d:%d\n", time_zon[num].zone_name, timep_hour, time_num->tm_min, time_num->tm_sec);
    printf("\n");
{
    

END:
    getch();getch();
    goto povt;
    

    return 0;
}
}

2

Re: Часовий пояс

Цікаво чим ви копіювали текст, і чи самі бачили що скопіювали?

Подякували: Юра_Максименко1

3

Re: Часовий пояс

Робіть цикл, наприклад (псевдокодом)

while(true)
{
    спитати_значення
    if(значення_правильне){
        break;
    }
    спитати_чи закінчувати
    if(закінчувати){
        ваш улюблений goto END:
    }
}

А взагалі вивчіть функції. Це вам дуже стане в нагоді.

Подякували: barni1