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

Построить в динамической памяти линейный связанный список вещественного типа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
kot ss
 Аватар для kot ss
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 2
19.11.2012, 06:45     Построить в динамической памяти линейный связанный список вещественного типа #1
Всем привет! имеются 3 задачи на С++, надо срочно все написать и сдать. если есть чуток времени, очень прошу, помогите!
заранее спасибо.
п.с.: сижу с книжкой по си и пытаюсь разобраться, пока слабо получается.

ЗАДАЧА 1.

дана структура:

struct студент= ФИО: char [ ];
оценка1: int;
оценка2: int;
оценка3: int;

Работа состоит из двух программ.

1.) Программа, формирующая файл записей.
В качестве записей использовать эту структуру. Файл должен содержать
8-10 записей.

2.) Программа, обрабатывающая файл записей;
меню к программе должно включать следующие пункты:
а) просмотр файла;
б) 1-ый пункт этой структуры;
в) корректировку одного поля i-ой записи
(i ввести).

ЗАДАЧА 2.

Построить в динамической памяти линейный связанный список вещественного типа.
Количество элементов списка заранее неизвестно. Список строить в прямом порядке, окончание ввода – введение условного символа. Символ этот в список не включается.
Предусмотреть возможность добавления и удаления элемента в конце списка.

ЗАДАЧА 3.

1. Построить бинарное дерево одного строкового типа данных.
2. Выполнить обход дерева рекурсивным и нерекурсивным (стековым) способам в обратном порядке;
3. При обходе подсчитать количество листьев дерева.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 06:45     Построить в динамической памяти линейный связанный список вещественного типа
Посмотрите здесь:

C++ Связанный список
Связанный список C++
C++ Построить в динамической памяти линейный связанный список строкового типа данных
C++ Линейный, однонаправленный, связанный список для структур
Связанный список. Создать, записать в связный список последовательность слов,обозначающих месяцы года,заданных пользователем C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
19.11.2012, 10:45     Построить в динамической памяти линейный связанный список вещественного типа #2
Цитата Сообщение от kot ss Посмотреть сообщение
надо срочно все написать и сдать.
Обычно за такое прилагают ценник за одну задачу или за все вместе
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
19.11.2012, 11:00     Построить в динамической памяти линейный связанный список вещественного типа #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
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
#include <iostream>
using namespace std;
#include <locale>
#include <string>
#include <fstream>
struct Stud
{
    string name;
    int mark[3];
};
int main(void)
{
    setlocale(0,"");
    ofstream ofst("test.txt", ios::app);
    
    Stud f;
    getline(cin,f.name);
    for(int i=0; i<3; i++)
        cin>>f.mark[i];
    ofst<<f.name<<" ";
    for(int i=0; i<3; i++)
        ofst<<f.mark[i]<<" ";
    ofst.close();
    ifstream ifst("test.txt");
    cout<<"Выберите пункт меню:\n";
    cout<<"1 - просмотреть все записи\n";
    cout<<"2 - просмотреть i-ую запись\n";
    cout<<"3 - редактировать i-ую запись\n";
    int temp;
    string tmp;
    cin>>temp;
    if(temp==1)
    {
        while(!ifst.eof())
        {
            getline(ifst, tmp);
            cout<<tmp<<endl;
        }
    }
    if(temp==2)
    {
        cout<<"введите номер записи: ";
        cin>>temp;
        int t=1, err=0;
        while(!ifst.eof() && err==0)
        {
            getline(ifst,tmp);
            if(t==temp) 
            {
                cout<<tmp<<endl;
                err=1;
            }
            else t++;
        }
 
    }
    if(temp==3)
    {
        cout<<"введите номер записи: ";
        cin>>temp;
        int t=1, err=0,count=0;
        int i=0;
        while(getline(ifst,tmp))       
        count++;
        while(!ifst.eof() && err==0)
        {
            getline(ifst,tmp);
            if(t==temp) 
            {
                cout<<tmp<<endl;
                err=1;
            }
            else t++;
        }
        cout<<"Введите новые данные:\n";
        Stud T;
        getline(cin, T.name);
        for(int i=0; i<3; i++)
            cin>>T.mark[i];
        /*
        чтоб сам чуть чуть подумал, допиши сам
        создать новый файл
        записать туда все до i-ой строки из исходного файла
        записать новую строку (структуру) T 
        записать туда все после i-ой строки их исходного файла
        */
    }
    ifst.close();
}
kot ss
 Аватар для kot ss
0 / 0 / 0
Регистрация: 19.11.2012
Сообщений: 2
20.11.2012, 20:44  [ТС]     Построить в динамической памяти линейный связанный список вещественного типа #4
Цитата Сообщение от MrGrig Посмотреть сообщение
Обычно за такое прилагают ценник за одну задачу или за все вместе
Верно, но я не знаю, какие тут ценники, и вообще надеялась на простую помощь. может быть, не программами, но хотябы объяснением, что и в каком порядке надо сделать. чтобы стало немного понятнее.

Tiva, огромное спасибо за написанный код! сижу, разбираюсь что да как) пока еще не в полной мере сопоставила языки Си и С++
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
21.11.2012, 09:39     Построить в динамической памяти линейный связанный список вещественного типа #5
Цитата Сообщение от kot ss Посмотреть сообщение
ЗАДАЧА 2.
Построить в динамической памяти линейный связанный список вещественного типа.
Количество элементов списка заранее неизвестно. Список строить в прямом порядке, окончание ввода – введение условного символа. Символ этот в список не включается.
Предусмотреть возможность добавления и удаления элемента в конце списка.
по построению раз у вас окончанием ввода служит какой-то символ советую вводить данные сначала в строку поптом преобразовывать в число. алгоритм думаю найдете он не сложный, главное добавить туда условие с точкой т.к. список у вас вещественный. соответственно при вводе создать цикл while с условием пока не символ <ваш символ> вызывать a->add(<ваше значение>);
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
class list{
public:
    static int count;
    void delall(list *root);
    void del();
    void add(double value);
private;
    double data;
    list *next;
    list(){
        count=0;
        next=NULL;
    }
    ~list(){
         delall(this);
    }
public:
    void del(){//удаление последнего
        int i=0;
        list *buf=this;
        while(i<count)
            buf=buf->next;
        delete buf;
        buf=NULL;
    }
    void delall(list *root){//очищение (возможно работает криво)
        if(next!=NULL){
             list *buf=next;
             delall(buf);
        }
        count--;
        delete buf;
    }
    void add(double value){//добавление в конец
        int i=0;
        list *buf=this;
        while(i<count)
            buf=buf->next;
        buf=new list;
        buf->data=value;
        buf->next=NULL;
        count++;
    }
};
Yandex
Объявления
21.11.2012, 09:39     Построить в динамической памяти линейный связанный список вещественного типа
Ответ Создать тему
Опции темы

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