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

Цикические однсвязные списки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сравнение 3 чисел http://www.cyberforum.ru/cpp-beginners/thread1055154.html
Всем привет)) В колледже задали задание: написать программу, которая сравнивает 3 числа. Три варианта я сделал: #include <iostream> using namespace std; int main() { int x, y, z, Max; cout << "Введите число x: ";
C++ Написать функцию сортировки элементов двухмерного массива Помогите написать код. Опишите функцию сортировки элементов линейного массива. С помощью этой функции составьте программу, которая упорядочивает по убыванию элементы рядков двухмерного массива. Добавлено через 1 час 34 минуты :-) http://www.cyberforum.ru/cpp-beginners/thread1055150.html
C++ Пятиминутное дело!В чем ошибка?
В первой строке дано неотрицательное число N- количество элементов массива (N<=100). Во второй строке дано число b Заполнить массив элементами равными частному от деления индекса элемента массива на число b. Элементы массива дробные числа В чем ошибка? #include<stdio.h> #include<conio.h> main() {
Циклы и условие C++
Доброго времени суток,прошу помочь написать программу на VS 2005 которая бы в включала цикл и условие. Программа для покейлки обоев 3 комнатной квартире #include <iostream> // Библиотека using std::cout; // Вывод текста на экран using std::cin; // Ввод текста с клавиатуры using std::endl; // Переход на новую строчку int main() { double height=0.0, width=0.0, length=0.0;
C++ Преобразовать каждое слово в строк, заменив в нем все предыдущие вхождения его последней буквы на символ «.» http://www.cyberforum.ru/cpp-beginners/thread1055132.html
Дана строка, состоящая из слов, набранных заглавными бук-вами и разделенных пробелами (одним или несколькими). Преобразо-вать каждое слово в строк, заменив в нем все предыдущие вхождения его последней буквы на символ «.» (точка). Например, слово «МИ-НИМУМ» надо преобразовать в «.ИНИ.УМ». Количество пробелов между словами не изменять.
C++ На чем писать графику? Доброго времени суток. Учу и практикую с++, естественно пробовал приступать к изучению OpenGL, но недавно видел, что с ним работать неудобно из-за его примитивности и низкоуровневости, другое дело sdl, sfml или даже qt. Так что же учить и в чем преимущества каждого? Вообще мне все же кажется что OpenGL лучше и надежнее, чем что то другое. Тему создал здесь, т.к. в теме по графике ответов не... подробнее

Показать сообщение отдельно
KDG94
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 32
24.12.2013, 18:55     Цикические однсвязные списки
Всем доброго времени суток. Очень нужна ваша помощь. Дана задачка. Немного не получается удаление элементов. Прогу писал в вижуал с++. Прилагаю код.
N ребят располагаются по кругу. (задать в качестве элементов списка имена). Начав отсчет от первого, удаляют согласно считалке каждого j-го, смыкая при этим круг. Определить порядок удаления ребят из круга, выводя на экран имя и порядковый номер удаляемого. Выполнить ввод данных с клавиатуры, организовав циклический список. Предусмотреть ввод текста считалки, после чего подсчитывается число слов в ней (j).
Все работает, кроме удаления... Передвигаться по списку можно только вперед, tmp->prew использовать нельзя
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
#include "stdafx.h"
#include<iostream>
#include<conio.h>
#include<string.h>
#include<locale>
#include<iomanip>
#include<stdlib.h>
using namespace std;
 
class List
 { public:
struct dlist
{
 char x[10];
 int nomer;
 dlist *Next;
};
   dlist *Head,*Tail;
   int size; //кол-во элементов в списке
  
       List():Head(NULL),Tail(NULL),size(0){}; //обнулил
       void Add(char x[10], int nomer); 
       void Show();
    //   void del(int pos);
 };
 
void List::Add(char x[10], int nomer)
  {
      size++; 
      dlist  *temp=new dlist; 
      temp->Next=Head; //последний элемент - это начало списка 
      strcpy(temp->x,x); //Записываем
      temp->nomer=nomer;
      if (Head!=NULL) //В том случае если список не пустой
         {
            Tail->Next=temp; //Запись данных в следующее за последним элементом поле
            Tail=temp; //Последний активный элемент=только что созданный.
         }
               else 
                   Head=Tail=temp;//Если список пуст то создается первый элемент.
      temp->nomer=size;
}
 
void List::Show()
 {
    int i=size;
    if(Head==NULL)
        {
             cout<<"Список пуст"<<endl;
             return;
        }
    dlist* tmp = Head;
    cout<<"Вывод: "<<endl;
    while(i!=0)
      {
          cout<<"Имя: "<<tmp->x<<"  Номер: "<<tmp->nomer<<endl;
          tmp=tmp->Next;
          i--;
      }
 }
 
int _tmain(int argc, _TCHAR* argv[])
{
    List l;
    char ch,x[10], ss[100][12]; 
    int i,j,N,R=0,k;
    setlocale(LC_ALL,"Russian");
    cout<<"Введите количество детей: ";
    cin>>N;
    cout<<endl;
    for (i=0;i<N;i++)
        {
            cout<<"ИМЯ РЕБЕНКА: "<<endl;
            cin>>x;
            l.Add(x,i);
        }
    l.Show();
    //====== ЭТОТ КУСОК ПРОГРАММЫ ВВОДИТ И ВЫВОДИТ СЧИТАЛКУ И КОЛИЧЕСТВО СЛОВ НЕЙ =====
    cout<<"Введите считалку до 100 слов (в конце через пробел поставьте #): \n";
    j=0;
    while(1)
      {
         cin.get(ch);
         if(ch=='#') 
             break;
         i=0;
         while(ch!=' ')
            {
               ss[j][i++]=ch;
               cin.get(ch);
            }
         ss[j][i]='\0';
         j++;
       }
     cout<<"Количество слов: "<<j<<endl;
//=======================================================
    i=l.size;k=0;
    List::  dlist* tmp =  l.Head;
    List::  dlist* temp = tmp->Next;
    while(i!=0)//пока не кончатся дети
      { 
        for(k=1;k<j;k++) //пока не прошли все сова в считалке
           {
               tmp=tmp->Next; // двигаемся вперед и выбираем УДАЛЯЕМЫЙ ЭЕМЕНТ
               temp=tmp->Next;      //след. за удаляемым
           }
           cout<<"Удаляю: "<<endl<<"Имя: "<<tmp->x<<" Номер: "<<tmp->nomer<<endl;//вывод что удаляем
           delete tmp;
           tmp=temp;//переходим на следующий после удаленного
          
        i--;
      } 
//=================================================================================
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru