Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Списки в с++

58K
24 марта 2010 года
AVT
3 / / 24.03.2010
Задача такая:
Цитата:
Задан список, елементами которого являются натуральные числа. Необходимо вставить в начало этого списка новый элемент, который введен с клавиатуры, и удалить из него последний элемент. (Очередь) Напечатать исходный и полученный списки.



Это моя попытка реализации(она не полная) просьба доделать и добавить комментарии, чтобы я в этом смог разобраться, тем более препод по каждой строчке спрашивает...

Код:
#include <iostream.h>
#include <conio.h>

struct cherg
 {char a;
  cherg *next;
 };
cherg *ch, *elem;

void stvorch(cherg *ch);
void delch(cherg *ch);
void vivedch(cherg *ch);
void vvodch(cherg *ch);

 void main()
{
  int x;
  clrscr();
  ch=NULL;
  stvorch(ch);
  cout<<"Chto vy hotite sdelat so STEKom? \n";
  cout<<"1.Udalit posledniy element\n";
  cout<<"2.Dobavit noviy element v nachalo\n";
  cin>>x;
  switch(x)
  {
   case 1:delch(ch);
   case 2:vvodch(ch);
   break;
  }
  vivedch(ch);
  getch();
  return;
}

void stvorch(cherg *ch)
{ char b;
  int c;
  c=-1;
  do
  {
   cout<<"enter the symbol: ";
   cin>>b;
   c++;
   elem=new(cherg);
   elem->next=ch;
   ch=elem;
   elem->a=b;
  }
  while(b!= '.');
  cout<<"Kilkist: "<<c<<"\n";
}

void vivedch(cherg *ch)
{
 cout<<"Nasha cherga: ";
 do
  {
   ch=elem->next;
   elem=ch;
   cout<<" "<<ch->a;
  }
 while(ch->next!=NULL);
}

void delch(cherg *ch)
{
 ch=elem->next;
 elem=ch;
 cout<<"vy vybrali element: "<<ch->a<<"\n";
}
11
24 марта 2010 года
oxotnik333
2.9K / / 03.08.2007
жесть
Цитата:
Это моя попытка реализации(она не полная) просьба доделать и добавить комментарии, чтобы я в этом смог разобраться,


угадал все буквы, а слово прочитать не смог
могу прокомментировать примерно так

55K
24 марта 2010 года
u.nu
16 / / 18.03.2010
Я тоже не врубился...
Вот тебе примерчик очереди, быть может не то что надо, но зато как стильно.
Код:
#include <iostream>
#include <conio.h>

using namespace std;

class CQueue
{
    int * queue; // указатель на массив эл. очереди
    int size; // переменная размера очереди

    void Init() // инициалицация массива
    {
        for(int n = 0; n < size; n++)
        {
            queue[n] = 0; // все элементы массива, по умолчанию равны 0
        }
    }
public:
    CQueue(int size) // конструскор с параметрами
    {
        this->size = size; // инициализация переменной класса
        queue = new int[size]; // соднание массива класса
       
        Init(); // вызов метода
    }
    ~CQueue() { delete [] queue; }; // деструктор, удаление массива класса

    void Add(int number) // метод добавления в очередь
    {
        for(int n = 1; n < size; n++)
        {
            queue[n - 1] = queue[n]; // замена предшествующего эл., на текущий
        }

        queue[size - 1] = number; // добавляемый эл. - последний
    }
    void Print() // метод отображения очереди
    {
        cout << "queue:\t";

        for(int n = 0; n < size; n++)
        {
            cout << queue[n] << ", ";
        }

        cout << "\b\b." << endl;
    }
};

void main()
{
    CQueue queue = CQueue(5); // создание экземпляра класса CQueue

    int tmp; // временная переменная

    while((tmp = _getch() - 48) != -21) // в лом описывать далее...
    {
        if (tmp < 0 || tmp > 9)
        {
            cout << "Inputs Only Numbers, For Quit - ESC." << endl;
             continue;
        }

        queue.Add(tmp);
        queue.Print();
    }
}
Используй стиль при написании кода, и тебя все поймут, и твой препод возможно пару балов сверху накинет.
87
24 марта 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: u.nu

 
Код:
while((tmp = _getch() - 48) != -21)
Используй стиль при написании кода, и тебя все поймут, и твой препод возможно пару балов сверху накинет.



А за это пару баллов откинет. Мало того, что "магические числа", так ещё и функция на в духе C++. Вполне хватило бы того, что есть в iostream.

58K
24 марта 2010 года
AVT
3 / / 24.03.2010
Так лучше?

Код:
#include <iostream.h>
#include <conio.h>

struct cherg  \\создаем структуру для очереди
 {char a;
  cherg *next;
 };
cherg *ch, *elem;

void stvorch(cherg *ch); \\процедура для создания очереди
void delch(cherg *ch);  \\процедура для удаления элемента очереди
void vivedch(cherg *ch);  \\процедура для вывода на экран очереди
void vvodch(cherg *ch);  \\процедура для ввода нового элемента очереди

 void main()
{
  int x;
  clrscr();
  ch=NULL;
  stvorch(ch);
  cout<<"Chto vy hotite sdelat so OCHEREDyu? \n"; \\выбор действия с очередью
  cout<<"1.Udalit posledniy element\n";
  cout<<"2.Dobavit noviy element v nachalo\n";
  cin>>x;
  switch(x)
  {
   case 1:delch(ch);
   case 2:vvodch(ch);
   break;
  }
  vivedch(ch);
  getch();
  return;
}

void stvorch(cherg *ch)  \\процедура создания очереди
{ char b;
  int c;
  c=-1;
  do
  {
   cout<<"enter the symbol: ";
   cin>>b;
   c++;
   elem=new(cherg);
   elem->next=ch;
   ch=elem;
   elem->a=b;
  }
  while(b!= '.');
  cout<<"Kilkist: "<<c<<"\n";
}

void vivedch(cherg *ch) \\процедура вывода на экран очереди
{
 cout<<"Nasha cherga: ";
 do
  {
   ch=elem->next;
   elem=ch;
   cout<<" "<<ch->a;
  }
 while(ch->next!=NULL);
}

void delch(cherg *ch)  \\удаление элемента очереди
{
 ch=elem->next;
 elem=ch;
 cout<<"vy vybrali element: "<<ch->a<<"\n";
}


Осталось написать процедуру ввода нового элемента очереди и сделать так чтобы все правильно работало..
58K
24 марта 2010 года
AVT
3 / / 24.03.2010
Лучше конечно что то новое написать, чем исправить мое...

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



Цитата:
Создать кольцевой список, елементами которого будут числа. Последовательно убирать каждое третье число. Подсчитать колличество убранных чисел. Вывести начальный список и список елементов, которые убираются.

55K
24 марта 2010 года
u.nu
16 / / 18.03.2010
Цитата:
А за это пару баллов откинет.

Конечно откинет, подразумевалась читабельность кода, а ни как его содержимое.

307
24 марта 2010 года
Artem_3A
863 / / 11.04.2008
Цитата: AVT
Лучше конечно что то новое написать, чем исправить мое...

Еще две задачки:



да вы, молодой человек, обнаглели, однако!0_о

А взять учебник, потратить пол часа и прочесть четыре страницы, прижать попу к стулу, посидеть два часа и написать самому не судьба?

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

87
24 марта 2010 года
Kogrom
2.7K / / 02.02.2008
Цитата: u.nu
подразумевалась читабельность кода, а ни как его содержимое.



Ну так "магические числа" и понижают читаемость. И сишные функции её не прибавляют. В остальном красиво, но эта деталь всё портит.

AVT, слеши не в ту сторону.

1
24 марта 2010 года
kot_
7.3K / / 20.01.2000
за три сообщения в форуме топикстартер получает по 10 баллов.
Соотвественно, тот кто ему помогал :) согласно правил раздела получает половину.
Обращаю внимание, что в подобных темах надо жать на кнопку "Сообщить модератору". Спасибо за внимание. Тема закрыта.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог