Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
1

"const char *" нельзя использовать для инициализации сущности типа "char"

30.11.2016, 17:36. Просмотров 2693. Ответов 38
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
/*
Написать программу, которая показывает реальное время в выбранных 
городах мира. Программа должна уметь просчитывать разницу времени для двух
произвольных городов мира, которые выбрал пользователь.
Должна быть на написана  на чистом C (си).
*/
 
 
#include "stdafx.h"
#include <conio.h>
#include < stdio.h >  // Для printf
#include < time.h >   // Для time, ctime
#include <ctime>   
#include <iomanip> 
#include <iostream>
#include <stdlib.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    setlocale(LC_ALL, "Russian");
    char citi[20];
    char citi2[20];
    int hour1, hour2, hour3,i;
 
    time_t rawtime;
    struct tm * ptm;
    time(&rawtime);   // определить текущую дату в секундах
    ptm = gmtime(&rawtime);  // дата и время в формате GMT
 
 
 
    // Переменная для сохранения текущего времени
    long int ttime;
    // Считываем текущее время
    ttime = time(NULL);
    // С помощью функции ctime преобразуем считанное время в
    // локальное, а затем в строку и выводим в консоль.
    printf("Время: %s\n", ctime(&ttime));
 
 
 
    //24 строки города  по 20 символов
    char words[24][20] = {
        //00
        "Исламабад",
        //01
        "Дакка",
        //02
        "Джакарта",
        //03
        "Сингапур",
        / 04
        "Сеул",
        //05
        "Аганья",
        //06
        "Канберра",
        //07
        "Маджуро",
        //08
        "Пагопаго",
        //09
        "Веллингтон",
        //10
        "Анкоридж",
        //11
        "Адамстаун",
        //12
        "Калгари"
        //13
        "Манагуа",
        //14
        "Панама",
        //15
        "Сан-Хуан",
        //16
        "Асунсьон",
        //17
        "Бразилия",
        //18
        "Прая",
        //19
        "Рабат",
        //20
        "Тунис",
        //21
        "Киев",
        //22
        "Москва",
        //23
        "Баку"
    };
    //Вывод массив горов на консоль
    for ( i = 0; i<23; i++)
    {
        printf("Порядковый номер города равен часовому поясу %s\n", words[i]);
    }
    //Введите название города 
    printf("Введите название города  %s\n");
 
    scanf("%s", citi);
 
    printf("Введите название другого города  %s\n");
    scanf("%s", citi2);
    //Поиск в массиве строк
    for (i = 0; i<23; i++)
    {
        if (citi == words[i])
        {
            hour1 = i;
        }
        if (citi2 == words[i])
        {
            hour2 = i;
        }
    }
    //Считаем разницу в часах
    hour3 = abs(hour2 - hour1);
    printf("Разница во времени между обраными городами %d\n", hour3);
 
    //Реальное время для избранных городов
    printf("Реальное время для города  %s\n", citi1);
    printf("%d\n “, (ptm->tm_hour + hour1) % 24, ":", ptm->tm_min;
 
    printf("Реальное время для города  %s\n", citi2);
    printf("%d\n ", (ptm->tm_hour + hour2) % 24, ":", ptm->tm_min);
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2016, 17:36
Ответы с готовыми решениями:

Динамический массив структур - Ошибка "значение int* нельзя использовать для инициализации сущности типа TRGB"
требуется создать динамический массив структур, т.е. он не совсем динамический, просто изначально...

Значение типа "int" нельзя присвоить сущности типа "LISTNODEPTR"
В чём проблема и как починить? struct listNode { char data; struct listNode *nextPtr; };...

Error C2040:strnset_2:"char *(char *,int,unsigned int)" отличается по уровням косвенного обращения от "int ()"
Не могу найти в чём ошибка. error C2040: strnset_2: &quot;char *(char *,int,unsigned int)&quot; отличается...

Переход с 10 на 17 Студию 2440 =: невозможно преобразовать "const char [2] в char*
Доброго Нового года! Через пару дней сдавать контрольную работу, которую сделал ещё вначале...

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

38
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 17:52 2
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
C
1
if (citi == words[i])
Указатели сравниваете? Так они никогда равны в ваше случае не будут.

Добавлено через 2 минуты
В 125 строчка кавычки разные и спецификатор для ":" пропущен.
54 строчка коммент с очепяткой.
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:00  [ТС] 3
Цитата Сообщение от shvyrevvg Посмотреть сообщение
Указатели сравниваете? Так они никогда равны в ваше случае не будут.
words[i] это массив строк,а citi єто строка которую пользователь ввел с клавиатуры,вот ее и ищем в массиве.
Что сделать,что бы заработало?
0
andreyka93
128 / 128 / 157
Регистрация: 11.04.2015
Сообщений: 343
30.11.2016, 18:02 4
так не сравнивают строчные массивы, нужно использовать функцию strcmp,

C
1
2
3
if (citi == words[i]){
неправильно
}
нужно вот так
C
1
2
3
4
5
6
if(0 == strcmp(citi, words[i])){
// равны
}
else{
// неравны
}
следующий вопрос о подключаемых библиотеках, нужно пересмотреть еще раз что нужно а что С++,
и вообще есть ощущение что этот код не запускался, так как тут куча ошибок
0
30.11.2016, 18:02
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:08  [ТС] 5
Не пойму,где поставить закрывающую скобку в строке 125
C
1
    printf("%d\n “, (ptm->tm_hour + hour1) % 24, ":", (ptm->tm_min);
Что не так со строкой?
0
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 18:09 6
C
1
 printf("%d%s%d\n", (ptm->tm_hour + hour1) % 24, ":", (ptm->tm_min));
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:12  [ТС] 7
del
0
Миниатюры
"const char *" нельзя использовать для инициализации сущности типа "char"  
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:14  [ТС] 8
"const char *" нельзя использовать для инициализации сущности типа "char"

вот верный скрин
0
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 18:18 9
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
вот верный скрин
И что же написано в выводе(строчки с error)? Клац в помощь.
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:20  [ТС] 10
Ошибка 1 error C4996: 'gmtime': This function or variable may be unsafe. Consider using gmtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\users\sergey\documents\visual studio 2013\projects\timeconvertor\timeconvertor\timeconvertor.cpp 29 1 timeconvertor

Предупреждение 2 warning C4244: =: преобразование "time_t" в "long", возможна потеря данных c:\users\sergey\documents\visual studio 2013\projects\timeconvertor\timeconvertor\timeconvertor.cpp 36 1 timeconvertor

Ошибка 3 error C2664: "char *ctime(const time_t *)": невозможно преобразовать аргумент 1 из "long *" в "const time_t *" c:\users\sergey\documents\visual studio 2013\projects\timeconvertor\timeconvertor\timeconvertor.cpp 39 1 timeconvertor

4 IntelliSense: аргумент типа "long *" несовместим с параметром типа "const time_t *" c:\Users\sergey\Documents\Visual Studio 2013\Projects\timeconvertor\timeconvertor\timeconvertor.cpp 39 30 timeconvertor
0
andreyka93
128 / 128 / 157
Регистрация: 11.04.2015
Сообщений: 343
30.11.2016, 18:20 11
вот так решается первая проблема
http://stackoverflow.com/questions/1...default-in-vis

и советую почитать что это за ошибка чтобы при следующих созданиях проектов убирать галочку
0
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 18:24 12
scherbakovss201, ну Вам пишут что используете небезопасную функцию. Замените на безопасную gmtime_s или напишите перед инклудами #define _CRT_SECURE_NO_WARNINGS
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:26  [ТС] 13
Цитата Сообщение от andreyka93 Посмотреть сообщение
вот так решается первая проблема
http://stackoverflow.com/questions/1...default-in-vis
_CRT_SECURE_NO_WARNINGS
ПРОБЛЕМА РЕШИЛАСЬ

Добавлено через 1 минуту
Цитата Сообщение от shvyrevvg Посмотреть сообщение
scherbakovss201, ну Вам пишут что используете небезопасную функцию. Замените на безопасную gmtime_s
или напишите перед инклудами #define _CRT_SECURE_NO_WARNINGS
Мне же по условию нужно на Си,а не ЦПП
0
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 18:26 14
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Ошибка 3 error C2664: "char *ctime(const time_t *)": невозможно преобразовать аргумент 1 из "long *" в "const time_t *" c:\users\sergey\documents\visual studio 2013\projects\timeconvertor\timeconvertor\timeconvertor.cpp 39 1 timeconvertor
Функция принимает аргумент типа time_t*, а Вы ей long* суёте.
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:30  [ТС] 15
C
1
    printf("Время: %s\n", ctime(&rawtime));
компиляция запустилась,проверяем правильность работы по условию
0
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 18:32 16
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Мне же по условию нужно на Си,а не ЦПП
А что gmtime_s в си нет?
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:35  [ТС] 17
C
1
2
3
4
5
6
//Вывод массив горов на консоль
    printf("Порядковый номер города равен часовому поясу %s\n");
    for ( i = 0; i<23; i++)
    {
        printf(" %s%d\n",i, words[i]);
    }
Мне нужно что бы список городов был нумеровальный,а у меня вылетает исключение
0
shvyrevvg
811 / 597 / 304
Регистрация: 12.05.2016
Сообщений: 1,738
30.11.2016, 18:39 18
Цитата Сообщение от scherbakovss201 Посмотреть сообщение
Мне нужно что бы список городов был нумеровальный,а у меня вылетает исключение
Вы знаете как printf() использовать? Что такое %s, %d ??
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:42  [ТС] 19
%s строки
%d десятичные числа

Добавлено через 1 минуту
C
1
printf(" %d %s\n", i, words[i]);
О список нумерованный вывелся
0
inquisitor
16 / 7 / 17
Регистрация: 22.12.2015
Сообщений: 1,914
30.11.2016, 18:45  [ТС] 20
фигня вывелась,а не разница во времени
"const char *" нельзя использовать для инициализации сущности типа "char"
0
30.11.2016, 18:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2016, 18:45

Const char нельзя присвоить сущность типа char
Здравствуйте! Начинаю изучать Си И вот у меня немного не получается написать свою первую...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru