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

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

Восстановить пароль Регистрация
 
земляника
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 3
06.05.2012, 07:15     Определите, имеются ли в двумерном массиве строки, равные первой строке #1
1-1 Определите, имеются ли в двумерном массиве строки, равные первой строке
1-2 Даны два упорядоченных целочисленных массива: А, содержащий n1 элементов и В из n2 элементов. Переписать все элементы из этих массивов в массив С так, чтобы массив С был упорядоченным и содержал только несовпадающие между собой значения
2-1 Дан текст. Преобразовать его, удалив из него все символы, не являющиеся буквами и числами и ко всем числам в тексте добавить 5.
2-2 Вывести анкетные данные студентов, успевающих на 4 и 5

Буду благодарна,если поможете разобраться.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2012, 07:15     Определите, имеются ли в двумерном массиве строки, равные первой строке
Посмотрите здесь:

Определить,имеются ли в двумерном массиве одинаковые элементы. C++
C++ Определить в двумерном массиве числа, равные наименьшим значениям элементов строк
Определите в двумерном числовом массиве число соседства с двух чисел разного знака C++
C++ Определите в двумерном числовом массиве суммы положительных и отрицательных элементов
В двумерном динамическом массиве найти максимум в каждой строке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,888
Записей в блоге: 1
06.05.2012, 09:19     Определите, имеются ли в двумерном массиве строки, равные первой строке #2
Это одна задача или их много ?
земляника
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 3
06.05.2012, 09:44  [ТС]     Определите, имеются ли в двумерном массиве строки, равные первой строке #3
это 4 задачи,помогите хоть с одной разобраться,экзамен на днях,нужно сделать их,а я даже и не знаю как

Добавлено через 17 минут
помоги,пожалуйста, составить программу
BRcr
 Аватар для BRcr
4003 / 2292 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
06.05.2012, 14:01     Определите, имеются ли в двумерном массиве строки, равные первой строке #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
земляника, считайте это подарком в честь наступающего праздника, 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;
        }
    }
Дальше разбираемся самостоятельно, ведь учиться вам все же, как ни крути, а надо.
Миниатюры
Определите, имеются ли в двумерном массиве строки, равные первой строке  
земляника
0 / 0 / 0
Регистрация: 06.05.2012
Сообщений: 3
07.05.2012, 06:14  [ТС]     Определите, имеются ли в двумерном массиве строки, равные первой строке #5
спасибо Вам огромное,я обязательно разберу ход действий,постараюсь все выучить,еще раз спасибо,Вы действительно сделали мне подарок,я Вам очень благодарна.
LK
07.05.2012, 06:24     Определите, имеются ли в двумерном массиве строки, равные первой строке
  #6
 Комментарий модератора 
земляника, Правила
3.15. Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
Тема закрыта.
Yandex
Объявления
07.05.2012, 06:24     Определите, имеются ли в двумерном массиве строки, равные первой строке
Закрытая тема Создать тему
Опции темы

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