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

Доделать код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Символы и строки.Найти длину самого короткого слова http://www.cyberforum.ru/cpp-beginners/thread837400.html
Дано предложение. Найти длину самого короткого слова. Нужно сделать на Borland C++ (консолька) ! Умоляю помогите!!
C++ Строки. Определить, можно ли из букв первого слова получить второе Даны два слова. Определить, можно ли из букв первого слова получить второе. Каждая из букв второго слова должна входить в первое столько же раз сколько и во второе. Нужно сделать на Borland C++ (консолька) Умоляю помогите! http://www.cyberforum.ru/cpp-beginners/thread837397.html
C++ Про typedef
Читаю книгу Дейтела наткнулся на программу, в которой не могу понять одну деталь, а именно смотрим в комментариях ниже. #include <stdio.h> #include <stdlib.h> struct listNode { char data; struct listNode *nextPtr; };
Стек (удалить средний элемент если количество не парное, а если парное, удалить 2 средних) C++
Нужно создать стек и удалить средний элемент если количество не парное, а если парное, удалить 2 средних. Помогите,пожалуйста, у меня не выход удаление. #include <iostream> #include <conio.h> #include <malloc.h> using namespace std; struct Node { int d; Node *p;
C++ Не могу разобраться в потоках http://www.cyberforum.ru/cpp-beginners/thread837371.html
Есть программа которая считывает строку с файла и переводит в Азбуку Морзе,вроде бы всеправильнонаписано но почему то не выполняется ,помогите,пожалуйста разобраться. #include <iostream> #include <fstream> #include <string> using namespace std; int main() { string a; ifstream ifile("d:/some.txt");
C++ создать класс ListInt Создать класс ListInt для работы со списком целых чисел. В качестве членов-данных рекомендуется брать два элемента (определяющие начало и конец списка) самоссылочной структуры следующего вида: struct Node { int data; Node *next; }; Определить в этом классе функции-члены класса, обеспечивающие: инициализацию списка, добавление элементов в список, удаление элемента из списка. Кроме того,... подробнее

Показать сообщение отдельно
Большой_Стен
13 / 13 / 1
Регистрация: 22.04.2012
Сообщений: 99
14.04.2013, 18:54     Доделать код
Так, интересный у вас код - набор глобальных функций, которые все используют один глобальный массив. И наверно предполагается его сделать через указатель. Ну тогда попробуйте что-то типа такого:
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# include <windows.h>
# include <locale.h>
# include <stdio.h>
# include <stdlib.h>
# define MAX 100
 
struct olimpiads 
{
    char name [30];
    int bals;
} *listS;
void init_list (), enter ();
void delete1 (), list ();
void load (), save ();
void peremog (), peremog ();
int menu_select (), find_free ();
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    listS=new olimpiads[MAX];
    char choice;
    printf("Ведення списку адресатiв\n");
    init_list (); /* ініціалізація масиву структур */
    for (; ;) 
    {
        choice = menu_select ();
        switch (choice) 
        {
            case 1: enter (); break;
            case 2: delete1 (); break;
            case 3: list (); break;
            case 4: save (); break;
            case 5: load (); break;
            case 6: peremog (); break;
            case 7: return 0;
        }
    }
    system ("pause");
    delete (listS);
    return 0;
}
 
/* Ініціалізація списку. */
void init_list ()
{
    for (register int t = 0; t <MAX; ++t) listS[t].name[0] = '\0'; /* занесення '\0'-символу у перший символ масиву символів поля name, що означає відсутність значимих символів у полі name */
}
/* Отримання номера пункту меню */
int menu_select ()
{
    setlocale(LC_CTYPE, "Russian");
    char pm [80];
    int c;
    printf ("\n");
    printf ("1. Ввести елемент списку \n");
    printf ("2. Вилучити елемент списку \n");
    printf ("3. Вивести список \n");
    printf ("4. Зберегти у файлi \n");
    printf ("5. Завантажити з файлу \n");
    printf ("6. Переможець олiмпiади \n");
    printf ("7. Вихiд \n");
    do 
    {
        printf ("\n Введiть номер потрiбного пункту меню: ");
        scanf("%s", &pm);
        c = atoi (pm); // приведення (конвертація) рядка в числовий вигляд
    } while (c <1 || c> 7);
    return c;
}
/* Додавання адреси у список */
void enter ()
{
    int n;
    n = find_free ();
    if (n == -1) {printf ("\n Список заповнений"); return;}
    printf ("Введiть прiзвище, iм’я, по-батьковi: ");
    scanf ("%s", &listS[n].name);
    printf ("Введiть оцiнку студента: ");
    scanf ("%d", &listS[n].bals);
}
/* Пошук вільного місця у списку. Переглядаеться список і якщо в межах заданого розміру масива зустрічається елемент, поле name якого не заповнене, то повертається номер цього елемента*/
int find_free ()
{
    register int t;
    for (t = 0; listS[t].name[0] && t <MAX; ++t);
    if (t == MAX) return -1; /* вільних структур немає */
    return t;
}
/* Вилучення адреси. На введенний № елемента у списку, який слід вилучити, у поле name вказаного елемента списку вводиться нуль-символ, що є ознакою вилученого елемента*/
void delete1 ()
{
    register int n;
    char s [80];
    printf ("Введiть № у списку: ");
    scanf("%s",&s);
    n = atoi (s); // приведення (конвертація) рядка в числовий вигляд
    if (n >= 0 && n <MAX)
    listS[n].name[0] = '\0'; /* '\0'-символ заноситься у перший символ масиву символів поля name, що означає відсутність значимих символів у полі name */
}
/* Виведення списку на екран */
void list ()
{
    setlocale (LC_ALL, "rus_rus.866");
    for (register int t = 0; t <MAX; ++t) 
    {
        if (listS[t].name[0]) 
        {
            printf ("%s \n", listS[t].name);
            printf ("%d \n", listS[t].bals);
        }
    }
    printf ("\n");
}
/* Збереження списку у файлі */
void save ()
{
    setlocale(LC_CTYPE, "Russian");
    FILE *fp;
    if ((fp = fopen ("listf", "w")) == NULL) 
    {
        printf ("Помилка при вiдкриттi файлу \n");
        return;
    }
    for (register int i = 0; i <MAX; i++)
    if (*listS[i].name)
    if (fwrite (&listS[i], sizeof (struct olimpiads), 1, fp) != 1)
    printf ("Помилка при запису файлу \n");
    fclose (fp);
}
/* Завантажити файл */
void load ()
{
    FILE *fp;
    if ((fp = fopen ("listf", "r")) == NULL) 
    {
        printf ("Помилка при вiдкриттi файлу \ n");
        return;
    }
    init_list ();
    for (register int i = 0; i <MAX; i++)
    if (fread (&listS[i], sizeof (struct olimpiads), 1, fp) != 1) 
    {
        if (feof (fp)) break;
        printf ("Помилка при зчитуваннi файлу \n");
    }
    fclose (fp);
}
/* Завантажити файл */
void peremog ()
{
    setlocale (LC_ALL, "Russian");
    int max_i = -1, max_b = -1; 
    for (int t = 0; t < MAX; t++)
    {
        if (listS[t].name[0] && listS[t].bals > max_b) 
        {
            max_b = listS[t].bals;
            max_i = t; 
        }
    }
 
    printf("%s переможець! Має %d балiв. ", listS[max_i].name, listS[max_i].bals );
}
Массив name в структуре делать динамическим через указатель как-то неразумно.
 
Текущее время: 12:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru