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

и снова массивы (поиск, сортировка) - C++

Восстановить пароль Регистрация
 
andyoO
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 68
10.05.2013, 17:08     и снова массивы (поиск, сортировка) #1
ребят, пытаюсь написать код который:
1) выводит двумерную массив
2) осуществляет последовательный поиск
3) переводит в одномерный массив
4) сортирует двумерный массив
5) осуществляет двумерный поиск
первые 3 пункта я сделал, в 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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <ctime>
#include <windows.h> 
#include <clocale>
#include <string>
#include <stdlib.h>
#include <conio.h>
#include <algorithm>
#include <vector>
#include <fstream>
using namespace std;
 
int main()
{ setlocale(0,"rus");
srand (time(NULL));
   int i, j, el, m, k,l, kol= 0, w, last, first, mid, row, col, **ar,n,v,a,b,temp,c,N,M;
    cout<< ("Введите количество строк: ");
   cin>>row;
     cout<< ("Введите количество столбцов: ");
   cin>>col;
   cout<<("\nМаcсив:\n"); 
   ar= (int **)malloc (sizeof (int *) * row);
   for (i= 0; i < row; i++)
   {
   ar[i]= (int*)malloc (sizeof (int) * col);
      for (j= 0; j < col; j++)
      {
         ar[i][j]= rand () % 99;
         cout << std::setw(5) << ar[i][j];
      }
      cout<< ("\n");
   }
   cout<<("\n");
   int vector_counter=0;
   cout<<("\nИскомая матрица\n");
   for (i=1;i<row;i=i+2)
   { 
       for (j= 0; j < col; j=j+2)  
       cout << std::setw(5) << ar[i][j];
       vector_counter++;
   cout<<("\n");}
   cout<<("\nВведите количество искомых элементов:");
   cin>>M;
   for (N=0;N<M;N++)
   {printf ("\nВведите %2d искомый элемент: ",N+1);         //искомый элемент
   cin>>el;
   // Последовательный поиск
   
   cout<<("\nПоследовательный поиск:\n");
   for (j= 0; j < col; j+=2)
   {
      for (i= 1; i < row; i+=2)
      {
         if (ar[i][j] == el)
         {
            kol++;
            cout<<("\nИскомый элемент найден в четных строках и нечетных столбцах:\n");
            printf("%2d строка %2d столбец \n", i + 1, j + 1);
         }
      }
   }    
   if (kol == 0)
      printf("Искомый элемент не найден в четных строках и нечетных столбцах\n"); 
   }
int *vectorPtr = new int [row*col];
   int count=0;
   for (int i=0;i<row;i++)
   {
       for (int j=0; j<col;j++)
       {
           vectorPtr[vector_counter] = ar[i][j]; // записываем элементы матрицы в одномерный массив            
           cout << vectorPtr[vector_counter] << "  "; // печать элементов одномерного массива            
           vector_counter++; // инкремент индекса       
       }    
   }
   int size=row*col;
      for (i = 0; i < size; i++)
       for (int j = i+1; j < size; j++)
      if (ar[i] < ar[j])
      {
         int *buf = ar[i];
         ar[i] = ar[j];
         ar[j] = buf;
      }
      for (int i = 0; i < size; i++)
       cout << ar[i] << "  ";
   return 0;
}
Добавлено через 2 часа 2 минуты
up-up-up
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2013, 17:08     и снова массивы (поиск, сортировка)
Посмотрите здесь:

C++ Массивы, сортировка
C++ Снова динамические массивы и функции
Массивы,матрицы,сортировка. C++
C++ Структуры, массивы, сортировка
двухмерные массивы, сортировка C++
C++ массивы сортировка
И снова массивы (найти максимальный элемент, определить среднее арифметическое) C++
C++ Как сделать чтобы таймер дойдя до 0 стартовал снова и снова?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
10.05.2013, 17:50     и снова массивы (поиск, сортировка) #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
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution <> distribution(-15, 15);
 
    unsigned rowsCount;
    std::cout << "Rows: ";
    std::cin >> rowsCount;
 
    unsigned colsCount;
    std::cout << "Cols: ";
    std::cin >> colsCount;
 
    int **matrix = new int *[rowsCount];
    std::cout << "Matrix: " << std::endl;
    for (unsigned i = 0; i < rowsCount; i++) {
        matrix[i] = new int [colsCount];
        for (unsigned j = 0; j < colsCount; j++)
            std::cout << std::setw(5) << (matrix[i][j] = distribution(generator));
        std::cout << std::endl;
    }
 
    unsigned findingElementsCount;
    std::cout << std::endl << "Input the count of finding elements: ";
    std::cin >> findingElementsCount;
    for (unsigned k = 0; k < findingElementsCount; k++) {
        int findingElement;
        std::cout << std::endl << "Input the " << (k + 1) << " element: ";
        std::cin >> findingElement;
        std::cout << "Element " << findingElement << ": ";
        for (unsigned i = 0; i < rowsCount; i++)
            for (unsigned j = 0; j < colsCount; j++)
                if (matrix[i][j] == findingElement)
                    std::cout << "[" << (i + 1) << "][" << (j + 1) << "] ";
    }
 
    unsigned arraySize(rowsCount * colsCount);
    int *array = new int [arraySize];
    for (unsigned i = 0; i < rowsCount; i++) {
        for (unsigned j = 0; j < colsCount; j++) {
            static unsigned k(0);
            array[k++] = matrix[i][j];
        }
    }
    std::cout << std::endl << "Array: " << std::endl;
    for (unsigned i = 0; i < arraySize; i++)
        std::cout << array[i] << " ";
    std::cout << std::endl;
 
    std::cout << std::endl << "Sorted matrix: " << std::endl;
    for (unsigned i = 0; i < rowsCount; i++) {
        std::sort(matrix[i], matrix[i] + colsCount);
        for (unsigned j = 0; j < colsCount; j++)
            std::cout << std::setw(5) << matrix[i][j];
        std::cout << std::endl;
    }
 
    std::cout << std::endl << "Input the count of finding elements: ";
    std::cin >> findingElementsCount;
    for (unsigned i = 0; i < findingElementsCount; i++) {
        unsigned rowNumber, colNumber;
        std::cout << "Input the indexes of finding element: ";
        std::cin >> rowNumber >> colNumber;
        std::cout << "Element [" << rowNumber << "][" << colNumber << "]: " << matrix[rowNumber - 1][colNumber - 1] << std::endl;
    }
 
    for (unsigned i = 0; i < rowsCount; i++)
        delete [] matrix[i];
    delete [] matrix;
    delete [] array;
 
    return 0;
}
Миниатюры
и снова массивы (поиск, сортировка)  
behemoth
 Аватар для behemoth
44 / 30 / 7
Регистрация: 29.09.2012
Сообщений: 75
Записей в блоге: 1
10.05.2013, 18:33     и снова массивы (поиск, сортировка) #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
#include <iostream>
#include <stdlib.h>
void printArr(int** arr,int w,int h){
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++){
            std::cout<<arr[i][j]<<" ";
        }
        std::cout<<std::endl;
    }
}
void fillRandomArrInRange(int** arr,int w,int h,int min,int max){
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++){
            arr[i][j]=rand()%(max-min)+min;
        }
    }
}
bool checkposition(int col,int row,int** ar1,int w1,int h1,int** ar2,int w2,int h2){
    if((col+w2)>w1||(row+h2)>h1)
        return false;
    for(int i=0;i<h2;i++){
        for(int j=0;j<w2;j++){
            if(ar1[row+i][col+j]!=ar2[i][j]){
                return false;
            }
        }
    }
    return true;
}
bool check(int** ar1,int w1,int h1,int** ar2,int w2,int h2){
    for(int i=0;i<h1;i++){
        for(int j=0;j<w1;j++){
            if(ar1[i][j]==ar2[0][0]){
                if(checkposition(j,i,ar1,w1,h1,ar2,w2,h2)){
                    return true;
                }
            }
        }
    }
    return false;
}
int main(int argc, char **argv) {
    int* (*dArr);
    int* (*cArr);
    int wd,hd,wc,hc;
    const int MAX_SIZE_OF_C=50;
    const int MAX_SIZE_OF_D=20;
    /*cArr*/
    std::cout<<"Insert size of cArr:"<<std::endl<<"wc=";
    std::cin>>wc;
    std::cout<<"hc=";
    std::cin>>hc;
    //dArr
    std::cout<<"Insert size of dArr:"<<std::endl<<"wd=";
    std::cin>>wd;
    std::cout<<"hd=";
    std::cin>>hd;
    if(((wc>0&&wc<MAX_SIZE_OF_C)&&(hc>0&&hc<MAX_SIZE_OF_C))&&
        ((wd>0&&wd<MAX_SIZE_OF_D)&&(hd>0&&hd<MAX_SIZE_OF_D))&&
        (wd<wc&&hd<hc)){
        cArr= new int* [hc];
        for(int i=0;i<hc;i++){
            cArr[i] = new int[wc];
        }
        dArr= new int*[hd];
        for(int i=0;i<hd;i++){
            dArr[i] = new int[wd];
        }
        /*SOME FILL*/
        fillRandomArrInRange(cArr,wc,hc,10,100);
        fillRandomArrInRange(dArr,wd,hd,10,100);
        /*cArr[0][0]=0; cArr[0][1]=1; cArr[0][2]=2; cArr[0][3]=3; cArr[0][4]=4;
        cArr[1][0]=5; cArr[1][1]=6; cArr[1][2]=7; cArr[1][3]=8; cArr[1][4]=9;
        cArr[2][0]=10; cArr[2][1]=11; cArr[2][2]=12; cArr[2][3]=13; cArr[2][4]=14;
        cArr[3][0]=15; cArr[3][1]=16; cArr[3][2]=17; cArr[3][3]=18; cArr[3][4]=19;
        cArr[4][0]=20; cArr[4][1]=21; cArr[4][2]=22; cArr[4][3]=23; cArr[4][4]=24;
 
        dArr[0][0]=10; dArr[0][1]=11; dArr[0][2]=12;
        dArr[1][0]=15; dArr[1][1]=16; dArr[1][2]=17;
        dArr[2][0]=20; dArr[2][1]=21; dArr[2][2]=22;*/
        bool x =check(cArr,wc,hc,dArr,wd,hd);
        std::cout<<std::endl<<std::boolalpha<<x<<std::endl;//show equals sec arr or not;
        /*fillRandomArrInRange(cArr,wc,hc,10,100);
        fillRandomArrInRange(dArr,wd,hd,5,8);*/
        printArr(cArr,wc,hc);
        printArr(dArr,wd,hd);
        /*clear*/
        for(int i=0;i<hc;i++){
            delete cArr[i];
        }
        for(int i=0;i<hd;i++){
            delete dArr[i];
        }
    }
    delete[] cArr;
    delete[] dArr;
}
Yandex
Объявления
10.05.2013, 18:33     и снова массивы (поиск, сортировка)
Ответ Создать тему
Опции темы

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