Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.68
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
#1

Работа со структурами - C++

07.06.2011, 21:00. Просмотров 6066. Ответов 30
Метки нет (Все метки)

Имеется вот такая задача:

Файл, содержащий даты. Каждая дата - это структура,
помещенная в отдельную запись. Состав структуры:

struct date{
short число;
char месяц[15];
short год;
struct{
short часы;
short минуты;
};
}

Составить программу, создающую такой файл.
Составить программу, которая:
* выводит на экран все даты, попадающие в указанный с клавиатуры
интервал (если время не задано, то оно игнорируется);
* выводит самую раннюю дату


Есть ли у кого нибудь пример похожей рабочей программы?
Я не могу понять, как создать неограниченное количество этих структур и как организовать запись этих структур в файл.

Добавлено через 16 минут
Помогите, пожалуйста, очень срочно нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2011, 21:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа со структурами (C++):

Работа со структурами - C++
У меня есть структура, содержащая фамилии учеников и их оценки по 3 предметам. Как мне посчитать средний балл каждого студента и вывести...

Работа со структурами - C++
Ввести в компьютер информацию о сотрудниках : фамилия,имя,возраст. Напечатать имена сотрудников,у которых возраст больше 28 лет

Работа со структурами - C++
1. Надо обьявить тип структура с полями базовых типов, указателей и массивов 2. Создать и инициализировать переменную типа структура ...

Работа со структурами - C++
Сделать программу, которая позволяет создать файл, просмотреть, дополнить и удалить данные с файла, который имеет информацию про багаж...

Работа со структурами - C++
Помогите написать программу подобного рода: Работа со структурами. Программа должна содержать функции, необходимые для выполнения...

Работа со структурами - C++
#include<iostream.h> #include<math.h> struct List { float fi,r,z; int n; }; void vvod (List &, int); void vivod (List...

30
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,023
07.06.2011, 21:05 #2
Цитата Сообщение от cx5xclxxl9 Посмотреть сообщение
Я не могу понять, как создать неограниченное количество этих структур
Можно например сделать массив или список структур Умеешь такое? На форуме много таких тем

А потом путем доступа к элементам списка и доступа элементам структуры сравнивать нужные параметры
1
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
07.06.2011, 21:15  [ТС] #3
Ты имеешь ввиду вот такой массив структур?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
struct key {
    char *word;
    int count;
} keytab[] = {
    "auto", 0,
    "break", 0,
    "case", 0,
    "char", 0,
    "const", 0,
    "continue", 0,
    "default", 0,
    /*...*/
    "unsigned", 0,
    "void", 0,
    "volatile", 0,
    "while", 0
};
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,023
07.06.2011, 21:52 #4
С массивами я не работала, так что точно не могу сказать

Попробуй так (это список)

C++
1
2
3
4
5
struct list{
stract data
{.....}
list *next; //указатель на следующий элемент списка
}
0
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
07.06.2011, 21:56  [ТС] #5
Цитата Сообщение от marina2 Посмотреть сообщение
{.....}
А в это место что нужно вставлять?
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,023
07.06.2011, 22:03 #6
http://www.cyberforum.ru/cpp-beginne...ead312778.html
Посмотри это, может получится?

Добавлено через 4 минуты
Цитата Сообщение от cx5xclxxl9 Посмотреть сообщение
А в это место что нужно вставлять?
Так это же твоя структура)

Ты понял насчет массива, как его создавать?
0
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
07.06.2011, 22:26  [ТС] #7
Ага, сейчас попробую написать
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,023
07.06.2011, 23:02 #8
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
#include <stdio.h>
#include <conio.h>  //ne rabotaet clrscr
#include <iostream>
using namespace std;
 
void function1();
struct date{
int ch;
char m[15];
int y;
struct time{
int cl;
int min;} t;
};
 
void main (void)
{
int menu=0;
 
        vozvrat:
        while (menu!=6)
        {
        printf("_____________________________________________________________\n");
        printf("____________________Abonenti ATS_____________________________\n");
        printf("_____________________________________________________________\n");
        printf("Vibirite odin iz variantov:\n");
        printf("1 - Zagruzit' mnogestvo iz tekstovogo faila(ini)\n");
        printf("2 - Prosmotr vsex elementov massiva\n");
        printf("3 - Dobavlenie novix elementov v konec massiva iz zad. faila\n");
        printf("4 - Udalenie elementov massiva\n");
        printf("5 - Sohranenie massiva v zadannom formate\n");
        printf("6 - Vixod iz programmi\n");
        printf("-------------------------------------------------------------\n");
        scanf("%d", &menu);
 
        switch (menu){
                case 1: goto menu1;
 
                }
        menu1:
                {
                // function1(); //Obyavlenie funkcii
                function1();            //vizov funkcii
                }
                goto vozvrat;
                }
//return 0; /*pokazivaet chto programma uspesno zavershena*/
}
 
 
//////////*opisanie funkcii zagruzki massiva*/
void function1()
{
FILE *f1;    /*sozdaem ukazatel na peremennyu tipa fail*/
 
 date mas_str[20];
int i,n;
 
 
cout<<("kol-vo elem");
cin>>n;
for (i=0;i<n;i++)
        {
        cout<<"chislo";
        cin>>mas_str[i].ch;
                cout<<"/nMesyac:";
                cin>>mas_str[i].m;
                cout<<"/nGod:";
                cin>>mas_str[i].y;
                cout<<"/nChas:";
                cin>>mas_str[i].t.cl;
                cout<<"/nCMinut:";
                cin>>mas_str[i].t.min;
 
      
 }
}
Добавлено через 1 минуту
Что-то наподобие такого должно получится
0
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
07.06.2011, 23:09  [ТС] #9
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
// 4.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
using namespace std;
#define cyrOut(_string_) CharToOem(_string_,szStr);\
cout << szStr
char szStr[512];
 
#define N 20
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    struct date {
              short chislo;
              char mes[15];
              short god;
              struct vremya {
                short chasy;
                short minuty;
              };
 
           };
 
    struct date mas_date[N];
    struct date.vremya mas_time[N];
 
    
    for (int i=0;i<N;i++)
    {
        cyrOut("Введите число: ");
        scanf("%d",mas_date[i].chislo);
        cyrOut("Введите месяц (например: Февраль) : ");
        scanf("%c",mas_date[i].mes);
        cyrOut("Введите год: ");
        scanf("%d",mas_date[i].god);
        cyrOut("Введите время (часы): ");
        scanf("%d",mas_time[i].chasy);
        cyrOut("Введите время (минуты): ");
        scanf("%d",mas_time[i].minuty);
    }
           
 
 
 
 
 
 
 
    return 0;
}
Почему-то ругается на 32 строчку

Добавлено через 2 минуты
Цитата Сообщение от marina2 Посмотреть сообщение
Что-то наподобие такого должно получится
Спасибо, у меня приблизительно так и есть

Добавлено через 2 минуты
Понял почему ругается.
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,023
07.06.2011, 23:11 #10
Цитата Сообщение от cx5xclxxl9 Посмотреть сообщение
struct date mas_date[N];
struct date.vremya mas_time[N];
Мне кажется, это можно в одном массиве создать
0
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
07.06.2011, 23:55  [ТС] #11
Цитата Сообщение от marina2 Посмотреть сообщение
Мне кажется, это можно в одном массиве создать
Ага, видимо, так и нужно было сделать

Добавлено через 37 минут
А каким способом эту структуру можно записать в файл? А то у меня что-то не выходит

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
#include <fstream>
#include "stdafx.h"
#include <conio.h>
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
 
#define cyrOut(_string_) CharToOem(_string_,szStr);\
cout << szStr
char szStr[512];
 
#define N 2
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    struct date {
              short chislo;
              char mes[15];
              short god;
              struct vremya {
                short chasy;
                short minuty;
              } t;
 
           };
 
    struct date mas_date[N];
    
 
    
    for (int i=0;i<N;i++)
    {
        cyrOut("\n\n*** Дата ");cout<<i+1<<" ***\n\n";
        cyrOut("Введите число: \n");
        cin>>mas_date[i].chislo;
        cyrOut("Введите месяц (например: Февраль) : \n");
        cin>>mas_date[i].mes;
        cyrOut("Введите год: \n");
        cin>>mas_date[i].god;
        cyrOut("Введите время (часы): \n");
        cin>>mas_date[i].t.chasy;
        cyrOut("Введите время (минуты): \n");
        cin>>mas_date[i].t.minuty;
    }
           
    ofstream os("text.txt");
    os.write(reinterpret_cast<char*>(mas_date),sizeof(mas_date));
    os.close();
 
 
 
 
 
 
 
    return 0;
}
Добавлено через 5 минут
Он мне кракозябры выводит в файл.
0
marina2
Рожденная для битвы
272 / 50 / 5
Регистрация: 08.11.2009
Сообщений: 1,023
08.06.2011, 00:01 #12
Цитата Сообщение от cx5xclxxl9 Посмотреть сообщение
ofstream os("text.txt");
Это кажется считывание из файла
Попробуй ifstram
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.06.2011, 07:50 #13
C++
1
ofstream os("text.txt", ios::binary);
1
cx5xclxxl9
0 / 0 / 0
Регистрация: 12.05.2011
Сообщений: 23
08.06.2011, 23:13  [ТС] #14
Всё равно почему-то криво выводит

Добавлено через 1 минуту
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
#include <fstream>
#include "stdafx.h"
#include <conio.h>
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
 
#define cyrOut(_string_) CharToOem(_string_,szStr);\
cout << szStr
char szStr[512];
 
#define N 2
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    struct date {
              short chislo;
              char mes[15];
              short god;
              struct vremya {
                short chasy;
                short minuty;
              } t;
 
           };
 
    struct date mas_date[N];
    
 
    
    for (int i=0;i<N;i++)
    {
        cyrOut("\n\n*** Дата ");cout<<i+1<<" ***\n\n";
        cyrOut("Введите число: \n");
        cin>>mas_date[i].chislo;
        cyrOut("Введите месяц (например: Февраль) : \n");
        cin>>mas_date[i].mes;
        cyrOut("Введите год: \n");
        cin>>mas_date[i].god;
        cyrOut("Введите время (часы): \n");
        cin>>mas_date[i].t.chasy;
        cyrOut("Введите время (минуты): \n");
        cin>>mas_date[i].t.minuty;
    }
        FILE *out;
        out = fopen("text.txt", "w");
        fwrite((void*)(&mas_date), sizeof(date), 1, out);
        fclose(out);
 
 
 
 
 
 
    return 0;
}
Попробовал так - тоже криво.

Добавлено через 1 час 24 минуты
Всё, с первой частью вроде разобрался


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
#include <fstream>
#include "stdafx.h"
#include <conio.h>
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
 
#define cyrOut(_string_) CharToOem(_string_,szStr);\
cout << szStr
char szStr[512];
 
 
 
#define N 2 //Количество дат
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    struct date {
              short chislo;
              char mes[15];
              short god;
              struct vremya {
                short chasy;
                short minuty;
              } t;
 
           };
 
    struct date mas_date[N];
    
 
    
    for (int i=0;i<N;i++)
    {
        cyrOut("\n\n*** Дата ");cout<<i+1<<" ***\n\n";
        cyrOut("Введите число: \n");
        cin>>mas_date[i].chislo;
        cyrOut("Введите месяц: \n");
        cin>>mas_date[i].mes;
        cyrOut("Введите год: \n");
        cin>>mas_date[i].god;
        cyrOut("Введите время (часы): \n");
        cin>>mas_date[i].t.chasy;
        cyrOut("Введите время (минуты): \n");
        cin>>mas_date[i].t.minuty;
    }
        
 
 
        FILE *fp;
        fp = fopen("date.txt", "w");
        
        for (int i = 0; i < N; i++)
        {
                fprintf(fp, "\n\n*******\n");    
                fprintf(fp, "%d ", mas_date[i].chislo);
                fprintf(fp, "%s ", mas_date[i].mes);
                fprintf(fp, "%d\n", mas_date[i].god);
                fprintf(fp, "%d\:", mas_date[i].t.chasy);
                fprintf(fp, "%d\n", mas_date[i].t.minuty);
        }
        fclose(fp);
    return 0;
}
0
grizlik78
Эксперт С++
1966 / 1459 / 120
Регистрация: 29.05.2011
Сообщений: 3,019
08.06.2011, 23:20 #15
Цитата Сообщение от accept Посмотреть сообщение
C++
1
ofstream os("text.txt", ios::binary);
Несколько неожиданно видеть бинарный флаг для файла с расширением txt
0
08.06.2011, 23:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2011, 23:20
Привет! Вот еще темы с ответами:

Работа со структурами - C++
#include&lt;iostream.h&gt; #include&lt;math.h&gt; struct List { float fi,r,z; int n; }; void vvod...

Работа со структурами - C++
struct data_type { int day; int month; int year; }data_birthday; /*нужна ли здесь эта переменная или достаточно вызвать...

Работа со структурами - C++
Всем доброго времени суток! Имеется следующая задача: Написал следующий код: #include &lt;iostream&gt; #include &lt;Windows.h&gt; using...

Работа с структурами - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; struct struc{ char* a; int x; }


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

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

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