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

многомерный массив - C++

Восстановить пароль Регистрация
 
Ferin
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 7
23.01.2010, 20:30     многомерный массив #1
помогите пожалуйста написать программу:

Дана целочисленная прямоугольная матрица. Определить:
1) количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент;
2) Упорядочить строки по возрастанию максимумов их элементов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2010, 20:30     многомерный массив
Посмотрите здесь:

Многомерный массив, Си!!! C++
C++ Многомерный массив
C++ многомерный массив
Многомерный массив C++
Многомерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
23.01.2010, 20:34     многомерный массив #2
на чем писать ?
Ferin
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 7
23.01.2010, 20:35  [ТС]     многомерный массив #3
на Турбо С
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
23.01.2010, 20:44     многомерный массив #4
на С++ пойдет ???
Ferin
0 / 0 / 0
Регистрация: 21.01.2010
Сообщений: 7
23.01.2010, 20:46  [ТС]     многомерный массив #5
не желательно!! но можно я по примеру переделать попробую!)
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
23.01.2010, 20:47     многомерный массив #6
ладно
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.01.2010, 21:03     многомерный массив #7
Oleg462:
Лучше поправь сообщение, иначе модераторы накажут.

Добавлено через 26 секунд
Здесь всё freeware

Добавлено через 13 минут
На будующее, если хочешь заработать:
http://www.cyberforum.ru/order-program/
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.01.2010, 22:47     многомерный массив #8
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
/* возвращает максимальное значение массива */
int maxVal(int *arr, int cnt){
    int i, max_val;
    
    max_val = *arr;
    for ( i = 1; i < cnt; ++i )
        if ( arr[i] > max_val )
            max_val = arr[i];
    return max_val;
}
 
/* сортирует строки массива */
int sortRows(int **matr, int rows, int cols){
    int i, j, k, *row, val;
    
    for ( i = 0; i < rows - 1; ++i ){
        if ( ( val = maxVal(matr[i+1], cols) ) < maxVal(matr[i], cols) ){
            row = matr[i+1];
            for ( j = 0; j < i + 1; ++j ){
                if ( maxVal(matr[j], cols) > val ){
                    for ( k = i + 1; k > j; --k )
                        matr[k] = matr[k-1];
                    matr[j] = row;
                    break;
                }
            }
        }
    }
}
 
/* Упорядочить строки по возрастанию максимумов их элементов. */
 
#define ROWS 5
#define COLS 4
 
int main(void){
    int **matr, i, j;
    
    srand(time(NULL));
    
    if ( ( matr = (int**)calloc(ROWS, sizeof(int*)) ) == NULL ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    for ( i = 0; i < ROWS; ++i ){
        if ( ( matr[i] = (int*)calloc(COLS, sizeof(int)) ) == NULL ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
    }
    printf("\nUnsorted:\n");
    for ( i = 0; i < ROWS; ++i ){
        for ( j = 0; j < COLS; ++j )
            printf("%02d ", ( matr[i][j] = rand() % 100 ));
        printf("MAXVAL: %d\n", maxVal(matr[i], COLS));
    }
    sortRows(matr, ROWS, COLS);
    printf("\nSorted:\n");
    for ( i = 0; i < ROWS; ++i ){
        for ( j = 0; j < COLS; ++j )
            printf("%02d ", matr[i][j]);
        printf("MAXVAL: %d\n", maxVal(matr[i], COLS));
    }                   
    
    for ( i = 0; i < ROWS; ++i )
        free(matr[i]);
    free(matr);
    exit(0);
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
24.01.2010, 08:04     многомерный массив #9
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main ()
{
    int **mas, n, i,j, fl, col;
    printf("Vvedite razmernost matrici: ");
    scanf("%d", &n);
    mas = (int **)malloc (n * sizeof (int *));
    for (i = 0; i < n; i++)
        mas [i] = (int *)malloc (n * sizeof (int));
    printf("Vvedite elementi matrici: \n");
    for(i=0; i<n; i++)
       for(j=0; j<n; j++)
       {
          printf("[%d][%d]= ", i, j);
          scanf("%d", &mas[i][j]);
       }
    printf("Ishodnay matrica\n");
    for(i=0; i<n; i++)
        {
       for(j=0; j<n; j++)
          printf("%4d", mas[i][j]);
          printf("\n");
        }
    for(i=0; i<n; i++)
    { 
        fl=0;
        col=0;
       for(j=0; j<n; j++)
       {
           if(mas[i][j]==0){fl=1;}
           if(mas[i][j]<0){col++;}
       }
       if(fl)
           printf("V stroke %d est nulevoi element. Kolichestvo otricatelnih elementov v etoi stroke %d\n", i, col);
    }
    getch();
    return 0; 
}
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
04.01.2011, 13:15     многомерный массив #10
easybudda, Этот кусок кода применим только в с или на с++ тоже? если, то в каких случаях? спасибо

C
1
2
3
4
5
6
7
8
9
10
if ( ( matr = (int**)calloc(ROWS, sizeof(int*)) ) == NULL ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
        }
        for ( i = 0; i < ROWS; ++i ){
                if ( ( matr[i] = (int*)calloc(COLS, sizeof(int)) ) == NULL ){
                        fprintf(stderr, "Memory error!\n");
                        exit(1);
                }
        }
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
04.01.2011, 14:28     многомерный массив #11
Если не ошибаюсь то это
C
1
2
3
4
5
6
7
8
9
10
if ( ( matr = (int**)calloc(ROWS, sizeof(int*)) ) == NULL ){
                fprintf(stderr, "Memory error!\n");
                exit(1);
        }
        for ( i = 0; i < ROWS; ++i ){
                if ( ( matr[i] = (int*)calloc(COLS, sizeof(int)) ) == NULL ){
                        fprintf(stderr, "Memory error!\n");
                        exit(1);
                }
        }
на С++ выглядеть будет так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
try
    {
        matr = new int *[n];
    }
    catch(std::bad_alloc xa)
    {
        std::cerr << "ERROR" << std::endl;
        return 1;
    }
    for(size_t i = 0; i < n; ++i)
    {
        try
        {
            matr[i] = new int [n];
        }
        catch(std::bad_alloc xa)
        {
            std::cerr << "ERROR" << std::endl;
            return 1;
        }
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2011, 14:59     многомерный массив
Еще ссылки по теме:

C++ Многомерный массив
C++ многомерный массив
Многомерный массив. С++ C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.01.2011, 14:59     многомерный массив #12
Цитата Сообщение от grrrrr Посмотреть сообщение
easybudda, Этот кусок кода применим только в с или на с++ тоже?
На С++ этот кусок только с простыми типами данных можно использовать. И то только если есть очень веская причина не использовать стандартные контейнеры.
Yandex
Объявления
04.01.2011, 14:59     многомерный массив
Ответ Создать тему
Опции темы

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