Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
#1

последовательность "пила" - C++

08.02.2012, 22:39. Просмотров 746. Ответов 3
Метки нет (Все метки)

помогите, пожалуйста, написать код, который бы помог мне в решении этой >>>>>миссия - f: сигма1(Z) -> N0. вроде это индуктивные функции<<<<< задачи
честно уже 3 дня мучаю, но ничего не получается. точнее получается, но не правильно

вот все мои попытки:

Попытка 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
#include <iostream>
#include <fstream>
using namespace std;
 
void mission()
{
 cout << "Задание: \tВывести на экран количество отрезков с заданным свойством "
      << endl << "\t\tf: сигма1(Z) -> N0. Свойство - \"пилообразный\", т.е. "
      << endl << "\t\tкаждый элемент является строгим локальным минимумом "
      << endl << "\t\tили максимумом."; 
}
 
void test()
{
 float x;
 cout << endl << "Последовательность: ";
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 while(true)
 {
  input >> x;
  if(!input.eof())
  {
   cout << x << " ";  
  }  
  else 
   break;
 }  
}
 
 
void processing()
{
 float x,
       v = 0,
       c = 0;
 int col_s = 0;
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 
 ofstream output("/media/wind/forlabs/2_sem/l1/output.txt");
 output << "| x |      кол-во элементов       |";
 
 while(!input.eof())
 {
  int col_e = 0;
  input >> x;
   {
    v = x;
    col_e++;
    output << endl << "| " << x << " |    " << col_e << "|";
   }
  input >> x;
   {
    if((x > v)||(x < v))
    {
     c = x;
     col_e++;  
     output << endl << "| " << x << " |    " << col_e << "|"; 
    }
   }
  while(!input.eof())
  {
   input >> x;
   {
    if((c > v)&&(c > x))
    {
     v = x;
     col_e++;
     output << endl << "| " << x << " |    " << col_e << "|";
    }
    if((c < v)&&(c < x))
    {
     v = x;
     col_e++;
     output << endl << "| " << x << " |    " << col_e << "|";  
    }
    else
    {
     col_s++;
     output << " отрезок закончен ";
     break;
    }
   }
   input >> x;
    {
     if((v < c)&&(v < x))
     {
      c = x;
      col_e++;
      output << endl << "| " << x << " |    " << col_e << "|";
     }
     if((v > c)&&(v > x))
     {
      c = x;
      col_e++;
      output << endl << "| " << x << " |    " << col_e << "|";  
     }
     else
     {
      col_s++;
      output << endl << "| " << x << " |    " << col_e << "|"
             << endl << "        отрезок закончен ";
      break;
     }
    }  
  }
 } 
output << endl << "Количество отрезков: " << col_s;
cout << endl << "Количество отрезков: " << col_s;
output.close();
input.close();
}
 
int main()
{
  mission();
  test();
  processing();
return 0;
}
Попытка 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
#include <iostream>
#include <fstream>
using namespace std;
 
void mission()
{
 cout << "Задание: \tВывести на экран количество отрезков с заданным свойством "
      << endl << "\t\tf: сигма1(Z) -> N0. Свойство - \"пилообразный\", т.е. "
      << endl << "\t\tкаждый элемент является строгим локальным минимумом "
      << endl << "\t\tили максимумом."; 
}
 
 
 
void processing(int *col_s)
{
 float x,
       v = 0,
       c = 0;
 *col_s = 0;
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 
 ofstream output("/media/wind/forlabs/2_sem/l1/output.txt");
 output << "| x |      кол-во элементов       |";
 
 while(!input.eof())
 {
  int col_e = 0;
  input >> x;
   v = x;
   col_e++;
   output << endl << "| " << x << " |    " << col_e << "|";
  input >> x;
   if(x != v)
   {
    c = x;
    col_e++;  
    output << endl << "| " << x << " |    " << col_e << "|"; 
   }
   else
   {
    output << endl << "| " << x << " |    " << col_e << "|"
           << endl << "| отрезок закончен |"; 
    break;  
 
  while(!input.eof())
  {
   input >> x;
   if(((c > v)&&(c > x))||((c < v)&&(c < x)))
   {
    v = x;
    col_e++;
    output << endl << "| " << x << " |    " << col_e << "|"; 
   }
   else
   {
    output << endl << "| " << x << " |    " << col_e << "|"
           << endl << "| отрезок закончен |";
    *col_s++;
    break;
   }
   input >> x;
    if(((v < c)&&(v < x))||((v > c)&&(v > x)))
    {
     c = x;
     col_e++;
     output << endl << "| " << x << " |    " << col_e << "|";   
    }
    else
    {
     output << endl << "| " << x << " |    " << col_e << "|"
            << endl << "|        отрезок закончен |";
     *col_s++;  
     break;
    }
  }
  } 
output << endl << "Количество отрезков: " << *col_s;
output.close();
input.close();
}
 
 
 
int main()
{
  int col=0;
  mission();
  processing(&col);
  cout << endl << "Loading... Результат работы программы расположен по адресу "
       << endl << "/media/wind/forlabs/2_sem/l1/output.txt";
  cout << endl << endl << "Программа завершила работу."<< endl <<"Количество отрезков: " << col <<endl<<"Можете закрыть консоль.";
return 0;
}
Попытка 3:
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 <iostream>
#include <fstream>
using namespace std;
 
 
 
void test()
{
 float x;
 
 cout << "Последовательность: ";
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 while(true)
 {
  input >> x;
  if(!input.eof())
  {
   cout << x << " ";     
  }
  else
  {
   break;  
  }
 }  
}
 
 
 
void processing()
{
 float now = 0, 
       v = 0,
       c = 0;
 int col_e = 0,
     col_s = 0;
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 ofstream output("/media/wind/forlabs/2_sem/l1/output.txt");
 
 cout << endl << "| x | кол-во элементов |";
 output << "| x | кол-во элементов |";
 
 while(true)
 {
  col_e = 0;
  input >> now;
   if(!input.eof())
   {
    v = now;
    col_e++;   
    cout << endl << "| " << now << " | " << col_e << " |";
    output << endl << "| " << now << " | " << col_e << " |";
   }     
   else
   {
    cout << endl << " >>>> не отрезок <<<<< ";
    output << endl << " >>>> не отрезок <<<<< ";
    continue;   
   }
  input >> now;
   if(!input.eof())
   {
    if(v != now)
    {
     c = now;
     col_e++;
     cout << endl << "| " << now << " | " << col_e << " |";
     output << endl << "| " << now << " | " << col_e << " |";   
    }   
    else
    {
     cout << endl << " >>>>> не отрезок <<<<< ";
     output << endl << " >>>>> не отрезок <<<<< ";
     continue;  
    }
   } 
   else
   {
    break;   
   } 
  
  while(true)
  {
   input >> now;
    if(!input.eof())
    {
     if(((c<v)&&(c<now))||((c>v)&&(c>now)))
     {
      col_e++;
      cout << endl << "| " << now << " | " << col_e << " |";
      output << endl << "| " << now << " | " << col_e << " |";  
      v = now; 
     }  
     else
     {
      col_e++;
      col_s++;
      cout << endl << "| " << now << " | " << col_e << " |"
           << endl << " >>>>> конец отрезка <<<<<< ";
      output << endl << "| " << now << " | " << col_e << " |"
             << endl << " >>>>> конец отрезка <<<<<< ";
      continue;  
     }
    }
    else
    {
     break; 
    }
   input >> now;
    if(!input.eof())
    {
     if(((v>c)&&(v>now))||((v<c)&&(v<now)))
     {
      col_e++;
      cout << endl << "| " << now << " | " << col_e << " |";
      output << endl << "| " << now << " | " << col_e << " |";  
      c = now; 
     }  
     else
     {
      col_e++;
      col_s++;
      cout << endl << "| " << now << " | " << col_e << " |"
           << endl << " >>>>> конец отрезка <<<<<< ";
      output << endl << "| " << now << " | " << col_e << " |"
             << endl << " >>>>> конец отрезка <<<<<< ";
      continue;  
     }
    }
    else
    {
     break; 
    }   
  }
 }  
}
 
 
 
int main()
{
 test();
 processing();  
}
Попытка 4:
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
#include <iostream>
#include <fstream>
using namespace std;
 
 
 
void test()
{
 float x;
 cout << "Последовательность: ";
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 while(true)
 {
  input >> x;
  if(!input.eof())
  {
   cout << x << " ";  
  }  
  else 
   break;
 }  
}
 
 
 
void processing()
{
 float now = 0,
        _1st = 0,
        _2th = 0;
 int col_e = 0,
     col_s = 0;
 
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 ofstream output("/media/wind/forlabs/2_sem/l1/output.txt");
 
 cout << endl << "| x | кол-во эл. |";
 output << endl << "| x | кол-во эл. |";
 
 while(!input.eof())
 {
  input >> now;
  {
   col_e++;
   _1st = now;
   cout << endl << "| " << now << " | " << col_e << " |";
   output << endl << "| " << now << " | " << col_e << " |";
   cout << " <- начало отрезка";
  } 
  input >> now;
  {
   if(now != _1st)
   {
    col_e++;
    _2th = now;
    cout << endl << "| " << now << " | " << col_e << " |";
    output << endl << "| " << now << " | " << col_e << " |";   
   }  
  }      
  input >> now;
  {
   if((_2th > now)&&(_2th > _1st))
   {
    col_e++;
    cout << endl << "| " << now << " | " << col_e << " |";
    output << endl << "| " << now << " | " << col_e << " |";
    _1st = now;   
   }  
   if((_2th < now)&&(_2th < _1st))
   {
    col_e++;
    cout << endl << "| " << now << " | " << col_e << " |";
    output << endl << "| " << now << " | " << col_e << " |";
    _1st = now;   
   }
   else
   {
    col_e = 0;
    cout << "отрезок окончен";
    col_s++;   
    continue;
   }  
  }
  input >> now;
  {
   if((_1st > now)&&(_1st > _2th))
   {
    col_e++;
    cout << endl << "| " << now << " | " << col_e << " |";
    output << endl << "| " << now << " | " << col_e << " |";
    _2th = now;   
   }  
   if((_1st < now)&&(_1st < _2th))
   {
    col_e++;
    cout << endl << "| " << now << " | " << col_e << " |";
    output << endl << "| " << now << " | " << col_e << " |";
    _2th = now;   
   }
   else
   {
    col_e = 0;
    cout << "отрезок окончен";
    col_s++;   
    continue;   
   }  
  }
  
 }
cout << endl << endl << "Количество отрезков, обладающих заданным свойством: " << col_s;
output.close();
input.close();
}
 
 
 
int main()
{
 test();
 processing();
return 0;   
}

Попытка 5:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
 float now = 0,
       _1st = 0,
       _2th = 0,
       max = 0,
       min = 0;
 int col_s = 0,
     col_e = 0;
 
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 
 
 while(!input.eof())
 {
  input >> now;
  {
   _1st = now;
  }
  input >> now;
  {
   if(now != _1st)
   {
    _2th = now;   
   }      
   else
   {
    continue;   
   }
  }
  input >> now;
  if(_2th < _1st)
  {
   if(now > _2th)
   {
    _1st = now;   
   }  
   else
   {
    col_s++;
    continue;   
   }
  }
  else
  {
   if(now < _2th)
   {
    _1st = now;   
   }  
   else
   {
    col_s++;
    continue;   
   }
  }  
 }
 cout << col_s;
 input.close();         
}
Попытка 6:
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
#include <iostream>
#include <fstream>
using namespace std;
 
void processing()
{
 float now = 0, 
       _1st = 0, 
       _2th = 0;
 int col_s = 0;
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 while(!input.eof())
 {
  input >> now;
  {
   _1st = now;
  }
  input >> now;
   {
    if(now != _2th)
    {
     _2th = now;      
    }
    else continue;
   }
  
  while(!input.eof())
  {
   input >> now;
    if(((_2th < now)&&(_2th < _1st))||((_2th > now)&&(_2th > _1st)))
    {
     _1st = now;   
    }  
    else
    {
     col_s++;
     break;   
    }
   
   input >> now;
    if(((_1st < now)&&(_1st < _2th))||((_1st > now)&&(_1st > _2th)))
    {
     _2th = now;   
    }
    else
    {
     col_s++;
     break;   
    }
   }
  } 
cout << "Количество секторов с заданным свойством: " << col_s;
input.close();
}
 
int main()
{
 processing();
return 0;   
}
так же вкладываю вариант файла input.txt (может кому-то надо будет)
спасибо заранее за помощь
0
Вложения
Тип файла: txt input.txt (36 байт, 17 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2012, 22:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос последовательность "пила" (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Проверить, образуют ли числа симметричную последовательность (варианты ответа "Yes" или "No") - C++
на с++ помогите исправить код #include &lt;iostream&gt; using namespace std; int main() { int n,i; int a;

Каждую последовательность символов"АBC" заменить на"ALPHABET" - C++
ввести строку.Создать другую строку из символов введенной, где каждую последовательность символов&quot;АBC&quot; заменить на&quot;ALPHABET&quot; пример...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

3
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
08.02.2012, 22:45 #2
Kirill Losev, прикинь, если так каждый попытается ?
1
x1Mike7x
218 / 131 / 6
Регистрация: 06.11.2010
Сообщений: 234
09.02.2012, 00:02 #3
Может поможет:
Вот есть задача поиска самой большой пилообразной подпоследовательности:
Вот одно из решений: http://codepad.org/UD06SMlc
Если тебе надо найти, или есть твоя введенная последовательность пилообразной, то в конце просто проверь, или результат вычислений == размеру последовательности.
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
12.02.2012, 20:47  [ТС] #4
x1Mike7x, спасибо

Добавлено через 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
#include <iostream>
#include <fstream>
using namespace std;
 
 
void test()
{
 float x;
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 cout << "последовательность: ";
 while(!input.eof())
 {
  input >> x;
  cout << x << " ";      
 }
 input.close();
}
 
 
void processing()
{
 float x=0,
       y=0,
       c=0;
 int col_s=0,
     col_e=0,
     num=1;
 
 ifstream input("/media/wind/forlabs/2_sem/l1/input.txt");
 while(!input.eof())
 {
  input >> x; cout<<endl<<num++;
  y = x;
  input >> x; cout<<endl<<num++;
  if(x!=y)
  {
   c=x; 
  }  
  else  
  {
   cout << "     новые точки равны";
   continue;
  } 
    
  while(!input.eof())
  {
  //-------
  input >> x; cout<<endl<<num++;
  if(((c<x)&&(c<y))||((c>x)&&(c>y)))
  {
   col_e +=3;
   y=x;   
  }
  else 
  { 
   if(((y<c)&&(c<x))||((y>c)&&(c>x)))
   {
    cout <<"        1 y<c<x или y>c>x";
    col_e= 0;
    break;   
   }
   else
   {
    col_e =0;
    col_s++;
    cout << "        1 отрезок окончен. x="<<x;  
    break;
   }
  }
   //------
  input>>x; cout<<endl<<num++;
  if(((y<x)&&(y<c))||((y>x)&&(y>c)))
  {
   col_e++;
   c=x;   
  }
  else
  {
   if(((c<y)&&(y<x))||((c>y)&&(y>x)))
   {
    cout << "          2 c<y<x или c>y>x";
    col_e=0;
    break;   
   }
   else
   {
    col_e=0;
    col_s++;
    cout<<"          2 отрезок закончен. x="<<x;
    break;  
   }
  }
  }
 }
 cout<<endl<<"количество секторов: "<<col_s;
}
 
 
int main()
{
 test();
 processing();
return 0;   
}
Прошу, помогите студенту новичку!
0
12.02.2012, 20:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 20:47
Привет! Вот еще темы с ответами:

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Дано трехзначное число. Проверить истинность высказывания: "Цыфры даного числа образуют возрастающую или убывающую последовательность"." - C++
Если кто делает можна с комнтариями что и за что отвечат в кратце. Булеан это для меня больная тема

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...


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

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

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