Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Bonk
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 23
#1

Матрица.Переписать в одномерный массив эл-ты четных столбцов значения которых меньше 1. Оформить в виде Функции - C++

28.12.2010, 17:48. Просмотров 1135. Ответов 14
Метки нет (Все метки)

Дана матрица( любого размера. в пределах разумного=)).Переписать в одномерный массив элементы четных столбцов. значения которых меньше 1. Оформить в виде функции. Программа на борланде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2010, 17:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Матрица.Переписать в одномерный массив эл-ты четных столбцов значения которых меньше 1. Оформить в виде Функции (C++):

Функция: Переписать в одномерный массив элементы четных столбцов, значения которых меньше 1
Дана матрица. Переписать в одномерный массив элементы четных столбцов, значения...

оформить в виде функции одномерный массив
Необходимо выполнить задание, каждый пункт задания оформить в виде функции. ...

Оформить одномерный массив в виде функций
и снова я мучаюсь с функциями:wall: и кажется снова они получились...

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов)
Помогите решить задачку: Дана матрица 5х7, элементами которой являются...

Переписать в массив С все значения матрицы D, меньше заданного значения Y
Вот что написал, а дальше как ни крутил не смог придумать #include<iostream>...

Переписать из одного массива в другой все элементы, значения которых больше -1.8 и меньше 2.7
Сформировать вещественный массив A,элементами которого являются случайные числа...

14
KEKCoGEN
Эксперт Java
2037 / 1912 / 494
Регистрация: 28.12.2010
Сообщений: 7,656
28.12.2010, 17:57 #2
C
1
2
3
4
5
6
7
8
int i,j,k=0;
for(i=0;i<m;i+=2)
    for(j=0;j<n;j++)
    if(matrix[i][j]<1)
    {
        arr[k]=matrix[j][i];
        k++;
    }
Массив должен быть достаточно большим или динамическим. Насчет ф-ции уточни какие параметры должна принимать, должна ли возвращать значение и.т.д
0
Bonk
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 23
28.12.2010, 18:33  [ТС] #3
Помоему не обязательно что бы функция в данном случае возвращала значения
0
KEKCoGEN
Эксперт Java
2037 / 1912 / 494
Регистрация: 28.12.2010
Сообщений: 7,656
28.12.2010, 19:13 #4
если ф-ция имеет декларацию void foo(void); то надо просто скопировать код туда.
0
Bonk
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 23
29.12.2010, 15:54  [ТС] #5
если ф-ция имеет декларацию void foo(void); то надо просто скопировать код туда.
в борланде С++ 3.1 нету такой декларации

Добавлено через 19 часов 13 минут
Блин ну кто нибуть помогите
0
KEKCoGEN
Эксперт Java
2037 / 1912 / 494
Регистрация: 28.12.2010
Сообщений: 7,656
29.12.2010, 16:24 #6
декларация void foo();
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
29.12.2010, 16:48 #7
Цитата Сообщение от Bonk Посмотреть сообщение
Дана матрица( любого размера. в пределах разумного=)).Переписать в одномерный массив элементы четных столбцов. значения которых меньше 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
 
void fnk(int **mat,int M, int N, int num)
{
    int *arr,k=0;
    arr=new int[num];
    printf("\nResult\n");
    for(int i=0; i<M; i++)
    {
        for(int j=0; j<N; j++)
        {
            if(mat[i][j]<1 && !(j%2))
            {
                arr[k]=mat[i][j];
                printf("%d ",arr[k]);
                k++;
            }
        }
    }
  free(arr);
}
 
int main() 
{ 
      srand((unsigned)time(NULL));
      int **mat;
      int M,N,num=0; 
      printf("Enter number rows -> ");
      scanf("%d",&M);
      mat=(int**)malloc(M*sizeof(int**));
      printf("Enter number rows -> ");
      scanf("%d",&N);
      printf("Matrix:\n");
       for(int i=0; i<M; i++)
        {
           mat[i]=(int*)malloc(N*sizeof(int*));
            for(int j=0; j<N; j++)
            {
                mat[i][j]=rand()%9-4;
                 if(mat[i][j]<1 && !(j%2))
                 {
                     num++;
                 }
                printf("%d  ",mat[i][j]);
            }
          printf("\n");
        }
      fnk(mat,M,N,num);
      for(int i=0; i<M; i++)
      {
          free(mat[i]);
      }
      free(mat);
     getch();
     return 0;
}
0
igorrr37
1863 / 1481 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
29.12.2010, 17:15 #8
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
#include <conio.h>
#include<iostream>
using namespace std;
 
void f(int mat[3][3], int *mas){
    int co=0;
    for(int j=0;j<3; j+=2){
        for(int i=0;i<3;i++){
            if(mat[i][j]<1){
                mas[co]=mat[i][j];
                cout<<mas[co]<<" ";
                co++;
            }
        }
    }
}
int main()
{
    int mas[6];
    int mat[3][3]={{-1, 2, 0},
                         { 4, 5,-6},
                     {-7, 8,-9}};
    f(mat, mas);
    getch();
}
0
Nameless One
Эксперт С++
5785 / 3434 / 351
Регистрация: 08.02.2010
Сообщений: 7,448
29.12.2010, 17:41 #9
Вот с динамическими массивами на С89:
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define L_T -25
#define R_T  25
 
size_t foo(int**, size_t, size_t, int*);
 
int main()
{
    srand((size_t) time(NULL));
    size_t n, m, size, i, j, k;
    int** matrix = NULL;
    int*  array = NULL;
    
    printf("Input n: ");
    scanf("%u", &n);
    printf("Input m: ");
    scanf("%u", &m);
    size = n * m / 2;
    
    printf("Generating matrix of size %ux%u...\n", n, m);
    
    if((matrix = (int**) malloc(n * sizeof(int*))) == NULL)
    {
        fprintf(stderr, "Error allocating memory for rows...\n");
        exit(1);
    }
    
    for(i = 0; i < n; ++i)
    {
        if((matrix[i] = (int*) malloc(m * sizeof(int))) == NULL)
        {
            fprintf(stderr, "Error allocating memory for columns...\n");
            exit(2);
        }
        for(j = 0; j < m; ++j)
        {
            matrix[i][j] = rand() % (R_T - L_T + 1) + L_T;
            printf("%-6d", matrix[i][j]);
        }
        putchar('\n');
    }
    
    if((array = (int*) malloc(size * sizeof(int))) == NULL)
    {
        fprintf(stderr, "Error allocating memory for array...\n");
        exit(4);
    }
    
    k = foo(matrix, n, m, array);
    
    printf("Resulting array of size %u:\n", k);
    for(i = 0; i < k; ++i)
        printf("%d ", array[i]);
    putchar('\n');
    
    free(array);
    for(i = 0; i < n; ++i)
        free(matrix[i]);
    
    free(matrix);
    
    exit(0);
}
 
size_t foo(int** matrix, size_t n, size_t m, int* a)
{
    int i, j, k = 0;
    for(j = 0; j < m; j += 2)
        for(i = 0; i < n; ++i)
            if(matrix[i][j] < 1)
                a[k++] = matrix[i][j];
    
    return k;
}
0
Bonk
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 23
29.12.2010, 18:59  [ТС] #10
igorrr37, зачем ты ввел свои значения матрицы? Мне нужно что бы я сам мог ввести любые цифры, и программа смогла все правильно сделать

Добавлено через 2 минуты
Ребята сделайте под борланд 3.1, что бы было легче разшивровывать непонятные команды из других оболочек
0
Bonk
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 23
31.12.2010, 13:44  [ТС] #11
народ сделал пол проги, в функции Сhange сделал только что прога выберает елементы четых столбцов, но я не знаю как сделать что бы выводило значения меньше 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
#include<iostream.h>
const int n=4,m=4;
void InArray (float [n][m]);
void Change (float [n][m]);
 
void main()
{
float a[n][m];
InArray (a);
Change (a);
 
}
void InArray (float a[n][m])
{
cout<<"Vvedite matricy "<<n<<"*"<<m<<endl;
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
cin>>a[i][j];
cout<<endl;
}
}
void Change (float [n][m])
{
float b;
for(int j=0;j<m;j++)
 
if(j%=2)
{ 
b=j;
}
cout<<"Matrica b \n";
cout<<"b="<<b;
}
0
KEKCoGEN
Эксперт Java
2037 / 1912 / 494
Регистрация: 28.12.2010
Сообщений: 7,656
31.12.2010, 14:07 #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Change (float [n][m]) // не указанно имя массива
{
float b;
for(int j=0;j<m;j++)
 
if(j%=2)  // j%=2 --> j=1 <-- нечетное число
{ 
b=j;  // b получит 1,3,5....
}
cout<<"Matrica b \n";  // b не матрица.
cout<<"b="<<b;
}
Поясни точнее что должна делать ф-ция Change
Принимать матрицу и переписывать нужные элементы в массив? Надо ли возвращать массив или печатать его внутри ф-ции?
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,363
Завершенные тесты: 1
31.12.2010, 15:35 #13
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
#include "iostream"
 
#include "stdlib.h"
#include "time.h"
 
using namespace std;
 
const int n=5;
 
void inp(int x[][n]);
int calc(int x[][n],int y[]);
void out(int x[][n],int y[],int m);
 
void main()
{
    srand(time(0));
    int x[n][n];
    int y[n*n]={0};
    inp(x);
    int m=calc(x,y);
    out(x,y,m);
}
 
void inp(int x[][n]){
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    x[i][j]=rand()%20-10;//[-10:10]
}
 
int calc(int x[][n],int y[])
{   
    int m=0;
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
        if(j%2==0 && j!=0)
            if(x[i][j]<1)
                y[m++]=x[i][j];
    return m;
}
 
void out(int x[][n],int y[],int m)
{
    for(int i=0;i<n;i++)
    {
    for(int j=0;j<n;j++)
        cout<<x[i][j]<<"\t";
    cout<<endl;
    }
    cout<<endl;
    for(int i=0;i<m;i++)
        cout<<y[i]<<" ";
 
}
0
Bonk
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 23
02.01.2011, 22:07  [ТС] #14
Дана матрица размер n на m. Переписать в одномерный массив елементы четных столбчов, и которые меньше 1. Написать в виде функции. Ребята умоляю, сделайте на борланде, желательно 3.1
0
Минич
66 / 66 / 7
Регистрация: 26.11.2010
Сообщений: 123
02.01.2011, 22:50 #15
Там твое задание, учись пользоваться поиском, не стоит повторно создавать темы
Двумерные массивы
0
02.01.2011, 22:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2011, 22:50
Привет! Вот еще темы с решениями:

Как записать среднее арифметического четных столбцов в одномерный массив?
Дана матрица целых чисел размера 5х9. Получить одномерный массив, состоящий из ...

Сформировать одномерный массив, состоящий из максимальных элементов четных столбцов матрицы
Дана целочисленная матрица 10x12. Найти сумму элементов в заштрихованной...

Оформить в виде функции. Дан массив А размера N (N-нечетное число)

Дан целочисленный массив. Найти максимальный элемент. Оформить в виде функции
Дан целочисленный массив. Найти максимальный элемент. Оформить в виде функции


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru