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

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

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

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

14.04.2013, 13:57. Просмотров 347. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 13:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доделать код (C++):

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

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

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

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

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

не могу доделать. - C++
составить программу для проверки утверждения: «Результатами вычислений по формуле x2 + x + 41 при 0 &lt;x&lt; 40 являются простые числа». Все...

6
Большой_Стен
13 / 13 / 1
Регистрация: 22.04.2012
Сообщений: 99
14.04.2013, 15:12 #2
Разрешите узнать, какие указатели и куда нужно добавить?
0
tAruuuch
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 144
14.04.2013, 18:25  [ТС] #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
#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 / 1
Регистрация: 22.04.2012
Сообщений: 99
14.04.2013, 18:54 #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
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
tAruuuch
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 144
16.04.2013, 22:05  [ТС] #5
Большой_Стен, ну наша афигенная 70 летняя преподша говорит все делать так что(
0
Большой_Стен
13 / 13 / 1
Регистрация: 22.04.2012
Сообщений: 99
17.04.2013, 09:36 #6
Т.е. строчку на 30 символов делать динамическим массивом? Ладно могу представить, но вообще адекватнее использовать класс string.
0
tAruuuch
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 144
17.04.2013, 11:14  [ТС] #7
Большой_Стен, можешь плз, а то эта конченая задалбует
0
17.04.2013, 11:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2013, 11:14
Привет! Вот еще темы с ответами:

доделать программу - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); fstream...

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

Доделать программу - C++
Задание : Фамилия и инициалы, должность, год поступления на работу, зарплата. Создать массив объектов. Вывести: а) список работников,...

Доделать программу С++ - C++
Помогите пожалуйста доделать программу. Нужно , чтобы при вводе дробных чисел программа выдавала сообщение &quot;Нужно ввести целое число&quot; ...


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

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

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