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

Одномерные массивы и указатели - составить блок-схему по коду - C++

Восстановить пароль Регистрация
 
gulllak
44 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 66
25.01.2013, 19:26     Одномерные массивы и указатели - составить блок-схему по коду #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
#include <iostream>
 
using namespace std;
 
 
int main()
{setlocale(0,"rus");
    int *m,n,i,j,UMN=1,NOM_MAX,MAX=-1000,NOMER1=-1,NOMER2=-1;
    cout<<"Введите кол-во элементов: ";
    cin>>n;
 
    m=new int[n];
 
    cout<<"Заполните массив из "<<n<<" элементов."<<endl;
    for(i=0;i<n;i++)// заполняем массив
    {
    cin>>m[i];
 
    if(m[i]>MAX){MAX=m[i];NOM_MAX=i;}
    }
 
    int k=0;
    for(i=0;i<n;i++){
        if(m[i]==0) k++;
    }
    bool T=false;
    if(k==2){
        for(i=0;i<n;i++)
            if(m[i]==0){ NOMER1=i; break;}
        for(i=n-1;i>=0;i--)
            if(m[i]==0){ NOMER2=i; break;}
        if((NOMER1+1==NOMER2) || (NOMER1+2==NOMER2))  
            cout<<"Невозможно посчитать произведение"<<endl;
        else{
            for(i=NOMER1+1;i<NOMER2;i++)
              {
                 UMN*=m[i];
            }
            T=true;
        }
    }
    else
        cout<<endl<<endl<<"Невозможно посчитать произведение!"<<endl<<endl;
 
    
 
 cout<<endl<<"Номер максимального элемента: "<<NOM_MAX+1<<"."<<endl;
 if(T==true)
 cout<<"Произведение элементов: "<<UMN<<"."<<endl;
 
 cout<<"Отсортированный массив :"<<endl;
    
    for(j=0;j<n;j++)
    if(j%2==0)cout<<m[j]<<" ";
 
    for(j=0;j<n;j++)
    if(j%2!=0)cout<<m[j]<<" ";
    cout<<endl;
 
 system("pause");
 return 0;
 
}
Мой вариант блок схемы во вложениях)
Миниатюры
Одномерные массивы и указатели - составить блок-схему по коду  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2013, 19:26     Одномерные массивы и указатели - составить блок-схему по коду
Посмотрите здесь:

C++ Составить блок схему по коду
C++ Составить блок-схему к коду.
C++ Составить блок-схему по коду
C++ Составить блок-схему по коду
Составить блок-схему по коду C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.01.2013, 21:39     Одномерные массивы и указатели - составить блок-схему по коду #2
условие задачи напишите, просто интересно, может тут и код, и алгоритм можно упростить

Добавлено через 1 час 28 минут
тестируйте
C++
1
 
UnsKneD
алкокодер
 Аватар для UnsKneD
153 / 149 / 11
Регистрация: 27.12.2012
Сообщений: 548
25.01.2013, 22:06     Одномерные массивы и указатели - составить блок-схему по коду #3
а причём тут указатели?
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.01.2013, 22:28     Одномерные массивы и указатели - составить блок-схему по коду #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
#include <iostream>
#include <cstdlib> //system
#include <iomanip> // setw
using namespace std;
int main() {
    setlocale(0, "rus");
    int *m, n = 0, maxN = 0, maxVal = 0, zeroN1 = -1, zeroN2 = -1, p = 1,
            bound = 0;
    bool flagZ = false;
    cout << "Введите кол-во элементов: ";
    //cin>>n;
    n = 12;
    m = new int[n];
    cout << "Заполните массив из " << n << " элементов." << endl;
    for (int i = 0; i < n; i++) { // заполняем массив
        //cin>>m[i];
        m[i] = i;
        if (i == 0)
            maxVal = m[i];
        if (m[i] > maxVal) {
            maxVal = m[i];
            maxN = i;
        }
        if (m[i] == 0 && zeroN1 == -1)
            zeroN1 = i;
        if (m[i] == 0 && zeroN1 != -1 && zeroN2 == -1)
            zeroN2 = i;
        if (m[i] == 0 && zeroN1 > -1 && zeroN2 > -1)
            flagZ = true;
    }
    if (zeroN1 < 0 || zeroN2 < 0 || flagZ || (zeroN2 - zeroN1 < 2))
        cout << "ne vypolneni uslovie" << endl;
    //   1  поглащает второе    >2 0          1 или рядом
    else {
        for (int i = zeroN1 + 1; i < zeroN2; ++i) {
            p *= m[i];
            if (i == zeroN2 - 1)
                cout << p << endl;
        };
    }
    cout << "\n isxodnyi massiv\n";
    for (int i = 0; i < n; ++i)
        cout << setw(5) << m[i];
    cout << "\n max nuber in position " << maxN;
    // сортировка
    bound = (n % 2) ? n / 2 + 1 : n / 2; // середина массива для четных и нечетных n
//  for (int j=0; (n%2)? i<n/2+1: j<n/2; ++j) // тогда bound не нужно
    for (int j = 0; j < bound; ++j)
        for (int i = j, tmp = 0; i < n - 1; ++i) {
            tmp = m[i];
            m[i] = m[i + 1];
            m[i + 1] = tmp;
        }
    cout << "\n novyi massiv\n";
    for (int i = 0; i < n; ++i)
        cout << setw(5) << m[i];
    cout << "\n\n";
    //system("pause");
    delete[] m;
    return 0;
}
Yandex
Объявления
25.01.2013, 22:28     Одномерные массивы и указатели - составить блок-схему по коду
Ответ Создать тему
Опции темы

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