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

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

Восстановить пароль Регистрация
 
alexminin007
 Аватар для alexminin007
7 / 7 / 1
Регистрация: 22.10.2012
Сообщений: 105
21.12.2012, 22:48     Другие виды списков #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++;
   }
 }
Помогите исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2012, 22:48     Другие виды списков
Посмотрите здесь:

Какие виды сортировки бывают C++
Виды файлов в С++ C++
C++ Виды ошибок.
Виды наследования С++ C++
Какие бывают виды указателей C++
C++ контейнеры STL и виды деревьев
C++ Виды new & delete
Виды полиморфизма C++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexminin007
 Аватар для alexminin007
7 / 7 / 1
Регистрация: 22.10.2012
Сообщений: 105
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;
 }
}
Yandex
Объявления
12.05.2013, 18:17     Другие виды списков
Ответ Создать тему
Опции темы

Текущее время: 16:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru