Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическая однонаправленная списочная структура, Динамическая однонаправленная  
V
    Опции темы
red2
Дата 14.5.2013, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.5.2013

Репутация: нет
Всего: нет



Код

#include <iostream>
#include <conio.h>
#include <stdlib.h>

 struct ilist              // Создание списочной структуры
 {
  float num;      // Объявление переменной 
  ilist *next;             // Указатель на следующей список
 };

 ilist* find_pos(ilist *&il, int k); // Инициализация функции поиска позиции k


// Добавление (вставка) элемента в начало списка
 void insert_begin(ilist *&il, float k)
 {
   ilist *r = new ilist;
   r->num = k;
   r->next=il;
   il=r;
 }

// Удаление первого элемента: второй становится началом
 float del_begin(ilist *&il)
 {
   ilist *r=il;
   float x=r->num;
   il=r->next;
   return x;
 }

// Вставка или добавление элемента в середину списка
 float insert_middle(ilist *&il, int k, float nm)
 {
   ilist* lst = find_pos(il, k-1); // Элемент списка распологается перед местом
вставки
   ilist* lst1 = lst-> next; // Элемент списка распологается после места
вставки
   ilist* tmpList = new ilist; // Создаётся новый элемент списка
   tmpList->num = nm;
   tmpList->next = lst1;
   lst->next = tmpList;
   return(0);
 }

// Удаление элемента из середины списка
 float del_middle(ilist *&il, int k)
 {
   if(k<=1) // Если k=1, то происходит удаление первого элемента
    {
      del_begin(il);
      return(0);
    }
    ilist* lst = find_pos(il, k - 1); // Последний элемент помещается перед
удаляемым
    ilist* lst1 = lst -> next; // Удаляемый элемент
    float x = lst1->num;
    lst1 = lst1->next; // Определение следующего после удаляемого
    lst->next = lst1; // Он делается следующим вместо удаляемого
    return(x);
 }


// Вставка или добавление элемента в конец списка
 float ins_end(ilist *&il, float nm)
 {
  ilist* lst = il;
  while (lst->next)    // Отыскание последнего элемента
  lst = lst->next;
  ilist* lst1 = new ilist; // Создание вставляемого элемента
  lst1->num = nm;
  lst1->next = NULL;
  lst->next = lst1; // Его вставка
  return(0);
 }

// Удаление последнего элемента с конца списка
 float del_end(ilist *&il)
 {
  ilist* lst = il;
  ilist* lst1 = il;
  while (lst->next) // Отыскание последнего и предпоследнего элементов
  {
    lst1 = lst;
    lst = lst->next;
  }
  lst1->next = NULL; // Предпоследний элемент списка делается последним
  float x=lst->num;
  return(x);
 }

// Поиск элемента с данным номером
 ilist* find_pos(ilist *&il, int k)
 {
  ilist* lst = il;
  for (int i = 1; i<k; i++)
  lst = lst->next;
  return(lst);
 }

// Печать списка
 float print_list(ilist *&lst)
 {
  if(!lst) return(0);
  cout << lst->num << '    ';
  ilist* nlst;
  nlst=lst->next;
  while (nlst)
  {
   float k=nlst->num;
   cout << k << '    ';
   nlst=nlst->next;
  }
  cout << endl;
  return(0);
 }

// Ввод вещественного(ых) числа(ел)
 float ninp()
 {
  float n;
  cout << "Введите вещественное число - ";
  cin >> n;
  return(n);
 }


// Ввод списка
 ilist* linp()
 {
  ilist* lst = NULL;
  float n;
  cout << "Введите список вещественных чисел через пробел. Для окончания введите";
  cout << " введите отрицательное число.";
  cin >> n;
  while (n>=0.f)
  {
   insert_begin(lst, n);
   cin >> n;
  }
  return(lst);
 }

// Удаление всех элементов равных данному
 float del_all(ilist *&il, float n)
 {
   ilist* lst;
   if (il->next == NULL) // Если элемент последний, то
   {
    if (il->num == n) // в случае, когда он равен n
    il = NULL;    // он удаляется
    return(0);
   }
   if (il->num == n) // Если n – первый, он выбрасывается 
   il = il -> next; 
   lst = il->next;
   del_all(lst, n); // Операция повторяется рекурсивно с хвостом
   il->next = lst; // списка и он присоединяется к началу
   return(0.f);
 }

 int main()
 {
  clrscr();
  int n, k;
  float num;
  ilist* lst = NULL;
// Параметры экрана
  struct text_info ti;
  gettextinfo(&ti);
  int WL = ti.winleft;
  int WR = ti.winright;
  int WT = ti.wintop;
  int WB = ti.winbottom;

// Меню программы
  cout << "1. Создать список.";
  cout << "2. Добавить элемент.";
  cout << "3. Удалить элемент из начала.";
  cout << "4. Добавить элемент в позицию k.";
  cout << "5. Удалить элемент из позиции k.";
  cout << "6. Добавить элемент в конец .";
  cout << "7. Удалить элемент в конце .";
  cout << "8. Печать списка.";
  cout << "9. Удаление всех элементов равных данному.";
  cout << "10. Выход.";
// Часть экрана (окно) для вывода результатов window(WL, WT+10, WR, WB);



 // Выполнение операций над списком
 while(1)
  {
   cout << "Введите номер действия - ";
   cin >> n;
   switch(n)
   {
    case 1:
     lst=linp();
     break;

    case 2:
     num = ninp();
     insert_begin(lst, num);
     break;

    case 3:
     del_begin(lst);
     break;

    case 4:
     cout << "Введите номер позиции ";
     cin >> k;
     num = ninp();
     insert_middle(lst, k, num);
     break;

    case 5:
     cout << "Введите номер позиции ";
     cin >> k;
     cout << endl << " Удаляется " << find_pos(lst,
k)->num << endl;
     del_middle(lst, k);
     break;

    case 6:
     num = ninp();
     ins_end(lst, num);
     break;

    case 7:
     del_end(lst);
     break;

    case 8:
     break;

    case 9:
     num = ninp();
     del_all(lst, num);
     break;

    default:
     return(1);
  }

  print_list(lst);
  cout << "Нажмите кнопку Enter";
  getch();
 }
}


Выдает мне такие ошибки. В чем может быть проблема?
user posted image
PM MAIL   Вверх
Guinness
Дата 14.5.2013, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



Начнем с этого:
Код

using namespace std;

или везде
Код

std::cout << ... ;

PM MAIL   Вверх
bsa
Дата 14.5.2013, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




 ! 
bsa
прекращаем постить скриншоты
Если надо процитировать список ошибок, то просто скопипасть его и заключи в блок quote.
PM   Вверх
red2
Дата 14.5.2013, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.5.2013

Репутация: нет
Всего: нет



Прописал using namespace std. Компилятор перестал ругаться cin и cout. Но остальные ошибки остались.
В основном ругается на этот код.
Код

int main()
 {
  clrscr();
  int n, k;
  float num;
  ilist* lst = NULL;
// Параметры экрана
  struct text_info ti;
  gettextinfo(&ti);
  int WL = ti.winleft;
  int WR = ti.winright;
  int WT = ti.wintop;
  int WB = ti.winbottom;

Вот ошибки.
Цитата

Ошибка 1  error C3861: clrscr: идентификатор не найден    
Ошибка 2  error C2079: "ti" использует неопределенный struct "main::text_info"   
Ошибка 3  error C3861: gettextinfo: идентификатор не найден    
Ошибка 4  error C2228: выражение слева от ".winleft" должно представлять класс, структуру или объединение    
Ошибка 5  error C2228: выражение слева от ".winright" должно представлять класс, структуру или объединение   
Ошибка 6  error C2228: выражение слева от ".wintop" должно представлять класс, структуру или объединение    
Ошибка 7  error C2228: выражение слева от ".winbottom" должно представлять класс, структуру или объединение    
Ошибка 9  IntelliSense: недопустимый неполный тип   
Ошибка 8  IntelliSense: идентификатор "clrscr" не определен    
Ошибка 10 IntelliSense: идентификатор "gettextinfo" не определен    
Ошибка 11 IntelliSense: недопустимый неполный тип   
Ошибка 12 IntelliSense: недопустимый неполный тип    
Ошибка 13 IntelliSense: недопустимый неполный тип    
Ошибка 14 IntelliSense: недопустимый неполный тип      



Это сообщение отредактировал(а) red2 - 14.5.2013, 12:04
PM MAIL   Вверх
Guinness
Дата 14.5.2013, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: 2
Всего: 10



clrscr: читаем
Код

struct text_info ti;

Вы этим чего хотели добиться?

Это сообщение отредактировал(а) Guinness - 14.5.2013, 12:15
PM MAIL   Вверх
baldina
Дата 14.5.2013, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



удалите лишнее (про clrscr и ti), замените одинарные кавычки двойными

Добавлено через 1 минуту и 35 секунд
Цитата(red2 @  14.5.2013,  08:12 Найти цитируемый пост)
 В чем может быть проблема?

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

Добавлено через 2 минуты и 10 секунд
а код условно рабочий: http://ideone.com/HPJxaW
PM MAIL   Вверх
red2
Дата 14.5.2013, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.5.2013

Репутация: нет
Всего: нет



Спасибо большое. Все заработало.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0697 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.