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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти минимальные элементы каждой строки матрицы http://www.cyberforum.ru/cpp-beginners/thread443170.html
Задание: Найти минимальные элементы каждой строки матрицы X и поместить их на главную диагональ, а диагональные элементы записать на место минимальных. Я только одного не могу понять, каким...
C++ Как поменять порядок следования элементов в массиве на противоположный? Есть код: #include <iostream> #include <ctime> using namespace std; int kontrmas(int mass,int size); int main() { const int a=10; int mas={}; http://www.cyberforum.ru/cpp-beginners/thread443164.html
C++ Задача на proc помогите плз
Описать процедуру Minmax(X, Y), записывающую в переменную X ми- нимальное из значений X и Y, а в переменную Y — максимальное из этих значений (X и Y — вещественные параметры, являющиеся одновременно...
Перегрузка операторов С++ C++
Задание: Написать код на языке С++ где реализуется перегрузка операторов. Тематика: База данных института(студенты, аспиранты, преподаватели) Помогите понять как и где можно использовать...
C++ Как передать массив в функцию? http://www.cyberforum.ru/cpp-beginners/thread443133.html
Помогите написать функцию, которая возвращает значение true, если символ, полученый функцией как аргумент, является гласной буквой английского алфавита. Вот мой нерабочий вариант: #include...
C++ Найти элементы, которые по модулю меньше некоторого значения, введенного с клавиатуры задано матрицу размерностью N * M с произвольным многочисленных элементов. Найти элементы, которые по модулю меньше некоторого значения, введенного с клавиатуры Помогите плис срочно надо прога подробнее

Показать сообщение отдельно
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249

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

08.02.2012, 22:39. Просмотров 716. Ответов 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 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru