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

считать из файла квадратный массив и найти в главной диагонале элемент 0 - C++

Восстановить пароль Регистрация
 
stels009
 Аватар для stels009
15 / 15 / 0
Регистрация: 05.04.2011
Сообщений: 401
27.12.2011, 23:32     считать из файла квадратный массив и найти в главной диагонале элемент 0 #1
Вообщем надо сделать чтобы прога читала из файла квадратный массив и находила в главной диаганили элемент 0...
Вообщем то фактически все сделано но при попытка вывода массива на экран он вмето чисел выдет чтото не понятное...
Исходник я там подписал где возникает проблема...
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*Написать программу, которая считывает из файла матрицу A размерами n*n,
выводит ее на экран и находит индекс первого элемента,
равного нулю, на главной диагонали.*/
#include<iostream>  
#include<iomanip>
#include<math.h>
#include<conio.h>
#include<String.h>
#include<ctype.h>
#include <stdlib.h>
#include<windows.h>
#include <fstream> // Этот файл обеспечивает работу с файлами
using namespace std; // !!! Используем стандартное пространство имён
// функция перестановки значений двух величин
void swap(float& a, float& b)
{
    float tmp;
    tmp=a; a=b; b=tmp;
}
int main()
{   
    if(SetConsoleCP(1251)==0)
    {
        cerr<<"Fialed to set codepage!"<<endl;
    }
    if(SetConsoleOutputCP(1251)==0)
    {
        cerr<<"Failed to set OUTPUT page!"<<endl;
    }
    // Объявляем файлы:
    ifstream inf("test.txt");
    ofstream outf("sort.txt");
    int m=1, n=1;int sz = 0; // Количество строк и столбцов
    cout<<("Введите размер квадратной матрици ");
    cin>>sz;m=sz;n=sz;
    register int i,j; 
// счетчики (пример использования регистровых переменных)
    inf >> m >> n; 
    /* считываем из файла размеры матрицы, которые должны быть записаны в начале файла */
    float *vek, **mat; 
    /* Указатель на матрицу как на линейный массив и указатель на массив ука¬за-телей для обращения к элементам массива как к элементам матрицы. Элементы мас-сива объявлены как числа, которые могут иметь дробную часть */
    vek=new float[m*n]; // выделяем место под элементы матрицы 
    mat=new float*[m];
 // выделяем место под массив указателей на строки матрицы
    for (i=0; i<m; i++) // заполняем массив указателями
        mat[i]= &vek[i*n]; // деление на строки матрицы
    printf("Исходная матрица:\r\n");
    // чтение элементов из файла
    for (i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            inf>>mat[i][j]; 
            // считываем элемент как слово и записываем в матрицу
            if (inf.eof()) 
            // если достигнут конец файла, а матрица еще не заполнена
            {
                printf("Не хватает данных\r\n");
                _getch();
                exit(0);
            }
/*Подозрение на эту строчку>>>>>*/printf("%10.2f",mat[i][j]); // вывод элемента на экран
        }
        printf("\r\n"); // перевод курсора в начало следующей строки
    }
//=====================================================================================================================
int diag = 1;i=1;j=1;int otv = 0;
for(diag <= sz;++diag;i=++j)
{
    if(mat[i][j] == 0)/*<<<В следствии не работет это условие*/
    {
        otv = diag;
    }
}
//=====================================================================================================================
    /*cout << "Отсортированная по столбцам: \n";
    for (i=0; i<m; i++)
    {
        for(j=0; j<n; j++)
        {
            // запись элемента в файл:
            outf <<setiosflags(ios::showpoint)<< setprecision(2)<<setw(10)<<mat[i][j];
            // вывод на экран:
            cout <<setiosflags(ios::showpoint) << setprecision(2)<< setw(10)<<mat[i][j];
// каждый элемент записывается с двумя цифрами после точки в поле из 8 позиций
        }
        outf<<endl; 
// в конце строки матрицы выводим признак конца строки
        cout << endl;
    }*/
cout<<"Номен Строки нулевого элемента "<<otv;
cout<<"Номен Столбца нулевого элемента "<<otv;
    outf.close(); 
    delete []mat; 
    delete []vek; 
    _getch();
    return 0;
}
Как сделать чтобы в ячейках лежало конкретное число считанное из массива файла а не та бурда которая сча и желательно чтобы работало условие проверки если = 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2011, 23:32     считать из файла квадратный массив и найти в главной диагонале элемент 0
Посмотрите здесь:

Вывести строку матрицы, в которой элемент, стоящий на главной диагонале, максимальный среди элементов главной диагонали. C++
C++ Массив: Найти наибольший элемент главной диагонали и определить его индексы
C++ Программа, которая вводит c клавиатуры двумерный квадратный массив целых чисел, заменяет все отрицательные элементы главной диагонали на сумму всех эл
C++ Одномерный массив. Считать из файла, найти количество элементов, удовлетворяющих условию
Квадратный массив - поменяйте в нем местами элементы главной и побочной диагоналей C++
C++ Дан квадратный массив. Поменяйте в нем местами элементы главной и побочной диагоналей.
В квадратной матрице вычислить сумму элементов, принадлежащей главной диагонале. C++
Двумерный массив. Найти минимальный элемент в, среди элементов, лежащих выше главной диагонали C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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