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

Удалить элементы из структуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ error LNK2001 http://www.cyberforum.ru/cpp-beginners/thread327728.html
беда, совсем беда. день тяжелый, мозг не работает. в общем пример из книжки. непосредственно мейн.цпп //_011.cpp #include <iostream> using std::cout; using std::endl; #include <iomanip>
C++ Что означает строчка ??? Что озночает строчка double *x = new double; Заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread327723.html
C++ Конвертация строки в число
библиотека string, присваиваю целой переменной элемент строки, а он присваивает кодировку, тобишь если элемент строки '0' то переменная равна 48. Как сделать так чтобы она равнялась 0.
Найти самую длинную строку в файле C++
Вроде все норм, вот только когда пытаюсь вывести через puts() - выводит все содержимое файла посимвольно и в столбик, а через Printf() - выводит какие то квадраты. Компилятор Borland C++ 3.11 #include <string.h> #include <conio.h> #include <stdio.h> FILE *f; char s;
C++ Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами http://www.cyberforum.ru/cpp-beginners/thread327689.html
Нужно написать это на СИ! Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над векторами: 1)сложения; 2)вычитания; 3)скалярного умножения векторов; 4)умножения вектора на число; 5)нахождение длины вектора. Используя этот модуль, решить задачу. Дан массив A - массив векторов. Отсортировать его в порядке убывания длин векторов.
C++ Напишите программу на СИ! снова геометрия(((( Нужно написать программу на си, которая это выполнит... Задано множество точек на плоскости, не лежащих на одной прямой. Определить минимальное количество точек, после удаления которых остаются точки, лежащие на одной прямой. подробнее

Показать сообщение отдельно
JeyKip
53 / 45 / 2
Регистрация: 23.06.2011
Сообщений: 122
30.06.2011, 16:31     Удалить элементы из структуры
подправил ваш алгоритм...использовал список структур....проверил, работает...вставлять в любую позицию при помощи функции списка insert...

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
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <list>
using namespace std;
 
struct Auto
{
        char* name;
        char* number;
        char* otdel;
        char* tehnumber;
};
 
void input(/*Auto& Obj*/list<Auto> &ls)
{
    Auto Obj;
        const int max_size=200;
        char str[max_size];
        cout<<"Введите Имя и Фамилию\n";
        cin.getline(str, max_size);
        Obj.name=new char[strlen(str)+1];
        strcpy(Obj.name, str);
        cout<<"Введите номер машины\n";
        cin.getline(str, max_size);
        Obj.number=new char[strlen(str)+1];
        strcpy(Obj.number, str);
        cout<<"Введите отдел регистрации ДАИ\n";
        cin.getline(str, max_size);
        Obj.otdel=new char[strlen(str)+1];
        strcpy(Obj.otdel, str);
        cout<<"Введите номер тех паспорта\n";
        cin.getline(str, max_size);
        Obj.tehnumber=new char[strlen(str)+1];
        strcpy(Obj.tehnumber, str);
        ls.push_back(Obj);
        cout<<'\n';
        cin.get();
}
 
void output(/*Auto& Obj*/list<Auto>::iterator it)
{
        cout<<"Фамилия Имя Отчество: "<< (*it).name <<'\n'
                <<"Номер машины: "<< (*it).number <<'\n'
                <<"Отдел регистрации ДАИ: "<< (*it).otdel <<'\n'
                <<"Номер тех паспорта: "<< (*it).tehnumber <<'\n';
        cout<<'\n';
}
 
void deleted(/*Auto* Obj*/list<Auto> &ls, int n)
{
        int cnt=0;
        list<Auto>::iterator it = ls.begin();
        const int size_find_str=7;
        const char str[size_find_str]="123QWE";
        for(int i=0; i<n; ++i)
        {
                if((strcmp((*it).number, str)) == 0)
                {
                    ls.erase(it);
                    ++cnt;
                    break;
                        /*Obj[i].name=Obj[i+1].name;
                        Obj[i].number=Obj[i+1].number;
                        Obj[i].otdel=Obj[i+1].otdel;
                        Obj[i].tehnumber=Obj[i+1].tehnumber;
                        ++cnt;*/
                }else
                {
                    it++;
                    
                }
        }
        if (cnt==0)
        {
                cout<<"Нет информации о водителях с номером "<<str;
        }
}
 
int main()
{       clrscr();
    setlocale(0,"");
        const int size=2;
        list<Auto> auto_list;
        list<Auto>::iterator it = auto_list.begin();
        //Auto* AuArr;
        //AuArr=new Auto[size];
        for(int i=0; i<size; ++i)
        {
                cout<<"Введите информацию о "<< i+1 <<" водителе\n";
                input(/*AuArr[i]*/auto_list);
        }
 
        it = auto_list.begin();
        for(int i=0; i<auto_list.size(); ++i)
        {
                cout<<"Информация о "<< i+1 <<" водителе\n";
                output(/*AuArr[i]*/it);
                it++;
        }
 
        deleted(auto_list, size);
 
        cout<<"Архив водителей:\n";
        it = auto_list.begin();
        for(int i=0; i<auto_list.size(); ++i)
        {
                cout<<"Информация о "<< i+1 <<" водителе\n";
                output(/*AuArr[i]*/it);
                it++;
        }
 
        //delete[] AuArr;
        getch();
        return 0;
}
Добавлено через 2 минуты
не обновил страницу, не видел сообщения от Михаила...но надеюсь, что тоже был чем-то полезен..))

Добавлено через 22 часа 0 минут
в этом коде уже реализована вставка в любую позицию перед определенным именем...

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
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <list>
using namespace std;
 
struct Auto
{
        char* name;
        char* number;
        char* otdel;
        char* tehnumber;
};
 
void input(/*Auto& Obj*/list<Auto> &ls)
{
        Auto Obj;
        const int max_size=200;
        char str[max_size];
        cout<<"Введите Имя и Фамилию\n";
        cin.getline(str, max_size);
        Obj.name=new char[strlen(str)+1];
        strcpy(Obj.name, str);
        cout<<"Введите номер машины\n";
        cin.getline(str, max_size);
        Obj.number=new char[strlen(str)+1];
        strcpy(Obj.number, str);
        cout<<"Введите отдел регистрации ДАИ\n";
        cin.getline(str, max_size);
        Obj.otdel=new char[strlen(str)+1];
        strcpy(Obj.otdel, str);
        cout<<"Введите номер тех паспорта\n";
        cin.getline(str, max_size);
        Obj.tehnumber=new char[strlen(str)+1];
        strcpy(Obj.tehnumber, str);
                ls.push_back(Obj);
        cout<<'\n';
        cin.get();
}
 
void output(/*Auto& Obj*/list<Auto>::iterator it)
{
        cout<<"Фамилия Имя Отчество: "<< (*it).name <<'\n'
                <<"Номер машины: "<< (*it).number <<'\n'
                <<"Отдел регистрации ДАИ: "<< (*it).otdel <<'\n'
                <<"Номер тех паспорта: "<< (*it).tehnumber <<'\n';
        cout<<'\n';
}
 
void insert_new (list<Auto> &ls, char *name, Auto driver_info)
{
    bool yes = false;
    int position = 0;
    list<Auto>::iterator it = ls.begin();
    for (it = ls.begin(); it != ls.end(); it++)
    {
        if (strcmp((*it).name, name) == 0)
        {
            yes = true;
            break;
        }
    }
        if (yes)
            ls.insert(it,driver_info);
        else cout<<"Нет в бвзе водителей с именем "<<name<<endl;
}
 
void deleted(/*Auto* Obj*/list<Auto> &ls, int n)
{
        int cnt=0;
                list<Auto>::iterator it = ls.begin();
        const int size_find_str=7;
        const char str[size_find_str]="123QWE";
        for(int i=0; i<n; ++i)
        {
                if((strcmp((*it).number, str)) == 0)
                {
                                        ls.erase(it);
                                        ++cnt;
                                        break;
                        /*Obj[i].name=Obj[i+1].name;
                        Obj[i].number=Obj[i+1].number;
                        Obj[i].otdel=Obj[i+1].otdel;
                        Obj[i].tehnumber=Obj[i+1].tehnumber;
                        ++cnt;*/
                }else
                                {
                                        it++;
                                        
                                }
        }
        if (cnt==0)
        {
                cout<<"Нет информации о водителях с номером "<<str;
        }
}
 
int main()
{       clrscr();
        setlocale(0,"");
        const int size=2;
                list<Auto> auto_list;
                list<Auto>::iterator it = auto_list.begin();
        //Auto* AuArr;
        //AuArr=new Auto[size];
        for(int i=0; i<size; ++i)
        {
                cout<<"Введите информацию о "<< i+1 <<" водителе\n";
                input(/*AuArr[i]*/auto_list);
        }
 
                it = auto_list.begin();
        for(int i=0; i<auto_list.size(); ++i)
        {
                cout<<"Информация о "<< i+1 <<" водителе\n";
                output(/*AuArr[i]*/it);
                                it++;
        }
 
        deleted(auto_list, size);
 
        /*Здесь я просто добавлю информацию о новом человеке для тестирования*/
        Auto driver;
        driver.name = "Evgeniy";
        driver.number = "1234AN";
        driver.otdel = "Petrovka";
        driver.tehnumber = "98264";
        /*Конец записи. Теперь пробуем вставить перед Иваном*/
        insert_new(auto_list, "Ivan", driver);
        cout<<"Архив водителей:\n";
                it = auto_list.begin();
        for(int i=0; i<auto_list.size(); ++i)
        {
                cout<<"Информация о "<< i+1 <<" водителе\n";
                output(/*AuArr[i]*/it);
                                it++;
        }
 
        //delete[] AuArr;
        getch();
        return 0;
}
 
Текущее время: 22:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru