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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alexminin007
9 / 9 / 1
Регистрация: 22.10.2012
Сообщений: 114
#1

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

21.12.2012, 22:48. Просмотров 593. Ответов 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++
error C2109: subscript requires array or pointer type Что это озночает и как исправить?

Виды полиморфизма C++ - C++
Разбираю полиморфизм. Наткнулся на классификацию с тремя видами:1.специальный, 2.параметрический и 3.подтипов(включения). Все ли...

Виды наследования С++ - C++
Построить класс статистическая выборка числовых величин со свойствами: количество элементов выборки, массив элементов выборки и методами:...

Виды конструкторов - C++
Какие конструкторы существуют в С++? Инфу с вики читал, но почему то все равно ответ не верен. Варианты ответа: 1) Копирования ...

Виды new & delete - C++
Тестовый вопрос, но я как-то не сильно в нем разобрался. В гугле искал. Буду благодарен за помощь. Вот, собственно, вопросы (2), выбрать...

Какие виды сортировки бывают - C++
Какие виды сортироыуи бывают на с++ и команды

Какие бывают виды указателей - C++
Какие бывают виды указателей а то что не могу найти надо 4 вида.

Контейнеры STL и виды деревьев - C++
подскажите, или покажите где есть эта информация например я знаю, что контейнеры map и set реализованы через красно-черное дерево через...

Возможные виды файлового ввода\вывода в С++ - C++
Здравсвуйте, уважаемые форумчане.Возникло пару вопросов касательно файлового ввода\вывода в С++. Итак, я не так давно начал постигать...

Ввод и вывод цен на разные виды товаров - C++
а ) Напишите инструкцию ввода и вывода цен на три вида товара в формате Название товара - цена ( переменная типа float ) б) Выведем...

Найти все виды суммирования заданного числа (рекурсия) - C++
Доброй ночи, задача такая, есть задачи и их нужно сделать на двух разных языках на С++ и Pascal, на паскале сделал, при переписи её на С++...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru