1

Тема: бульбашка

1.Вивести на екран матрицю
2.Відсортувати від'ємні числа,номери яких є кратні 3 методом бульбашки.
Відсортована матриця виводиться, а от бульбашка ні, і такий метод, який я вказала нижче(про номери ,які є кратні 3) не працює.
Як вивести від'ємні елементи,номери яких є кратні 3 і відсортувати їх методом бульбашки?

Post's attachments

форум.cpp 800 b, 433 downloads since 2018-05-04 

2 Востаннє редагувалося /KIT\ (27.07.2021 11:42:51)

Re: бульбашка



3

Re: бульбашка

#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <iomanip>

using namespace std;

int main()
{
    int a[15][8], N, M, i, j, c;
    srand(time(NULL));
    cout << "N=";
    cin >> N;
    cout << "M=";
    cin >> M;

    for(int i = 0; i < N; i++) {
        for(int j = 0; j < M; j++) {
            a[i][j] = rand() % 60 - 30;
        }
    }
    cout << " Randomnyi masyv" << endl;

    for(i = 0; i < N; i++) {
        for(j = 0; j < M; j++)
            cout << setw(10) << a[i][j];
        cout << endl;
    }
    cout << "vidjemni elementy" << endl;
    for(i = 0; i < N; i++) {
        for(j = 0; j < M; j++) {
            if(a[i][j] < 0 && i % 3 == 0 && j % 3 == 0)
                ;
            {
                cout << setw(10) << a[i][j];
                cout << endl;
            }
        }
    }
}
Оригінал
#include<iostream>   
#include <ctime>
#include <stdlib.h>  
#include <iomanip>                          

using namespace std;

int main ()
{
int a[15][8], N, M ,i,j,c;
    srand(time(NULL));
    cout<<"N=";
    cin>>N;
    cout<<"M=";
    cin>>M;
    
    for (int i=0; i<N; i++){
         for (int j=0; j<M; j++){
            a[i][j]=rand()%60 - 30; 
     }
}
cout<<" Randomnyi masyv"<<endl;

     for (i=0; i<N; i++) {
       for ( j = 0; j < M; j ++ ) 
      
           cout<<setw(10)<< a[i][j];         
      cout<<endl;                           
      
}
    cout<<"vidjemni elementy"<<endl;
     for (i=0; i<N; i++) {
       for ( j = 0; j < M; j ++ ) 
      {
      if (a [i][j]<0 && i%3==0 && j%3==0);
                 {

        
        cout<< setw(10) <<a[i][j];
          cout<<endl;
      }
      
}
}
}

4

Re: бульбашка

що саме не так?

5 Востаннє редагувалося koala (04.05.2018 21:09:36)

Re: бульбашка

marjanapurih написав:

2.Відсортувати від'ємні числа,номери яких є кратні 3 методом бульбашки.
Відсортована матриця виводиться, а от бульбашка ні,

Це як? Що саме ви маєте на увазі під "відсортованою матрицею" та "виведенням бульбашки"?

Матриця - це прямокутна таблиця з чисел. У вас я не бачу, щоб десь виводилася така таблиця: числа з неї - так, а от таблиці нема.
Відсортованої матриці немає, бо немає сортування. Чому ви вважаєте, що виводиться "відсортована матриця"?

Ну а в цілому, як я розумію, завдання таке. Було

-1  3  5 -9
 0  4 -1  5
 8  2  4 -7
 3  4 -9 -2

Як саме визначати "елементи, номери яких є кратні 3" у двовимірному масиві - не зовсім зрозуміло; припустимо, мова йде про нумерацію з 0 і обидві координати одночасно (як у вас в коді). Тоді відповідь буде

-9  3  5 -2
 0  4 -1  5
 8  2  4 -7
 3  4 -9 -1

Числа по кутах розставленні за зростанням. У чому ваша проблема?

Подякували: Fox, leofun012

6

Re: бульбашка

Помилково написано "відсортована матриця".
В моєму коді виводиться масив, розмірність [15][8] (за умовою) + виводить (не правильно)потрібні мені тільки від'ємні  елементи, індекси кратні 3. І от саме цей вивід (вивід від'ємних значень ,індексом кратним 3) мені потрібно просортувати бульбашкою за зростанням.
Я так розумію,що це буде виводити числа,які містяться під індексами [0][0], [0][3],[3][0]???

7

Re: бульбашка

marjanapurih написав:

В моєму коді виводиться масив, розмірність [15][8] (за умовою)

Не бачу в умові нічого про розмір матриці. У вас є якась іще умова? Не хочете поділитися з нами - чи вам приємно постійно писати "це неправильно, бо була ще ось така умова, про яку я ще не сказала"?

marjanapurih написав:

+ виводить (не правильно)потрібні мені тільки від'ємні  елементи, індекси кратні 3. І от саме цей вивід (вивід від'ємних значень ,індексом кратним 3) мені потрібно просортувати бульбашкою за зростанням.

Вивід неможливо відсортувати - відсортувати можна щось перед виведенням. А в умові нічого не сказано про те, що саме треба вивести після сортування; але там не сказано "створити новий масив", тобто схоже, що малося на увазі сортування цих елементів in situ.

Коротше: умова в тій формі, в якій ви її написали, вкрай невизначена. Якщо ця умова - це все, що ви маєте, то можете її уточнювати в будь-який зручний для вас бік. Якщо є ще щось - то напишіть про це.

8

Re: бульбашка

#include <iostream>   
#include <ctime>
#include <iomanip>                          

using namespace std;

int main()
{
    int** matrix, x, y;
    srand(time(NULL));
    setlocale(LC_ALL, "ukrainian");
    cout << "Enter x=";
    cin >> x;
    cout << "Enter y =";
    cin >> y;

    matrix = new int*[x];
    for (int i = 0; i < x; i++)
        matrix[i] = new int[y];


    for (int pX = 0; pX < x; pX++) {
        for (int pY = 0; pY < y; pY++) {
            matrix[pX][pY] = rand() % 60 - 30;
        }
    }
    cout << "Матриця:" << endl;

    for (int pY = 0; pY < y; pY++) {
        for (int pX = 0; pX < x; pX++)
        {
            cout << setw(4) << matrix[pX][pY];
        }
        cout << endl;
    }

    cout << "Елементи:" << endl;
    for (int pY = 0; pY < y; pY++) {
        for (int pX = 0; pX < x; pX++)
        {
            if(matrix[pX][pY] < 0 && pX % 3 == true && pY % 3 == true)
                cout << setw(4) << matrix[pX][pY];
        }
    }
    cout << endl;
    system("pause");
}

Без бульки, але виводить від'ємні елементи,номери яких є кратні 3.

Подякували: marjanapurih1

9

Re: бульбашка

koala написав:
marjanapurih написав:

В моєму коді виводиться масив, розмірність [15][8] (за умовою)

Не бачу в умові нічого про розмір матриці. У вас є якась іще умова? Не хочете поділитися з нами - чи вам приємно постійно писати "це неправильно, бо була ще ось така умова, про яку я ще не сказала"?

marjanapurih написав:

+ виводить (не правильно)потрібні мені тільки від'ємні  елементи, індекси кратні 3. І от саме цей вивід (вивід від'ємних значень ,індексом кратним 3) мені потрібно просортувати бульбашкою за зростанням.

Вивід неможливо відсортувати - відсортувати можна щось перед виведенням. А в умові нічого не сказано про те, що саме треба вивести після сортування; але там не сказано "створити новий масив", тобто схоже, що малося на увазі сортування цих елементів in situ.

Коротше: умова в тій формі, в якій ви її написали, вкрай невизначена. Якщо ця умова - це все, що ви маєте, то можете її уточнювати в будь-який зручний для вас бік. Якщо є ще щось - то напишіть про це.

10

Re: бульбашка

Дослівна умова :
1.Розмір матриці 15х8. Діапазон від -30 до 30.
2.Вивести на екран матрицю і від'ємні числа,індекси яких є кратними 3.
3.Відсортувати дані від'ємні числа методом бульбашки.
4.Записати у файл суму парних елементів матриці.

4-ий пункт зможу самостійно.Потрібна допомога тільки у 2 та 3 пункті.Буду вдячна за ще одну ваші підказку.

Подякували: koala1

11

Re: бульбашка

Щоби щось відсортувати, треба його десь мати. Тобто вам треба зібрати ці числа в окремий масив. Отже:
- створюєте окремий масив (можете взяти просто 15*8/9 = 14 елементів, округлюємо вгору);
- переписуєте туди необхідні елементи початкового масиву; можна при цьому їх вивести;
- сортуєте бульбашкою;
- виводите відсортований масив.

Як взяти потрібні елементи - так, наприклад, як у вас в рядках 30-32. Але можна трохи простіше - адже вам не потрібні решта елементів, тож можна цикли робити через 3 і викинути ці умови:

    for(i = 0; i < N; i+=3) {
        for(j = 0; j < M; j+=3) {
            if(a[i][j] < 0 ) ...

І так, вам ще знадобиться окрема змінна для кількості таких елементів.

Подякували: marjanapurih1