С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
1

Создать функцию, где из квадратной матрицы S(m, m), m<=10 построить вектор Р

14.10.2012, 09:59. Показов 850. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите решить задачу:
Написать функцию, где из квадратной матрицы S(m, m), m<=10 построить вектор Р, элементы которого - суммы элементов диагоналей, параллельных главной диагонали. Первый элемент вектора в правом верхнем углу. Использовать составленную функцию для матриц Q(l, l), l<=10 и W(n, n) n<=8. Для ввода размеров матрицы и её элементов составить отдельную функцию. Обращение к функциям и вывод результатов по k элементов в строке выполнить в разделе операторов основной программы.

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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
 
int s[10][10];
int m;
void vvod_matrix()
{
    cout<<"m=";
    cin>>m;
    for(int i=0; i<m; i++)
    for(int j=0; j<m; j++)
        cin>>s[i][j];
}
void vector()
{
    int p, i, x;
    cout<<"Вектор Р = ";
    cout<<s[1][m]<<",";
 
    p = 0;
    for (int i = m-1; i < 2; i--) 
    {
        p = 0;
        x = 1;
        while(i+x<=m)
        {
            p+=s[i+x][i+x];
            x = x+1;
        }
        cout<<p<<",";
    }
    p = 0;
    for(int i = 2; i<m-1; i++)
    {
        p = s[i][1];
        x = 1;
        while(i+x<=m)
        {
            p+=s[i+x][i+x];
            x = x+1;
        }
        cout<<p<<",";
    }
    cout<<s[m][1]<<endl;
}
 
int main()
{
    
    setlocale(LC_ALL, "Russian");
    vvod_matrix();
    vector();
 
 
 
 
    system("PAUSE");
return 0;}
Вот мой код, но он работает не правильно.Пожалуйста помогите исправить, укажите на ошибки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2012, 09:59
Ответы с готовыми решениями:

Реализовать возведение квадратной матрицы в степень, где показатель степени - заданный вектор
Даны квадратная матрица A порядка n и вектор b с n элементами. Получить вектор A^2b. Помогите...

Построить вектор b, где bi, i=1, …, n – сумма положительных элементов i-ой строки матрицы
Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – сумма положительных элементов...

Построить вектор b, где bi, i=1,…,n – сумма нечетных элементов i-й строки матрицы
3. Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – сумма не-четных элементов...

Построить вектор b, где bi, i=1,…,n – количество четных элементов i-й строки матрицы.
Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – количество четных элементов...

5
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
14.10.2012, 12:05 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
#include <stdio.h>
#include <conio.h>
 
void input(int** S, char c, int size)
{
    for (int i = 0; i < size; i++)
    {
        S[i] = new int[size];
        for (int j = 0; j < size; j++)
        {
            printf("%c[%d][%d] = ",c,i,j);
            scanf("%d",&S[i][j]);
        }
    }
 
    printf("\n");
}
 
void dsum(int** S, int* P, int size)
{
    for (int q = size-1, k = 0; q >= 0; q--)
    {
        int i = 0, j = q, sum = 0;
        while (i < size && j >= 0) sum+=S[i++][j--];
        if (sum > 0) P[k++] = sum; 
    }
}
 
int main()
{
    int **Q = new int*[10], **W = new int*[8];
    int *P1 = new int[10], *P2 = new int[8];
 
    input(Q, 'Q', 10); input(W, 'W', 8);
    dsum(Q, P1, 10); dsum(W, P2, 8);
 
    for (int m1 = 0; m1 < 10; m1++)
        printf("%d ",P1[m1]);
    printf("\n");
 
    for (int m1 = 0; m1 < 8; m1++)
        printf("%d ",P2[m1]);
    printf("\n");
 
    _getch();
}
1
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
14.10.2012, 12:21  [ТС] 3
Спасибо большое!
А можете немного подправить, чтобы матрица вводилась не поэлементно, а сразу вся, в таком виде например
m = 10
1 9 8 7 6 5 4 3 2 1
9 1 9 8 7 6 5 4 3 2
8 9 1 9 8 7 6 5 4 3
7 8 9 1 2 3 4 5 6 4
6 7 8 9 1 9 8 7 6 5
5 6 7 8 9 1 9 8 7 6
3 5 6 7 8 9 1 9 8 7
4 3 5 6 7 8 9 1 9 8
1 4 3 5 6 7 8 9 1 3
2 1 4 3 5 6 7 8 9 1

и чтобы в начале функции ввода ещё вводилась размерность матрицы.
0
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
14.10.2012, 12:30 4
Могу сделать так, чтобы матрица загружалась из файла.
0
2 / 2 / 0
Регистрация: 14.10.2012
Сообщений: 53
14.10.2012, 12:41  [ТС] 5
А подскажите пожалуйста, что выдаёт ваша программа например для матрицы 10х10, по-моему она выдаёт сумму элементов диагоналей, которые выше главной, а где, которые ниже?? или я что-то не поняла?
0
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
14.10.2012, 12:57 6
да, действительно. сейчас доработаю.

Добавлено через 15 минут
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
void input(int** S, char c, int size)
{
    for (int i = 0; i < size; i++)
    {
        S[i] = new int[size];
        for (int j = 0; j < size; j++)
        {
            printf("%c[%d][%d] = ",c,i,j);
            scanf("%d",&S[i][j]);
        }
    }
 
    printf("\n");
}
 
void file_input(int** S, const char* filename, int size)
{
    FILE* fp = NULL;
    if ((fp = fopen(filename,"r")) == NULL)
    {
        printf("Unable to open file %s for reading\n",filename);
        return;
    }
 
    char* str = new char[80];
    for (int i = 0; fgets(str, 80, fp) != NULL; i++)
    {
        S[i] = new int[size]; int j = 0;
        for (char* token = strtok(str," "); 
            token != NULL; token = strtok(NULL," "))
            S[i][j++] = atoi(token);
    }
 
    fclose(fp);
}
 
void dsum(int** S, int* P, int size)
{
    int k = 0;
    for (int q = size-1; q >= 0; q--)
    {
        int i = 0, j = q, sum = 0;
        while (i < size && j >= 0) sum+=S[i++][j--];
        if (sum > 0) P[k++] = sum; 
    }
 
    for (int t = 1; t < size; t++)
    {
        int i = t, j = size-1, sum = 0;
        while (i < size && j >= t) sum+=S[i++][j--];
        if (sum > 0) P[k++] = sum; 
    }
}
 
int main()
{
    int **Q = new int*[10], **W = new int*[8];
    int *P1 = new int[20], *P2 = new int[16];
 
//  input(Q, 'Q', 10); input(W, 'W', 8);
 
    file_input(Q, "in1.txt", 10);
    file_input(W, "in2.txt", 8);
 
    dsum(Q, P1, 10); dsum(W, P2, 8);
 
    for (int m1 = 0; m1 < 20; m1++)
        printf("%d ",P1[m1]);
    printf("\n");
 
    for (int m1 = 0; m1 < 16; m1++)
        printf("%d ",P2[m1]);
    printf("\n");
 
    _getch();
}
0
14.10.2012, 12:57
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2012, 12:57
Помогаю со студенческими работами здесь

Заданы матрицы A, B, C, D. Построить вектор X ={x1, x2, x3, x4}, где x1, x2, x3, x4 соответственно максимальные элементы
Доброго времени суток. Не получается решить задачу, хэлпаните плиз Заданы матрицы A, B, C, D. ...

Построить вектор b, где bi, i=1,…,n – количество четных элементов i-й строки матрицы
Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – количество четных элементов...

По матрице построить вектор B размерности m, где B(i) равно следу матрицы A в степени i
Следом квадратной матрицы называется сумма элементов , расположенных на гл. Диагонали. Дана...

Создать функцию для преобразования исходной квадратной матрицы
помогите пожалуйста решить задачи 1. Создать функцию для преобразования исходной квадратной...

Построить вектор b, где bi, i=1,…,n – максималь-ный элемент i строки матрицы, среди элементов, стоящих в нечетных
Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – максималь-ный элемент i-й...

Построить вектор b, где bi, i=1,…,n – максималь-ный элемент i столбца матрицы, среди элементов, стоящих в четных строках
Дана квадратная матрица A(nхn). Построить вектор b, где bi, i=1,…,n – максималь-ный элемент i-го...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru