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

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

Восстановить пароль Регистрация
 
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2013, 00:42     Нахождение суммы диагональных элементов квадратной матрицы N x N #1
Написать программу, которая найдет сумму диагональных элементов квадратной матрицы N x N. Матрица находится в текстовом файле вида
4 6 7
4 7 90
34 5 7
язык С++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 00:42     Нахождение суммы диагональных элементов квадратной матрицы N x N
Посмотрите здесь:

Написать функцию для вычисления суммы элементов квадратной матрицы, расположенных ниже главной диагонали C++
Для заданой квадратной матрицы сформулировать одномерный массив из ее диагональных элементов. C++
C++ Проверка на преобладание диагональных элементов матрицы
C++ Получить новую матрицу путем вычитания от элементов каждого столбца первой матрицы суммы элементов соответствующих строк второй матрицы
C++ Ввод элементов массива с клавиатуры, вычисление суммы по формуле, нахождение максимальной суммы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 10:51     Нахождение суммы диагональных элементов квадратной матрицы N x N #2
Вы хотите, чтобы Вам полностью написали программу?
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2013, 11:36  [ТС]     Нахождение суммы диагональных элементов квадратной матрицы N x N #3
Да, думаю, достаточно будет, если вы объясните как считать из файла диагональные элементы матрицы. Да, забыл сказать, массивы использовать нельзя. Единственное, что я смог придумать, это ввести два счетчика и идти по всему файлу. При этом один будет увеличиваться при перемещении по строке и сбрасываться на ноль при переходе на новуё строку, а второй при переходе на новую строку. Совпадение значений обоих счетчиков -признак диагонального элемента
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 11:45     Нахождение суммы диагональных элементов квадратной матрицы N x N #4
Вот у меня есть задача: В ней считываются строки из фала и разбиваются на слова! Потом слова переворачиваются и снова записываются в файл! Вам оттуда нужен будет только алгоритм считывания строк из файла и разбиение их на слова (каждое слово у вас это будет число). Просто нужно будет преобразовать эту строку вот так:
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;
}
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2013, 12:36  [ТС]     Нахождение суммы диагональных элементов квадратной матрицы N x N #5
Нет, в учебнике явно требуют не использовать массивы. Во вложении страница с задачей (8 задача), внизу там прописано, что файлы нельзя использовать.
Миниатюры
Нахождение суммы диагональных элементов квадратной матрицы N x N  
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2013, 12:37  [ТС]     Нахождение суммы диагональных элементов квадратной матрицы N x N #6
В последнем сообщении ошибся, не файлы нельзя использовать, а массивы
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 12:52     Нахождение суммы диагональных элементов квадратной матрицы N x N #7
Ну значит, когда считал строку их файла - при разбитии её на части - отделил от неё одну часть (и преобразовал эту часть в число) и сразу проверяешь, если это не диагональный элемент - то дальше, если диагональный - суммируешь!
Следующий раз опять в эту строку считываешь!
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2013, 13:03  [ТС]     Нахождение суммы диагональных элементов квадратной матрицы N x N #8
Но строка это тоже массив-массив символов
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 13:05     Нахождение суммы диагональных элементов квадратной матрицы N x N #9
ну сделай строку из одного символа - тогда это будет не массив символов, а один символ!
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2013, 13:12  [ТС]     Нахождение суммы диагональных элементов квадратной матрицы N x N #10
ну тогда, наверное, проще будет сразу в числовую переменную считывать. Я просто думал, что можно это как-нибудь с помощью метода seekg() сделать, ну типо поставить сразу указатель на диагональный элемент, а не проходить по всему файлу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 13:38     Нахождение суммы диагональных элементов квадратной матрицы N x N
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
serggg
53 / 37 / 5
Регистрация: 24.03.2013
Сообщений: 630
03.06.2013, 13:38     Нахождение суммы диагональных элементов квадратной матрицы N x N #11
ну тогда, наверное, проще будет сразу в числовую переменную считывать. Я просто думал, что можно это как-нибудь с помощью метода seekg() сделать, ну типо поставить сразу указатель на диагональный элемент, а не проходить по всему файлу
а вот на счёт этого не скажу... не знаю...
Yandex
Объявления
03.06.2013, 13:38     Нахождение суммы диагональных элементов квадратной матрицы N x N
Ответ Создать тему
Опции темы

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