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

Структуры. Журнал посещения - C++

Восстановить пароль Регистрация
 
рiece something
 Аватар для рiece something
1 / 1 / 0
Регистрация: 10.02.2011
Сообщений: 59
16.06.2011, 17:32     Структуры. Журнал посещения #1
Необходимо создать список студентов и отмечать их посещение + и -.
у меня получилось только:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct zhurnal
{
    char stud[20];
    char pos;
    }gL;
 
void main ()
{
    cout << "Imya studenta: ";
        cin >> gL.stud;
    cout << "Otmetka poseshenia: ";
    cin >> gL.pos;
как сделать так, чтобы поочереди имя студента, потом отметить их посещение несколько раз. и так с несколькими студентами. а потом вывести на экран что-то вроде:
Петя +++-++
Вова -+-+-+
Женя ++-+-
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 17:48     Структуры. Журнал посещения #2
даю подсказку, это можно сделать с помощью цикла..

C++
1
2
3
4
5
for (;;) {
  cin >> x;
  if (x == quit) break; // организуем выход из петли
  Student[x].AddDay(x);
}
это не код, на ошибки не смотри )
рiece something
 Аватар для рiece something
1 / 1 / 0
Регистрация: 10.02.2011
Сообщений: 59
16.06.2011, 18:13  [ТС]     Структуры. Журнал посещения #3
tylix, а если предположить, что я очень начинающая и такие подсказки мне особо не помогут?
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.06.2011, 19:02     Структуры. Журнал посещения #4
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
#include <stdio.h>
#include <stdlib.h>
 
struct Student {
    char name[20];
    char visits[20]; //к примеру 20 занятий
};
 
struct TeacherBook {
     struct Student student[10];//к примеру 10 студентов в группе
};
 
int main()
{
    struct TeacherBook journal;
    int i = 0;
    for(; i < 10; i++)
    {
    printf("\nStdent #%d\nEnter name: ", i + 1);
    scanf("%s", journal.student[i].name);
    printf("Enter visits: ");
    scanf("%s",journal.student[i].visits);
    }
    system("cls");
    for(i = 0; i < 10; i++)
    printf("%s\t%s", journal.student[i].name, journal.student[i].visits);
    getchar();
    return 0;
}
BoBa
36 / 2 / 2
Регистрация: 16.06.2011
Сообщений: 15
16.06.2011, 19:06     Структуры. Журнал посещения #5
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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
 
using namespace std;
 
class Spisok
{
public:
void Add(void);
void Show(void);
Spisok();
~Spisok();
struct Book
{
char Autor[15];
char BookName[15];
char Year[1];
Book *next;
} *beg, *end, *rex;
} s;
 
int main()
{
    int dl = 0, key = 0;
    while(key!=27)
    {
        cout << endl << "MENU:" << endl << endl << "\t1   - ADD" << endl 
         << "\t2   - SHOW" << endl << "\tEsc - EXIT" << endl << endl
         << "Press any key..." << endl;
        key = getch();
        switch(key)
        {
            case 49: s.Add();  break;
            case 50: s.Show(); break;
        }
    }
    return 0;
}
Spisok :: Spisok()
{
    beg = end = NULL;
}
 
Spisok::~Spisok()
{
    while(beg != NULL)
    {
    rex = beg;
    beg = rex -> next;
    delete  rex;
    }
}
void Spisok :: Add(void)
{
    rex = new Book;
    cout << endl <<"\tADD:" <<endl; 
    cout << "\t\tdata\t\t";
    cin >>rex -> Autor;
    cout << "\t\tPetrov\t\t";
    cin>> rex -> BookName;
    cout << "\t\tSidorov\t\t";
    cin  >> rex->Year;
    if (beg == NULL && end == NULL)
        beg = rex;
    else
        end->next = rex;
    end = rex;
    end->next = NULL;
    cout << endl << "\tPress any key" << endl;
}
 
void Spisok :: Show(void)
    {
    rex = beg;
    cout << endl <<"\tSHOW:" <<endl; 
    if (beg == NULL && end == NULL)
    {
        cout << "\t\tList is empty..." << endl << "\tPress any key" << endl;
        getch();
        return;
    }
    cout << "\t\tPetrov Sidorov" << endl << endl;
    while(rex!=NULL)
    {
        cout << "" <<rex->Autor << "\t" << rex->BookName << "\t"<< rex->Year << endl;
        rex = rex -> next;
    }
    cout << endl << "\tPress any key" << endl;
}
Не судите строго. Я новичок. Естественно, тут у нас программа изначально написано для другого(это видно), но я думаю это не так трудно исправить. В целом, должна работать. Попробуйте. Нужно ставить дату и "+" или "-" напротив фамилии. Вывод фамилий, даты и тех самых плюсов или минусов
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 19:30     Структуры. Журнал посещения #6
Цитата Сообщение от рiece something Посмотреть сообщение
как сделать так, чтобы поочереди имя студента, потом отметить их посещение несколько раз. и так с несколькими студентами. а потом вывести на экран что-то вроде:
Петя +++-++
Вова -+-+-+
Женя ++-+-
C++
1
2
3
4
5
6
   for (;;) {
      cin.getline(buffer, 256);        // "Lojkov Viktor, +-+-+--++"
      if ( !strcmp(buffer, "quit") ) break;
      // а далее обрабатываем строку
      // до запятой имя фио студента, после посимвольно посчитать +/-
   }
в файл писАть умеем?
тут вот что-то подобное делал, правда без чтения из файла
Определить какие студенты сдали предметы на 5

мне конечно интересно поэкспериментировать на эту тему, но только не сегодня, поздно уже,
если до завтра никто ничего красивого не выложит, напишу что нибудь страшное )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2011, 19:35     Структуры. Журнал посещения
Еще ссылки по теме:

C++ Журнал успеваемости студенческой группы (переделать с Паскаля на С++)
Журнал событий с записью в файл с перегуженными операциями C++
Студенческий журнал (УДАЛИТЬ элемент) C++

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

Или воспользуйтесь поиском по форуму:
BoBa
36 / 2 / 2
Регистрация: 16.06.2011
Сообщений: 15
16.06.2011, 19:35     Структуры. Журнал посещения #7
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
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
 
using namespace std;
 
class Spisok
{
public:
void Add(void);
void Show(void);
Spisok();
~Spisok();
struct Element
{
char Data[15];
char First[2];
char Second[2];
Element *next;
} *beg, *end, *rex;
} s;
 
int main()
{
        int  key = 0;
        while(key!=27)
        {
                cout << endl << "MENU:" << endl << endl << "\t1   - ADD" << endl 
                 << "\t2   - SHOW" << endl << "\tEsc - EXIT" << endl << endl
                 << "Press any key..." << endl;
                key = getch();
                switch(key)
                {
                        case 49: s.Add();  break;
                        case 50: s.Show(); break;
                }
        }
        return 0;
}
Spisok :: Spisok()
{
        beg = end = NULL;
}
 
Spisok::~Spisok()
{
        while(beg != NULL)
        {
        rex = beg;
        beg = rex -> next;
        delete  rex;
        }
}
void Spisok :: Add(void)
{
        rex = new Element;
        cout << endl <<"\tADD:" <<endl; 
        cout << "\t\tdata\t\t";
        cin >>rex -> Data;
        cout << "\t\tPetrov\t\t";
        cin>> rex -> First;
        cout << "\t\tSidorov\t\t";
        cin  >> rex->Second;
        if (beg == NULL && end == NULL)
                beg = rex;
        else
                end->next = rex;
        end = rex;
        end->next = NULL;
        cout << endl << "\tPress any key" << endl;
}
 
void Spisok :: Show(void)
        {
        rex = beg;
        cout << endl <<"\tSHOW:" <<endl; 
        if (beg == NULL && end == NULL)
        {
                cout << "\t\tList is empty..." << endl << "\tPress any key" << endl;
                getch();
                return;
        }
        cout << "\t\tPetrov Sidorov" << endl << endl;
        while(rex!=NULL)
        {
                cout << "" <<rex->Data << "\t" << rex->First << "\t"<< rex->Second << endl;
                rex = rex -> next;
        }
        cout << endl << "\tPress any key" << endl;
}
Вот сам исправил. Вроде удобная штука. В предложенной выше проргамме нельзя проставлять каждый день допустим посетил или нет, поэтому предложил альтернативу(естественно не самую лучшую)
Yandex
Объявления
16.06.2011, 19:35     Структуры. Журнал посещения
Ответ Создать тему
Опции темы

Текущее время: 19:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru