Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181

Нахождение суммы диагональных элементов квадратной матрицы N x N

03.06.2013, 00:42. Показов 2005. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая найдет сумму диагональных элементов квадратной матрицы N x N. Матрица находится в текстовом файле вида
4 6 7
4 7 90
34 5 7
язык С++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2013, 00:42
Ответы с готовыми решениями:

Написать функцию вычисления суммы диагональных элементов заданной квадратной матрицы
Пусть пользователь вводит динамическую матрицу размером NxN. Написать функцию для вычисления суммы диагональных элементов. Помогите...

Функция: нахождение суммы положительных элементов квадратной матрицы и сортировка главной диагонали
создать функцию нахождения суммы положительных элементов квадратной матрицы и сортировка главной диагонали

Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов.с++

10
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 10:51
Вы хотите, чтобы Вам полностью написали программу?
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2013, 11:36  [ТС]
Да, думаю, достаточно будет, если вы объясните как считать из файла диагональные элементы матрицы. Да, забыл сказать, массивы использовать нельзя. Единственное, что я смог придумать, это ввести два счетчика и идти по всему файлу. При этом один будет увеличиваться при перемещении по строке и сбрасываться на ноль при переходе на новуё строку, а второй при переходе на новую строку. Совпадение значений обоих счетчиков -признак диагонального элемента
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 11:45
Вот у меня есть задача: В ней считываются строки из фала и разбиваются на слова! Потом слова переворачиваются и снова записываются в файл! Вам оттуда нужен будет только алгоритм считывания строк из файла и разбиение их на слова (каждое слово у вас это будет число). Просто нужно будет преобразовать эту строку вот так:
C++
1
2
3
4
#include <windows.h>
int x=0;
char s[10];
x=_wtoi(s);
Ну а потом складываете элементы!
И тут без массива слов - никак не обойдёшься!
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
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int k=0,i,j=0,ks=0;
    char fileName1[20],fileName2[20],sl[100][100],tmp[20];
    printf("Ведите название файла,в котором хранятся слова:");
    scanf("%s",fileName1);
    printf("Ведите название файла,в котором будут записаны слова наоборот:");
    scanf("%s",fileName2);
    FILE *f,*A;
//открываем исходный поток
    if (f=fopen(fileName1,"r"))
    {
        char s[100];
        A=fopen(fileName2,"w+");
//пока не считаем все строки из потока
        while(!feof(f))
        {
            fgets(s,100,f);
            i=0;
            k=0; //начало очередного слова
//пропускаем пробелы и знаки препинания в начале строки
            while(s[i]==' '||s[i]==','||s[i]=='\n')
            {
                i++;
                k=i;
            }
// разбиваем строку на слова
            for (;i<=strlen(s);i++)
            {
                if(s[i]==' '||s[i]==','||s[i]=='\n'||s[i]==0||s[i]==', ')
                {
                    strncpy(sl[j],s+k,i-k);
                    sl[j][i-k]=0;
                    k=i;
                    j++;
                    ks++;
                }
            }
            if(ks%2==0)
            {
                for(j=0;j<ks;j++)
                {
                    strcpy(tmp,sl[j]);
                    strcpy(sl[j],sl[j+1]);
                    strcpy(sl[j+1],tmp);
                    j++;
                }
            }
            else
            {
                for(j=0;j<ks-1;j++)
                {
                    strcpy(tmp,sl[j]);
                    strcpy(sl[j],sl[j+1]);
                    strcpy(sl[j+1],tmp);
                    j++;
                }
            }
                for(j=0;j<ks;j++)
                {
                    fprintf(A,sl[j]);
                    fprintf(A," ");
                }
            
        }
    }
    else puts("Ошибка открытия файла!!!");
    getch();
    fclose(A);
    fclose(f);
    return 0;
}
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2013, 12:36  [ТС]
Нет, в учебнике явно требуют не использовать массивы. Во вложении страница с задачей (8 задача), внизу там прописано, что файлы нельзя использовать.
Миниатюры
Нахождение суммы диагональных элементов квадратной матрицы N x N  
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2013, 12:37  [ТС]
В последнем сообщении ошибся, не файлы нельзя использовать, а массивы
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 12:52
Ну значит, когда считал строку их файла - при разбитии её на части - отделил от неё одну часть (и преобразовал эту часть в число) и сразу проверяешь, если это не диагональный элемент - то дальше, если диагональный - суммируешь!
Следующий раз опять в эту строку считываешь!
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2013, 13:03  [ТС]
Но строка это тоже массив-массив символов
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 13:05
ну сделай строку из одного символа - тогда это будет не массив символов, а один символ!
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2013, 13:12  [ТС]
ну тогда, наверное, проще будет сразу в числовую переменную считывать. Я просто думал, что можно это как-нибудь с помощью метода seekg() сделать, ну типо поставить сразу указатель на диагональный элемент, а не проходить по всему файлу
0
 Аватар для serggg
77 / 52 / 32
Регистрация: 24.03.2013
Сообщений: 1,121
03.06.2013, 13:38
ну тогда, наверное, проще будет сразу в числовую переменную считывать. Я просто думал, что можно это как-нибудь с помощью метода seekg() сделать, ну типо поставить сразу указатель на диагональный элемент, а не проходить по всему файлу
а вот на счёт этого не скажу... не знаю...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2013, 13:38
Помогаю со студенческими работами здесь

Для заданой квадратной матрицы сформулировать одномерный массив из ее диагональных элементов.
Помогите пожалуйста решить задачу, написав код программы в С++ Для заданой квадратной матрицы сформулировать одномерный массив из ее...

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

Нахождение суммы элементов матрицы
как написать программу для решения S=\sum_{M}^{i=1}sqrt(\sum_{M}^{j=1}({a}_{y})^2) ? Я попытался сам но не уверен что правильно ...

Реализовать программу вычисления суммы элементов квадратной матрицы по заданной схеме
реализовать программу вычисления суммы элементов матрицы 15х15 (целые числа)

Нахождение суммы элементов динамической матрицы
Люди чесное слово убейте меня если это не правильно, должно вывадить сумму элементов массива! Но не работает...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru