Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146

Доделать код

14.04.2013, 13:57. Показов 775. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите доделать код, нужно добавить укзатели можете помочь

Вот код:
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
# include <windows.h>
# include <locale.h>
# include <stdio.h>
# include <stdlib.h>
# define MAX 100
 
struct olimpiads 
{
    char name [30];
    int bals;
} listS [MAX];
void init_list (), enter ();
void delete1 (), list ();
void load (), save ();
void peremog (), peremog ();
int menu_select (), find_free ();
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    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");
    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 );
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2013, 13:57
Ответы с готовыми решениями:

Доделать код
Программа удаляет из файла определённые символы: &quot;A&quot;, &quot;b&quot;, &quot;C&quot;, &quot;d&quot;. Проблема в том, что я не знаю как добавить условия для удаления...

Нахождение разных типов предложений (доделать код)
Задание: нужно найти все предложения в строке , которые заканчиваются на !.? ( ну вообщем восклицательные, вопросительные, и обычные) Есть...

Доделать код чтобы факториал вычислялся в цикле в функции
Нужно чтобы факториал вычислялся в функции double_row где вычисляется сумма #include &lt;iostream&gt; using namespace std; ...

6
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
14.04.2013, 15:12
Разрешите узнать, какие указатели и куда нужно добавить?
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
14.04.2013, 18:25  [ТС]
Цитата Сообщение от Большой_Стен Посмотреть сообщение
Разрешите узнать, какие указатели и куда нужно добавить?
добавить их везде нужно.
а указатели вот такие как тут в проге
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 "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#include <iostream>
#include <locale>
#include <ctime>
 
using namespace std; //Простір імен. Використовується для того, щоб обмежити видимість змінних, ф-ій і т.д.
 
void main() //Початок програми
{
    srand(time(NULL)); //Функція, яка приймає аргумент і задає функції rand () початкове число для генерації.
 
    setlocale(LC_ALL,"rus"); //Локалізація на російську
 
    int k=0,s=0,m,n; //Присвоєння операторів
 
    cout<<"Введiть кiлькiсть рядкiв: "; //Виведення тексту на екран
    cin>>m; //Введення тексту з клавіатури
    cout<<"Введiть кiлькiсть стовпчикiв: "; //Виведення тексту на екран
    cin>>n; //Введення тексту з клавіатури
 
    int **a; //Динамічний масив, виділення пам'яті під масив
 
    a=new int *[m];
 
    for (int i=0;i<m;i++) //Задаемо рядки
    {
        a[i]=new int[n];
        for (int j=0;j<n;j++) //Задаемо стовпчики
        {
            a[i][j]=rand()%9+1; //Генерація випадкових чисел
        }
    }
    for (int i=0;i<m;i++) //Задаемо рядки
    {
        cout<<"\n"; //Пустий рядок
        for (int j=0;j<n;j++) //Задаемо стовпчики
        {
            cout<<a[i][j]<<" "; //Виводимо масив на екран
        }
    }
    cout<<"\n\n";
    for (int i=0;i<m;i++) //Задаемо рядки
    {
        for (int j=0;j<n;j++) //Задаемо стовпчики
        {
            if (a[i][j]%2==1) //Перевірка умови
            {
                k++; //Запам'ятовування чисел
            }
        }
    }
    cout<<"Кiлькiсть непарних елементiв: "<< k << "\n"; //Виведення на екран k
    delete a; //Видалення пам'яті виділеної під масив
    system("pause"); //Затримка на екрані
}
0
13 / 13 / 8
Регистрация: 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 в структуре делать динамическим через указатель как-то неразумно.
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
16.04.2013, 22:05  [ТС]
Большой_Стен, ну наша афигенная 70 летняя преподша говорит все делать так что(
0
13 / 13 / 8
Регистрация: 22.04.2012
Сообщений: 99
17.04.2013, 09:36
Т.е. строчку на 30 символов делать динамическим массивом? Ладно могу представить, но вообще адекватнее использовать класс string.
0
0 / 0 / 1
Регистрация: 24.02.2013
Сообщений: 146
17.04.2013, 11:14  [ТС]
Большой_Стен, можешь плз, а то эта конченая задалбует
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.04.2013, 11:14
Помогаю со студенческими работами здесь

Доделать код. Тема массивы. Нужно использовать массив для хранения ответа
Дана целочисленная прямоугольная матрица. Определить: 1. количество строк, содержащих хотя бы один нулевой элемент; 2. номер столбца, в...

Доделать код чтобы он искал произведение элементов строки в которой находится максимальный елемент
Как найти произведение элементов строки в которой находится максимальный элемент? #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Нужно доделать код! Исключить из дерева сортировки число "2"
// аисд7.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Не могу доделать
Вот код: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; using namespace std; int main() { int temp; vector...

Доделать программу.
Товарищи программеры, скажите что тут не так? В борланде выдает море ошибок. FUNCTION DEC2BASEN(BASE: INTEGER; DEC: LONGINT): STRING; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru