Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
#1

Преобразование значения переменной (long) через функцию в значения структуры - C++

09.12.2012, 00:55. Просмотров 515. Ответов 6
Метки нет (Все метки)

Я недавно начал заниматься С++ и программированием в целом.
Вот у меня такая проблема.

В этой программе не работает часть, когда вводишь кол-во секунд, а с помощью функции time secs_to_time(long ss) оно должно преобразовать секунды в структуру TIME с соответствующими значениями d2.hours, d2.minutes, d2.seconds

В Процедуре time secs_to_time(long ss) выдает 3 ошибки (мол не хватает точек с запятой), но не могу понять где ошибка... Везде где надо стоят.... В чем ошибка ?


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
#include <iostream>
using namespace std;
////////////////////
struct time
{
int hours;
int minutes;
int seconds;
};
 
long time_to_secs(time);
time secs_to_time(long);
 
////////////////////    
int main()
{
    time d1;
    char ch;
    long seconds;
            cout<<"Vvedite vremya v formate H:MM:SS\n";
            cin>>d1.hours>>ch>>d1.minutes>>ch>>d1.seconds;
        time_to_secs(d1);
            cout<<"\nVvedite kolvo secund: "<<endl;
            cin>>seconds;
        secs_to_time(seconds);
    system("pause");
    return 0;
};
 
 
////////////////////
long time_to_secs(time dd)
{
    long temp;
    temp=3600*dd.hours+60*dd.minutes+dd.seconds;
    cout<<temp<<endl;
    return 0;
};
 
////////////////////
///////////////////     В этой функции ошибки
 
time secs_to_time(long ss)
{
    time d2;
    while (ss>=3600)
    {
    ss:=ss-3600;
    d2.hours++;
    };
    while (ss>=60)
    {
    ss:=ss-60;
    d2.minutes++;
    };
 
    d2.seconds:=ss;
    cout<<d2.hours<<" chasov"<<d2.minutes<<" minut"<<d2.seconds<<" secund";
    return d2;
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 00:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование значения переменной (long) через функцию в значения структуры (C++):

Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s[]) ) и тестирующую - C++
Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s) ) и...

Передача значения из поля структуры в функцию - C++
Здравствуйте, у меня возникла проблема - у меня есть структура: struct game { char name_horse; char name_human; int...

Передача значения переменной-члена из класса в функцию - C++
Добрый день, имеется класс: class ZernPole{ public: ZernPole(int Zerno) { zpZerno=Zerno;...

Присвоение значения переменной класса через конструктор - C++
#include &lt;iostream&gt; using namespace std; class Help { int userID; public: Help(int id) {int userID = id;} ~Help()...

Написать функцию PrnStruct() с одним параметром типа TMyStruct, выводящую на печать значения полей структуры. - C++
Разработать тип данных TMyStruct– структуру, содержащую поля различных типов. В функции main() описать переменную данного типа TMyStruct,...

Преобразование массива char в массив long long - C++
Имеется большой массив char, в котором содержатся числа. Нужно максимально быстро извлечь их и записать в массив чисел long long. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
09.12.2012, 00:58 #2
Цитата Сообщение от soa432 Посмотреть сообщение
ss:=ss-3600;
Вы же не на делфи пишете?
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
09.12.2012, 01:00  [ТС] #3
Пишу в Visual Studio 6.0
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
09.12.2012, 01:56 #4
C++
1
2
3
4
5
6
7
8
9
10
void sec_to_time(long ss)
{
    long sec, minute, hour;
 
    sec = ss % 60;
    minute = (ss / 60) % 60;
    hour = ss / 60 / 60;
 
    std::cout << hour << ':' << minute << ':' << sec << '\n';
}
Добавлено через 1 минуту
вообще-то time определена в ctime как функция.
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
09.12.2012, 02:06  [ТС] #5
Нашел сам ошибку, но все равно спасибо тем, кто отозвался)
Вот исправленный код программы
Когда создается структура, ее переменные (Long) принимали значения -87+++++++ это первая ошибка.
Нужно было обнулить значения d2.hours,d2.minutes,d2.seconds
И к тому же перепутал синтаксис с Паскалем... Использовал знак присвоить ":=" вместо "="


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
#include <iostream>
using namespace std;
////////////////////
struct time
{
int hours;
int minutes;
int seconds;
};
 
long time_to_secs(time);
time secs_to_time(long);
 
////////////////////
 
int main()
{
    time d1;
    char ch;
    long seconds;
            cout<<"Vvedite vremya v formate H:MM:SS\n";
            cin>>d1.hours>>ch>>d1.minutes>>ch>>d1.seconds;
        time_to_secs(d1);
            cout<<"\nVvedite kolvo secund: "<<endl;
            cin>>seconds;
        secs_to_time(seconds);
    system("pause");
    return 0;
};
 
 
////////////////////
long time_to_secs(time dd)
{
    long temp;
    temp=3600*dd.hours+60*dd.minutes+dd.seconds;
    cout<<temp<<endl;
    return 0;
};
 
////////////////////
 
time secs_to_time(long ss)
{
    time d2;
    d2.hours=0;
    d2.minutes=0;
    d2.seconds=0;
    while (ss>=3600)
    {
        ss=ss-3600;
        d2.hours++;
    };
    while (ss>=60)
    {
        ss=ss-60;
        d2.minutes++;
    };
    d2.seconds=ss;
    cout<<d2.hours<<":"<<d2.minutes<<":"<<d2.seconds<<endl;
    return d2;
};
activnaya
255 / 45 / 2
Регистрация: 24.11.2012
Сообщений: 466
09.12.2012, 02:14 #6
soa432, все таки взгляни на предложенный вариант. Получше будет. Еще ознакомься с Сишкой, в частности ctime.
soa432
0 / 0 / 0
Регистрация: 09.12.2012
Сообщений: 18
09.12.2012, 14:08  [ТС] #7
Я ознакомился, просто по условию задачи, надо тип данных Long (В которых вводится кол-во секунд), перевести с помощью функции в структурные данные. (d.hours,d.minutes,d.seconds)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 14:08
Привет! Вот еще темы с ответами:

Обработать превышение максимально возможного значения long - C++
Как с помощью C++ exception я могу обработать, к примеру, следующее? long pp = 2147483647; pp = pp + 1;

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

Написать функцию, которая принимает два параметра типа unsigned long long и выводит их на экран - C++
Я самое наглое , ленивое и бессовестное чудовище)) но тем не менее Напишите функцию, которая принимает два параметра типа unsigned...

Вычислить значения функции F на интервале от начального значения до конечного значения - C++
Написать консольное приложение на С++ Перепечатайте пожалуйста текст задания на форум.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.12.2012, 14:08
Ответ Создать тему
Опции темы

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