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

Тип информационного поля - C++

Восстановить пароль Регистрация
 
lxPrizRakxl
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 4
16.06.2013, 11:49     Тип информационного поля #1
помогите с заданием плиз
1)Тип информационного поля char*
Добавить в список элемент после элемента с заданным информационным полем.
2)Тип информационного поля double.
Удалить из списка все элементы с отрицательными информациоными полями.
3)Тип информационного поля int.
Найти среднее арифметическое элементов дерева.

я это ваще не шарю вдуплил Си до одномерного массива а тут такое ужас=((((((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2013, 11:49     Тип информационного поля
Посмотрите здесь:

Описать структуру с именем AEROFLOT содержащей поля: название пункта назначения рейса, номер рейса, тип самолета, C++
тип cout-a ostrieam? соответствено тип cin-a istream? C++
C++ Как в связном списке присвоить NULL полю next, если тип этого поля не указатель, а ссылка?
C++ clrscr(); не определен данный тип и const MAX_ELEMENTS = 4; отсутсвует тип int когда я его туда вписываю у меня больше ошибок вылазит
C++ Задача (язык С + +). Описать тип данных «Студент», содержащий поля «Фамилия», «Группа», «Количество прогулов». Вывести фамилии всех прогульщиков второ
C++ 8.Дан список населенных пунктов области с описанием: название, кол-во жителей, тип. Тип выбирается из списка: город, районный цент, село, поселок г
Сформировать стек по файлу чисел. Удалить из стека узлы с минимальным значением информационного поля C++
Узнать тип значения, зная тип указателя C++
Подскажите пожалуйста, существует ли какие либо ограничения на тип информационного поля списка? C++
Как сконвертировать свой тип в тип double? C++
Не могу преобразовать тип char в тип double C++
Какой символьный тип использует тип std::string? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lxPrizRakxl
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 4
17.06.2013, 14:41  [ТС]     Тип информационного поля #2
блин ну пожалуйста помогите очень прошу
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
17.06.2013, 15:02     Тип информационного поля #3
Цитата Сообщение от lxPrizRakxl Посмотреть сообщение
я это ваще не шарю вдуплил Си до одномерного массива а тут такое ужас=((((((
Значит пришло время зайти в гугл и ввести в строку поиска "си односвязный список". Список это базовое понятие, не выучите его сдав чужой код - дальше только сложнее будет понять что-либо, не поленитесь и почитайте, вам его не оминуть никак.
lxPrizRakxl
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 4
17.06.2013, 17:02  [ТС]     Тип информационного поля #4
та времени уже нет учить,если учить то уже после сессии

Добавлено через 7 минут
а односвязные списки это типо динамический?
Gepar
 Аватар для Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
18.06.2013, 02:37     Тип информационного поля #5
Цитата Сообщение от lxPrizRakxl Посмотреть сообщение
Добавлено через 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
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
#include <iostream>
#include <iomanip>
#include <cstring>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
char* fileName;
 
struct Item
{
    Item(int k,const char* ch, Item* n=NULL)
    :key(k),info(new char[strlen(ch)+1]),next(n),length(strlen(ch)+1)
    {
        strcpy(info,ch); //копирование строчки с информацией в структуру
    }
    int key;//ключ
    char* info;//информация
    Item* next;//следующий элемент списка
    int length;//длина информации
    int shift;//смещение в файле (байт)
};
 
 
//проверяет принадлежит ли ключ списку
bool Belong(Item*& list, int key)
{
    Item* temp(list);
    while(temp && temp->key!=key)//пока есть элементы в списке и ключ текущего элемнта не равен ключу что мы ищем
     temp=temp->next;
 
    return (temp ? true : false);//возвращаем true если temp!=NULL, те если ключ найден в списке
}
 
//добавляет в список элемент
void Add(Item*& list,int key, const char* val)
{
    if(Belong(list, key))//проверяем нет ли у нас элемента уже с таким ключом
    {
        cerr<<"Element with key = "<<key<<" already exist\n";
        return;
    }
 
    if(!list)//если список пуст то добавим в голову списка элемент
     list= new Item(key,val,NULL);
    else//иначе найдём хвост и добавим после него элемент
    {
        Item* temp(list);
        while(temp->next)
         temp=temp->next;
        temp->next= new Item(key,val,NULL);
    }
}
 
//удаление элемента с заданным ключом
bool Delete(Item*& list, int key)
{
    Item* temp(list);
    while(temp && temp->key!=key)//ищем элемент с таким ключом как нас просят
     temp=temp->next;
 
    if(temp)//если елемент с таким ключом существует
    {
        //если елемент что нужно удалять это голова списка
        if(temp==list)
        {
            Item* toDel(list);
            list=list->next;
            delete toDel;
            return true;
        }
        //иначе элемент где-то в середине или в конце
        else
        {
            Item* toDel(temp);
            Item* newElem(list);
 
            //найдём элемент перед тем что собрались удалять
            while(newElem->next!=temp)
                    newElem=newElem->next;
            //уберём удаляемый элемент из списка
            newElem->next=temp->next;
 
            delete toDel;//удалим элемент
            return true;
        }
    }
    else//иначе элемента нет. Уведомляем пользователя об ошибке
    {
        cerr<<"Can't delete element with key = "<<key<<endl;
        return false;
    }
}
 
//поиск элемента по ключу
Item* Find(Item*& list, int key)
{
    Item* result;//результат. Этот указатель мы и вернём пользователю
    Item* temp(list);
    while(temp && temp->key!=key)//цикл происходит пока не будет найдено совпадение ключа (или пока не кончится список)
     temp=temp->next;
 
    if(temp)//если список не кончился - мы нашли ключ, скопируем этот элемент и вернём его как результа
     return (result=new Item(temp->key,temp->info,NULL));
 
    else//иначе список закончился быстрее чем мы нашли нужный элемент. Уведомим пользователя об ошибке и вернём указатель на NULL
     cerr<<"Can't find element with key = "<<key<<endl;
    return (result=NULL);
}
 
 
//Удаление всего списка, необходимо чтобы можно было освободить память
void DeleteList(Item*& list)
{
    Item *toDel(list);
    while(list)//пока есть что удалять - удаляем элементы
    {
        list=list->next;
        delete toDel;
        toDel=list;
    }
}
 
//вывод в поток списка
ostream& operator<<(ostream& os, const Item* print)
{
    const Item* temp(print);
    if(!temp)//если элементов в списке нет (list = NULL) то не будем ничего пытаться печатать
     os<<"List is empty.";
    else//иначе распечатаем построчно ключи и информационную часть элементов
     while(temp)
      os<<temp->key<<" -> "<<temp->info<<'\n', temp=temp->next;
    return (os<<endl);//вернём адрес потока чтобы пользователь мог туда ещё что-то засунуть (позволяет делать так cout<<list1<<list2<<list3)
}
 
void WriteList(Item*& list)
{
    FILE* file= fopen(fileName,"w");
    Item* temp=list;
    int Shift=0;
    int* count= new int (0);
    while(temp)
     temp=temp->next,count++;
 
    Shift+=sizeof(Item)*(*count);
    temp= list;
    while(temp)
    {
        temp->shift=Shift;
        Shift+=temp->length;
        temp=temp->next;
    }
    temp=list;
    fwrite(count,1,sizeof(int),file);
 
    while(temp)
    {
        fwrite(temp,1,sizeof(Item),file);
        temp=temp->next;
    }
    temp=list;
    while(temp)
    {
        fwrite(temp->info,temp->length,sizeof(char),file);
        temp=temp->next;
    }
    fclose(file);
}
 
Item* ReadList()
{
    int* count= new int(-1);
    Item* lst= NULL;
    Item* temp= (Item*) malloc(sizeof(Item));
    FILE* file= fopen(fileName,"r");
    fread(count,1,sizeof(int),file);
    for(int i=0;i<(*count);i++)
    {
        fread(temp,1,sizeof(Item),file);
        temp->info=new char[temp->length];
        fseek(file,temp->shift,SEEK_SET);
        fread(temp->info,temp->length,sizeof(char),file);
 
        Add(lst,temp->key,temp->info);
 
        fseek(file,sizeof(int)+(i+1)*sizeof(Item),SEEK_SET);
    }
    return lst;
}
 
 
 
 
 
int main()
{
    fileName= new char[strlen("out.txt")+1];
    strcpy(fileName,"out.txt");
    Item* lst= NULL;
    Add(lst,2,"value2");
    Add(lst,3,"zzzzzz4");
    //Add(lst,3,"value3");
    cout<<lst;
    WriteList(lst);
    Item* lst2= ReadList();
    cout<<lst2;
 
 
}
 
/*
int main()
{
    int choice=1;//выбор пользователя. Сюда считывается пункт меню что выбрал пользователь
    int key;//ключ который ввёл пользователь при добавлении/удалении/поиске
    char str[256];//строка для информации что будет вводить пользователь при добавлении/удалении/поиске
    Item* forFind=NULL;//результат поиска. Пока просто обнулим его
    Item* lst=NULL;//сам список. Пока что он пуст
 
    while(choice)
    {
        system("cls");
        cout<<"Main Menu\n"
        "1 - Add new element\n"
        "2 - Find element\n"
        "3 - Delete element\n"
        "4 - Print list\n"
        "5 - Exit\n";
        cin>>choice;
        cout<<endl;
        if(cin.fail() || (choice<1 || choice>5))//проверка на ошибочный выбор пользователем пункта меню
        {
            cin.clear();//очистка состояния потока
            choice=1;
            continue;
        }
        else
         switch (choice)
         {
            case 1:
            cout<<"Enter key:\n";
             cin>>key;
            if(cin.fail())
            {
                cin.clear();
                cout<<"Try again.\n";
                _flushall();//очистка потока от мусора что навводил пользователь
                break;
            }
            cin.ignore();
            cout<<"Enter info:\n";
            cin.getline(str,256);
            Add(lst,key,str);
            break;
 
            case 2:
            cout<<"Enter key:\n";
            cin>>key;
            if(cin.fail())
            {
                cin.clear();
                cout<<"Try again.\n";
                _flushall();
                break;
            }
            cin.ignore();
            forFind=Find(lst,key);
            if(forFind)
             cout<<forFind;
            break;
 
            case 3:
            cout<<"Enter key:\n";
            cin>>key;
            if(cin.fail())
            {
                cin.clear();
                cout<<"Try again.\n";
                _flushall();
                break;
            }
            cin.ignore();
            if(Delete(lst,key))
             cout<<"Done\n";
            break;
 
            case 4:
            cout<<lst;
            break;
 
            case 5:
            break;
 
            default:
            cout<<"Wrong selection.\n";
         }
         if(choice==5)
          break;
         cout<<"Press any key to continue...\n";
         getch();
    }
    DeleteList(lst);
    return 0;
}
*/
gray_fox
18.06.2013, 02:40     Тип информационного поля
  #6

Не по теме:

Цитата Сообщение от Gepar Посмотреть сообщение
код односвязного списка на си
Цитата Сообщение от Gepar Посмотреть сообщение
C++
1
Item(int k,const char* ch, Item* n=NULL) :key(k),info(new char[strlen(ch)+1]),next(n),length(strlen(ch)+1)
"C-style" наверное, но уж точно не С
Я не придираюсь, если что

Yandex
Объявления
18.06.2013, 02:40     Тип информационного поля
Ответ Создать тему
Опции темы

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