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

Нужно найти ошибку в списках - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись в бинарный файл http://www.cyberforum.ru/cpp-beginners/thread1792403.html
Подскажите как записать данные из StringGrid в бинарный файл и компоновка допустим из 2 StringGrid построчно
C++ Библиотеки раскрывают инкапсуляцию .h: #include <string> class A { public: A(); ~A(); private: http://www.cyberforum.ru/cpp-beginners/thread1792393.html
C++ Определить класс "строка"
Определите класс "строка" с двумя член-данными: char *p и int len, где char*p- указатель на строку, а int len - длина строки. Напишите демонстрационную версию программы, которая создает 2 объекта класса "строка"( первый объект содержит строку с фамилией, второй объект содержит имя), выводит строки этих объектов на экран, складывает эти объекты и выводит на экран результирующую строку обоих....
Создать функцию prompt и перегрузить её для параметра разного типа C++
Создайте функцию prompt( ) для выдачи подсказки пользователю и ожидания ввода данного. Перегрузите функцию prompt( ) так, чтобы она осуществляла ввод данных типов int, double, long. • promt () перегруженная функция трех типов : int, double,long include <iostream> using namespace std; class unever{ public: int prompt(int i); double prompt(double d); long prompt(long l);
C++ Создать класс "кольцевой буфер" http://www.cyberforum.ru/cpp-beginners/thread1792354.html
Кольцевой буфер емкостью 1024 вещественных чисел. Доступ к элементам буфера – как к элементам очереди. Обязательны функции-члены класса для инициализации буфера, добавления и удаления элемента, определения количества свободного и занятого пространства в буфере. Описать класс и продемонстрировать его использование. • GetFreeSpace() возвращает свободное место • GetOccupiedSpace() возвращает...
C++ Error C2679: бинарный "<<": не найден оператор Кто-нибудь может объяснить, почему компилятор выдает ошибку? (строку с ошибкой смотрите в комментариях) error C2679: бинарный "<<" : не найден оператор, принимающий правый операнд типа std::string (или приемлемое преобразование отсутствует) #include "stdafx.h" #include <iostream> using namespace std; struct DATA{ int n, m; подробнее

Показать сообщение отдельно
Хадукен
 Аватар для Хадукен
0 / 0 / 2
Регистрация: 01.08.2016
Сообщений: 60
11.08.2016, 12:27  [ТС]     Нужно найти ошибку в списках
Toshkarik, спасибо огромное! Все заработало!

Добавлено через 30 минут
Может кому-то поможет, вот доработанный код:
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
#include <iostream>
#include <conio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
//структуры
struct Abc
{
    int key;
};
struct pt
{
    Abc a;
    pt *next;
};
 
//функции
void Print(pt *begin)
{
    pt *print=begin;
    while(print!=NULL)
    {
        cout<<print->a.key<<"->";
        print=print->next;
    }
    cout<<"NULL"<<endl;
}
pt* Ins_begin(pt *begin,Abc el)
{
    pt *new_begin;
    new_begin=new pt;
    new_begin->next=begin;
    new_begin->a=el;
    begin=new_begin;
    return begin;
}
pt* Ins_end(pt *end,Abc el)
{
    end->next=new pt;
    end=end->next;
    end->a=el;
    end->next=NULL;
    return end;
}
void Ins_midl(pt *begin,Abc el)
{
    pt *u,*t,*midl;
    midl=new pt;
    midl->a=el;
    u=begin;
    t=begin->next;
    while (el.key>t->a.key) {u=t; t=t->next;}
    u->next=midl;
    midl->next=t;
}
pt* Input(pt *begin,pt *end)
{
    Abc el;
    int n;
    cout<<"Сколько элементов в списке?"<<endl;
    cin>>n;
    cout<<"Введите "<<n<<" элементов списка:"<<endl;
    for(int i=0;i<n;i++)
    {
        cin>>el.key;
        if (begin==NULL){begin=Ins_begin(begin,el); end=begin;}
        else if (el.key<=begin->a.key) begin=Ins_begin(begin,el);
        else if (el.key>=end->a.key) end=Ins_end(end,el);
        else Ins_midl(begin,el);
    }
    return begin;
}
int main()
{
    setlocale(LC_ALL,"Russian");
    pt *begin=NULL,*end=begin;
    begin=Input(begin,end);
    Print(begin);
    _getch();
    return 0;
}
Добавлено через 8 минут
Ой, Input не возвращала новый адрес end, исправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
pt* Input(pt *begin,pt **end)
{
    Abc el;
    int n;
    cout<<"Сколько элементов в списке?"<<endl;
    cin>>n;
    cout<<"Введите "<<n<<" элементов списка:"<<endl;
    for(int i=0;i<n;i++)
    {
        cin>>el.key;
        if (begin==NULL){begin=Ins_begin(begin,el); (*end)=begin;}
        else if (el.key<=begin->a.key) begin=Ins_begin(begin,el);
        else if (el.key>=(*end)->a.key) (*end)=Ins_end((*end),el);
        else Ins_midl(begin,el);
    }
    return begin;
}
При вызове Input вместо end, нужно использовать его адрес в памяти.(&end)
 
Текущее время: 11:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru