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

Определите, имеются ли в двумерном массиве строки, равные первой строке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ union REGS rg; недопустимый неполный тип http://www.cyberforum.ru/cpp-beginners/thread566732.html
Прерывания с клавиатуры Может я чего не подключил ещё нужного? #include "stdafx.h" #include <stdio.h> #include <dos.h> union REGS rg; int main(void){
C++ Повернуть матрицу на 90 градусов. Динамическое выделение памяти Где здесь ошибка???? #include "stdafx.h" #include "stdlib.h" #include "time.h" #include "stdio.h" #include "locale.h" #define N 4 #define M 4 int main() http://www.cyberforum.ru/cpp-beginners/thread566723.html
Реализовать класс Set не более чем из 64 элементов целых чисел C++
Ребята, здравствуйте!!! Помогите дописать код: #include<conio.h> #include<iostream.h> class Arrays { private: static const unsigned int k=4; static const unsigned int q=8; unsigned long m1;
Программа циклического сдвига элементов массива C++
Помогите!Срочно! Составить программу циклического сдвига элементов массива А(10) на 5 позиций влево.Заранее спасибо)))
C++ Алгоритм urldecode / urlencode http://www.cyberforum.ru/cpp-beginners/thread566701.html
Есть ли у кого нить алгоритм шифровки расшифровки адреса URI?
C++ Отредактировать и сделать список Добрый вечер! В общем у меня есть программа, необходимо ее изменить - сделать список и добавить в нее удаление и добавление элемента в список. Вот код: #include <conio.h> #include <stdio.h> #include <string.h> void main(void) { typedef struct spisok { char fam; подробнее

Показать сообщение отдельно
BRcr
4005 / 2294 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
06.05.2012, 14:01     Определите, имеются ли в двумерном массиве строки, равные первой строке
земляника, считайте это подарком в честь наступающего праздника, 9 мая - одного из немногих праздников, что я уважаю.
1.1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    const int N = 5, M = 3;
    int arr[N][M] = { {1, 2, 3}, {6, 5, 14}, {1, 2, 3}, {9, 5, 1}, {1, 2, 3}};
    cout << "строчки, одинаковые с первой:" << endl;
    for ( int i = 1, cnt = 0; i < N; i++, cnt = 0 ) {
        for ( int j = 0; j < M; j++ ) {
            if ( arr[i][j] == arr[0][j] ) {
                cnt++;
            }
        }
        if ( cnt == M ) {
            cout << i << endl;
        }
    }
1.2 Эту задачку я решил сделать без дополнительной сортировки результирующего массива, что было бы проще, так как условия задачки, на мой взгляд, это подразумевают - только отбор в чистом виде.
Входящие массивы могут иметь любые размеры и направления упорядочивания, но упорядочены они все-таки должны быть.
C++
1
2
3
4
5
6
7
8
9
bool arr_contains_num( int *arr, int num, int arr_size ) {
    bool contains = false;
    for ( int i = 0; i < arr_size; i++ ) {
        if ( arr[i] == num ) {
            contains = true;
        }
    }
    return contains;
}
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
    // int a[] = {0, 2, 3, 15, 22, 48, 65, 98}, b[] = {2, 3, 10, 15, 19, 23, 25, 48, 55, 56};
    int a[] = {105, 15, 12, 9, 2, 0}, b[] = {56, 45, 33, 15, 2, 1, 0};
    const int n1 = sizeof( a ) / sizeof( a[0] ), n2 = sizeof( b ) / sizeof( b[0] );
    int c[n1 + n2] = {0}, n3;
    bool ascending = a[0] < a[1] ? true : false;
 
    for ( int ai = 0, bi = 0, ci = 0; ai < n1 || bi < n2; n3 = ci ) {
        if ( ai >= n1 ) {
            arr_contains_num( c, b[bi], ci ) ? bi++ : c[ci++] = b[bi++];
            continue;
        }
        else if ( bi >= n2 ) {
            arr_contains_num( c, a[ai], ci ) ? ai++ : c[ci++] = a[ai++];
            continue;
        }
        if ( ascending ? a[ai] < b[bi] : a[ai] > b[bi] ) {
            arr_contains_num( c, a[ai], ci ) ? ai++ : c[ci++] = a[ai++];
        }
        else if ( !arr_contains_num( c, b[bi], ci ) ) {
            c[ci++] = b[bi++];
        }
    }
    cout << "result: ";
    for ( int i = 0; i < n3; i++ ) {
        cout << c[i] << ( ( i + 1 ) == n3 ? "." : ", " );
    }
2.1 Поскольку мне не остается ничего другого, кроме как понимать текст задания буквально, из строчки "(this, ,te#xt*conta&in=s@@@abo$ut__5-10--wo!rds..." должна получиться "thistextcontainsabout1015words"(пробелы - не буквы, а пять прибавляем не к цифрам, а к числам).
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
    char text[] = "(this,  ,te#xt*conta&in=s@@@abo$ut__5-10--wo!rds..."; // "thistextcontainsabout1015words"
    const int text_size = sizeof( text ) / sizeof( text[0] );
    char result[text_size + 100] = {'\0'};
 
    for ( int i = 0, j = 0, num = 0; i < text_size; i++ ) {
        if ( isalpha( text[i] ) ) {
 
            result[j++] = text[i];
        }
        if ( isdigit( text[i] ) ) {
            if ( isdigit( text[i - 1] ) ) {
                num *= 10;
            }
            num += text[i] - '0';
 
            if ( i + 1 != text_size ? !isdigit( text[i + 1] ) : true ) {
                num += 5;
                stringstream ss;
                ss << num;
                strcat( result, ss.str( ).c_str( ) );
                j += ss.str( ).size( );
                num = 0;
            }
        }
    }
    cout << "input: \"" << text << "\"" << endl << "output: \"" << result << "\"";
2.2 Данные студентов заполняются полуслучайным образом, выводятся только отличники и хорошисты, остальные курят в сторонке.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    struct student {
        char name[100];
        bool male;
        int evaluation;
    };
    student students[15];
    srand( time( NULL ) );
    for ( int i = 0; i < 15; i++ ) {
        sprintf( students[i].name, "student %d", i );
        students[i].male = i % 2 == 0 ? true : false;
        students[i].evaluation = ( rand( ) % 10 ) / 2 + 1;
 
        if ( students[i].evaluation > 3 ) {
            cout << "оценка " << ( students[i].male ? "студента " : "студентки " ) <<
                           "\"" << students[i].name << "\" - " << students[i].evaluation << endl;
        }
    }
Дальше разбираемся самостоятельно, ведь учиться вам все же, как ни крути, а надо.
Миниатюры
Определите, имеются ли в двумерном массиве строки, равные первой строке  
 
Текущее время: 18:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru