10 / 12 / 4
Регистрация: 22.10.2012
Сообщений: 120
1

Другие виды списков

21.12.2012, 22:48. Показов 1101. Ответов 1
Метки нет (Все метки)

Помогите найти и исправить ошибку в задачке
В текстовом файле заданы действительные числа. Выбрать из него убывающую последовательность наибольшей длины и вывести ее на экран. Если таких последовательностей несколько, то вывести их все в отдельной строке каждую.
Для заполнения убывающих последовательностей формировать массив очередей, хранить для каждой очереди длину ее (количество элементов)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iomanip.h>
#include <iostream.h>
#include <fstream.h>
#include <tchar.h>
#include <stdlib.h>
 
struct List
{
 int data;
 List *next;
};
 
typedef List* Lptr;
 
 
struct Queue
{
 Lptr first,last;
};
 
Queue *m;
int *n;
 
int outF(char namef[]);
void Qput(Queue&Q,int x);
int Qout(Queue&Q);
int ubiv_pos(char namef[]);
 
int _tmain(int argc, _TCHAR* argv[])
{
 int kol,i,j,max;
 
 outF("C:\\posled.txt");
 kol=ubiv_pos("C:\\posled.txt");
 ifstream F("C:\\posled.txt",ios::in);
 
 Queue Q1;
 Q1.first=Q1.last=NULL;
 
 max=n[0];
 j=0;
 for(i=1;i<kol;i++)
  if(n[i]<max)
   max=n[i];
 cout<<"Ibivayuachaya posledovatel'nost' naib dlini;"<<endl;
 for(i=0;i<kol;i++)
  {
   Q1=m[i];
   if(max==n[i])
    {
     while(Q1.first)
      cout<<Qout(Q1)<<' ';
     cout<<endl;
    }
  }
 
// Lptr Head;
// Head=NULL;
 
    getch();
    return 0;
}
 
int outF(char namef[])
{
 ifstream F(namef);
 float x;
 if(F.fail())
 {
  cout<<"Fayl ne nayden";
  getchar();
  return 0;
 }
 cout<<"Soderzhimoe fayla:"<<endl;
 while(!F.eof())
 {
  F>>x;
  cout<<x<<'\t';
 }
 F.close();
 return 1;
}
 
int ubiv_pos(char namef[])
{
 ifstream F(namef);
 float x,z;
 int k=1,dl=1;
 F>>z;
 Queue H;
 H.first=H.last=NULL;
 Qput(H,z);
 while(F>>x)
 {
  if(x<z)
   {
    Qput(H,x);
    z=x;
    dl++;
   }
  else
   {
    z=x;
    m[k-1]=H;
    n[k-1]=dl;
    dl=0;
    Queue H;
    H.first=H.last=NULL;
    Qput(H,x);
    k++;
   }
 }
 F.close();
 return k;
}
 
void Qput(Queue&Q,int x)
{
 Lptr tmp=new List;
 tmp->data=x;
 tmp->next=NULL;
 if (Q.last==NULL)
 {
  Q.first=Q.last=tmp;
  return;
 }
 Q.last->next=tmp;
 Q.last=tmp;
}
 
int Qout(Queue &Q)
{
 Lptr t=Q.first;
 int x=t->data;
 Q.first=t->next;
 if (Q.first==NULL)
  Q.last=NULL;
 delete t;
 return x;
}
Добавлено через 4 часа 51 минуту
нашол ошибку гдето здесь,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 while(F>>x)
 {
  if(x<z)
   {
    Qput(H,x);
    z=x;
    dl++;
   }
  else
   {
    z=x;
    m[k-1]=H;
    n[k-1]=dl;
    dl=0;
    Queue H;
    H.first=H.last=NULL;
    Qput(H,x);
    k++;
   }
 }
Помогите исправить
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2012, 22:48
Ответы с готовыми решениями:

Виды списков
Помогите разобраться! В чём разница между следующими вариантами списков ... - Реализация списков...

Rest и другие виды архитектуры
Неподскажете где рассказано понятно про rest ,или раскажите что такое rest своими словами.И...

Как реализовать другие виды запросов, доступные не только в момент разработки
имеется бд на access. К ней нужен интерфейс на С#. С подключением БД, выводом таблиц и...

Дан список, который может содержать как элементы, так и другие списки. Найти max число идущих подряд списков
Доброго времени суток. Помогите решить задачу: дан список, который может содержать как элементы,...

1
10 / 12 / 4
Регистрация: 22.10.2012
Сообщений: 120
12.05.2013, 18:17  [ТС] 2
вот правельный код может кому пригодится
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
117
118
119
120
121
122
123
124
125
126
127
128
129
#include<conio.h>
#include<stdlib.h>
#include<iostream>
#include<fstream>
#include<iomanip>
#include<time.h>
using namespace std;
struct List
{
 int data;
 List *next;
};
 
typedef List* Lptr;
 
 
struct Queue
{
 int count;
 Lptr first,last;
};
 
Queue m[10];
 
int outF(char namef[]);
void Qput(Queue&Q,int x);
int ubiv_pos(char namef[]);
void show(Queue &Q);
 
int main()
{
 int kol,i,max,j;
 Queue maxo;
 
 outF("posled.txt");
 kol=ubiv_pos("posled.txt");
 ifstream F("posled.txt",ios::in);
 
 Queue Q1;
 Q1.first=Q1.last=NULL;
 
 max=m[0].count;
 for(i=1;i<kol;i++)
  if(m[i].count>max)
   {
    max=m[i].count;
    j=i;
   }
 cout<<endl<<endl<<"Ibivayuachaya posledovatel'nost' naib dlini: "<<max;
 cout<<endl<<endl<<m[j].first<<" "<<"Posled-t':"<<endl;
 show(m[j]);
    getch();
    return 0;
}
 
int outF(char namef[])
{
 ifstream F(namef);
 float x;
 if(F.fail())
 {
  cout<<"Fayl ne nayden";
  getchar();
  return 0;
 }
 cout<<"Soderzhimoe fayla:"<<endl;
 while(!F.eof())
 {
  F>>x;
  cout<<x<<'\t';
 }
 F.close();
 return 1;
}
 
int ubiv_pos(char namef[])
{
 ifstream F(namef);
 float x,z;
 int k=1,i;
 F>>z;
 Queue H;
 H.first=H.last=NULL;
 Qput(H,z);
 while(F>>x)
 {
  if(x<z)
   {
    Qput(H,x);
    z=x;
   }
  else
   {
    z=x;
    m[k-1]=H;
    H.first=H.last=NULL;
    Qput(H,x);
    k++;
   }
 }
 F.close();
 return k;
}
 
void Qput(Queue&Q,int x)
{
 Lptr tmp=new List;
 tmp->data=x;
 tmp->next=NULL;
 if (Q.last==NULL)
 {
  Q.first=Q.last=tmp;
  Q.count=1;
  return;
 }
 Q.last->next=tmp;
 Q.last=tmp;
 Q.count++;
}
 
void show(Queue &Q)
{
 Lptr t=Q.first;
 while(t)
 {
  cout<<t->data<<' ';
  t=t->next;
 }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2013, 18:17
Помогаю со студенческими работами здесь

Как сложить сумму из чисел сотен списков и узнать количество списков?
Доброго времени суток! Не могу понять как сложить сумму из несколько тысяч списков. Подскажите...

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

Копирование данных двумерного массива состоящего из списков в список списков.
Для нахождения МСТ (минимального остового дерева) написал функцию, которая принимает масив - гарф....

Перестановка списков заданных уровней, учитывая промежуточное состояние списков
Написать программу перестановки списков заданных уровней, учитывая промежуточное состояние списков....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru