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

Блок-схема - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить последовательность цифр циклом While http://www.cyberforum.ru/cpp-beginners/thread745731.html
На скрине задание - http://i068.***********/1212/f7/6e2b7eebec3e.png Т.е. надо сложить последовательность чисел (через цикл while) и вывести Пытался что-то сам написать, и в общем запутался int x, y, z, c; c=0; y=1; while(x<=100){
C++ Алгоритм сортировки In-place merge sort Для здачи лабораторной нужно написать алгоритм сортировки vector и массивов любых типов данных(как пользовательских так и стандартных), нужно реализовать 2 алгоритма Bogosort и In-place merge sort. Bogosort я сделал, а вот второй что-то нигде не могу найти нормальное описание хотябы...если кто-нибудь знает такой алгоритм объясните его пожалуйста, буду благодарен если к описанию дадите простецкий... http://www.cyberforum.ru/cpp-beginners/thread745726.html
C++ Вычислить сумму элементов матрицы по правилу
Составить программы, содержащие процедуры и функции. Вычислить сумму S = xmax + ymax максимального элемента xmax = max{xi} массива xi и максимального элемента ymax = max{yi} массива yi, i = 1, 2, 3.
C++ Заполнить массив элементами от -0.9 до 0.9 с шагом 0.1 (ошибка)
Здравствуйте. Помогите пожалуйста разобраться. Нужно заполнить массив элементами от -0.9 до 0.9 с шагом 0.1. Но когда выполняется программа на нуле какая то ошибка вылетает или не ошибка, но я не пойму что не так я сделал там должен быть 0. вот код: #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void main() { double m;
C++ Прекращена работа программы http://www.cyberforum.ru/cpp-beginners/thread745714.html
Написал следующую программу на visual c++ express 2010: #include <iostream> using namespace std; void main() { const int rows=3, columns=8; int q; int *w=&q; for (int i=0;i<rows*columns;i++) {
C++ Написать собственную реализацию стандартной функции strstr Написать собственную реализацию стандартной функции strstr. предназначена для поиска строки strCharSet в строке string. Возвращается указатель на начальный символ первого вхождения strCharSet в строку string или NULL, если string не содержит strCharSet. помогите пожалуйста, не могу дописать. #include <iostream> #include <string> using namespace std; char string a, char string b подробнее

Показать сообщение отдельно
dv23
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 4
25.12.2012, 18:37     Блок-схема
Начертите, пожалуйста блок-схему к приложенной программе или просто словами пошагово опишите принцип работы. Спасибо.

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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#include <cstdlib>
#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
 
void show(int a[150], int n)  // вывод полоски на экран
{
     int i;
     for (i=1; i<=n; i++)
         if (a[i])   // если элемент не ноль то его показываем
           cout<<a[i]<<":";
         else  // если ноль, то пробел вместо него
           cout<<" :";
     cout<<endl;
}
 
bool is_number(char* s)  // проверяет введено ли нужное число пользователем во время хода
{
     char w[]="0123456789";
     int i,j;
     if (strlen(s)>2 || strlen(s)<1)   // если длина >2 или <1 - не то что надо введено 
        return false;
     for (i=0; i<strlen(s); i++)
     {
         bool fl=false;
         for (j=0; j<strlen(w); j++)
             if (s[i]==w[j])
             {
               fl=true;
               break;
             }
         if (!fl)
          return false;
     }
     return true;
}
 
bool isend(int a[150], int n, int k) // проверяет есть ли еще ход в полоске (true - нет)
{
     int i,count;
     i=1;
     
     while (i<=n-k+1)
     {
           if (a[i])  // если элемент не ноль
           {
                    count=1;
                    i++;
                    while (i<=n && a[i]) // идет по полоске пока не закончится или  пока не ноль число
                    {
                          count++;  // сичтаем длину серии ненулевых чисел
                          i++;
                    }
                    if (count>=k)  // если длина больше или равна k, значит ход еще есть
                       return false;
           }
           i++;
     }
     return true;
}
 
int nextmove(int a[150], int n, int k)  // ход компьютера - первая возможность слева по строке
{                                       //    ( первая версия хода компьютера)
     int i,j,count;
     i=1;
     
     while (i<=n-k+1)
     {
           if (a[i])
           {
                    count=1;
                    i++;
                    while (i<=n-k+1 && a[i])
                    {
                          count++;
                          i++;
                    }
                    if (count>=k)
                    {
                        for (j=i-count; (j<=i-count+k-1 && j<=n); j++)
                            a[j]=0;
                        return i-count;
                    }
           }
           i++;
     }
     return 0;
}
 
int randnextmove(int a[150], int n, int k) // компьютер из всех ходов выбирает один случайно
{
     int m[41];   // здесь номера всех возможных ходов
     int cm=0;    // количество возможных ходов
     int i,j,count;
     bool fl;
     
     for (i=1; i<=n-k+1; i++)
     {
         fl=true;
         for (j=i; j<i+k; j++)  
             if (!a[j])  // если элемент равен нулю
             {
                fl=false;  // ход невозможен с началом в i
                break;
             }
         if (fl) // если ход возможен
         {
                cm++;  // увелисиваем количество найденных ходов
                m[cm]=i;  // заносим номер хода в массив m
         }
     }
     
     if (cm)  // если количество ходов > 0
     {
            j=m[1+rand()%cm]; // случайный выбор хода
            for (i=j; i<j+k; i++)  // зануление элементов этого хода
                a[i]=0;
            return j;
     }
     
     return 0;
}
 
bool del(int a[150], int n, int k, int ind) // замена k чисел начиная с ind на нули
{
     if (ind>n-k+1 || ind<1)  // проверка на корректность ind
       return false;
     int i;
     
     for (i=ind; i<=ind+k-1; i++)
         if (!a[i])                 // если там ноль еще до удлаения - false, то есть удалить не удалось
            return false;
     for (i=ind; i<=ind+k-1; i++)
         a[i]=0;                   // удаление
     return true; 
}           
 
void game(int n, int k) // функция процесса игры
{
     int mv;
     char you[30]="";  // ход игрока
     int a[150];  // полоска - это массив чисел, если число равно 0, то это пробел
     bool isdel;
     int i,j;
     for (i=1; i<=n; i++) // заполение полоски
         a[i]=i;
     
     cout<<"first move: 1 - comp 2 - you : ";  // запрос кто ходит первым
     cin>>mv;
     
     cout<<"game start"<<endl;
     show(a,n);  // вывод полоски
     
     if (mv==2)
     {
         while (!is_number(you))
         {
             cout<<"you : ";  // ввод хода пользовтелем
             cin>>you;
             
             if (!is_number(you))    // если было введено не число
                 cout<<"error move"<<endl;
             else  
             {       
                  isdel=del(a,n,k,atoi(you));  
                  if (!isdel)   // если удалить не удалось
                  {
                     cout<<"error move"<<endl;
                     you[0]='\0';  // очищаем строку you
                  }                  
                  else
                     show(a,n);// вывод полоски
             }
         }  
     }
     
     if (isend(a,n,k)) // если ходов больше нет
     {
         cout<<"you win"<<endl;
         getch();  // ждем пока пользователь нажмет любую клавишу
         return;
     }
     
     cout<<"comp: "<<randnextmove(a,n,k)<<endl;  // вывод хода пользователя
     show(a,n);// вывод полоски
     you[0]='\0';
     
        while (true)
        {
         while (!is_number(you)) // если было введено не число
         {
             cout<<"you : ";
             cin>>you;
              
             if (!is_number(you)) // если было введено не число
                 cout<<"error move"<<endl;
         }      
         
         isdel=del(a,n,k,atoi(you));
         
         if (isdel && !isend(a,n,k))
         {
                   show(a,n);// вывод полоски
                   cout<<"comp: "<<randnextmove(a,n,k)<<endl; // вывод хода пользователя
                   show(a,n);// вывод полоски
                   you[0]='\0';
                   
                   if (isend(a,n,k)) // если ходов больше нет
                   {
                      cout<<"comp win!";
                      getch(); // ждем пока пользователь нажмет любую клавишу
                      return;              
                   }
         }
         else
          if (isdel)  // если удалось удалить
          {
                    show(a,n); // вывод полоски
                    cout<<"you win!";
                    getch();// ждем пока пользователь нажмет любую клавишу
                    return;
                    
          }
          else // если не удалось удалить
          {
                    cout<<"error move"<<endl;
                    you[0]='\0';
          }
        }      
     
     
}
 
int main()
{
    int n,k;
    cout<<"input 0<n<=40: ";
    cin>>n;
    cout<<"input 0<k<=n: ";
    cin>>k;
    
    if (n>40 || n<1 || k>n || k<1) // проверка введенных n и k
       cout<<"bad input"<<endl;
    else  
       game(n,k);  // игра
    return 1;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru