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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
No0b41k
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 68
#1

работа с матрицей - C++

21.12.2010, 17:37. Просмотров 286. Ответов 0
Метки нет (Все метки)

Пожалуйста помогите дописать правильно функцию int iz_faila().
Эта функция у меня читает матрицу из фаила, и выводит ее на экран. В добавок к этому необходимо, что бы программа подсчитала новую из той, которая была в фаиле, (по форме, как в функции void s_klav().) и ее вывела на экран. И что бы после этого, полученную матрицу, можно было записать в фаил, как в функции int masv_file(). Это у меня не получается((

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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>
#include <ctime> 
#include <cmath>
#include <stdio.h> 
#include <cstdlib>
const int NotUsed=system("color F0");
  
using namespace std;
int sr_geo(); //среднее геометрическое
void s_klav(); //ввод с клавиатуры
void mas_vyv(); //вывод на экран
int m_menu(); //меню программы
int iz_faila(); //чтение матрицы из фаила
int masv_file(); //вывод в фаил
int **arr;
int Rw=0;        //размерность матрицы
int sr_geo(int **arr, int n)
{
    int sr_geo=0;
    float pr=1;
    for(int i=0; i<n; i++)
        pr*=abs(arr[i][i]);
    
    sr_geo = (int)exp(log((float)pr)/n);
        return sr_geo;
}
 
int main()
{
    char fv;
    if(m_menu())
    {
    cout<<endl;
    mas_vyv();
    cout<<"Vyvesti v fail? y/n \n";
    do 
    {
        cin>>fv;
    }
    while(fv!='y' && fv!='n');
    if (fv=='y')
    masv_file();
    else printf("Exit \n");
    }
    return 0;
}
void s_klav()
{
    srand((unsigned)time(NULL));
    int n,i,j;
    int sr;
    cout<<"Vvedite razmer massiva: ";
    cin>>Rw;
    arr = new int*[Rw];
    cout<<"Massiv: "<<endl;
    for(i=0; i<Rw; i++)
    {
        arr[i] = new int[Rw];
        for(j=0; j < Rw; j++)
        {
            arr[i][j]=rand()%9+1;
            cout<<arr[i][j]<<"  ";
        }
            cout<<endl;
    }
}
void mas_vyv()
{
    int sr = sr_geo(arr,Rw); 
        cout<<endl;
        cout<<"Sformirovannaya matrica:"<<endl;
        for(int i=0; i < Rw; i++)
        {
            for(int j=0; j < Rw; j++)
            {
                    if((i+j)%2==0)
                    {
                            arr[i][j]=sr;
                    }
                    cout<<arr[i][j]<<"  ";
            }
            cout<<endl;
        }
}
int m_menu()
{
    int cho;
    
    cout<<"1 - vvesti s klaviaturi\n2 - iz faila\n0 - vyhod\n";
    cin>>cho;
    switch(cho)
    {
    case 0:
        exit('Exit');
        break;
    case 1:
        s_klav();
        return 1;
        break;
    case 2:
        return iz_faila();
        break;
        default: cout<<"vvedite pynkt menu \n";
    }
    return 1;
}
int iz_faila()
{
    FILE *f;
    char FileName [80];
    printf ("Vvedite adres faila: \n");
    scanf("%s",FileName);
    printf ("Adres faila: %s\n", FileName);
    f=fopen(FileName,"rt");
    int nElements=0, m=0;
    char ch;
    if(f!=NULL)
    {
        printf("Fail yspeshno otkrit! \n\n");
        while((ch=getc(f))!=EOF)
        {
            if((ch!='\n')&&(ch!=' '))nElements++;    
                printf(" %c ", ch);            
        }
        cout<<endl<<endl;
        printf("Number=%d",nElements);
        cout<<endl;
        fseek(f,0,SEEK_SET);
        fclose(f);
        return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return iz_faila();
    }
}
int masv_file()
{
    char fname [80];
    cout<<"Vvedite polnoe nazvanie fayla: \n";
    cin>>fname;
    FILE *pFile = fopen(fname, "w+");
    if(pFile != NULL)
    {
        for (int i=0; i < Rw; i++)
        {
            for (int j=0; j < Rw; j++)
            {
                fprintf(pFile,"%d ", arr[i][j]);
            }
            fprintf(pFile,"\n");
            puts("");
        }
        fclose(pFile);
            return 1;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        exit(1);
    }
    return 1;
}
Добавлено через 19 часов 14 минут
ап, помогите пожалуйста, очень срочно!

Добавлено через 22 часа 14 минут
up!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 17:37     работа с матрицей
Посмотрите здесь:

Работа с целочисленной матрицей - C++
Дана целочисленная квадратная матрица 1. Найти сумму модулей элементов в строках, содержащих хотя бы один неотрицательный элемент 2....

Работа с квадратной матрицей - C++
Дана целочисленная квадратная матрица NxN определить: 1)Cумму элементов в тех столбцах,которые не содержат отрицательных элементов.( у...

Работа с динамической матрицей - C++
Всем доброго времени суток, проблема заключается в том, что я ввожу значения в матрицу, а когда пытаюсь их обработать или просто вывести на...

работа с симметричной матрицей - C++
Работаю над реализацией симметричной матрицы на Си и столкнулся с такой проблемой: т.к. матрица симметричная,то памяти достаточно...

Работа с матрицей (нахождение детерминант) - C++
привет всем форумчанинам! моя первая тема так что за оформление сори)) а теперь о главном)) В общем есть программа написанная на...

Работа с очень большой матрицей - C++
Надо постоянно в программе обращаться к матрице большого размера с элементами double (приблизительно она весит 40Гб). Какие элементы С++...

Работа с матрицей. Какой необходим код? - C++
Дан двумерный массив размера 3x4. Найти максимальный элемент во второй строке. Вывести на экран максимальный элемент и номера его строки и...

Работа с матрицей. Сравнение строк и столбцов - C++
Здравствуйте. Помогите пожалуйста реализовать сравнение каждой строки со всеми столбцами. Предположим есть матрица 3х3: 3 ...

Работа с матрицей - исправить ошибки в коде - C++
работать не хочет... вылетает после 35 строки.(компилит нормально) как быть друзья? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

Работа с матрицей, представленной динамическим массивом - C++
Есть задание: Написать программу, которая осуществляет добавление, удаление строки или столбца в любое место двумерной матрицы по выбору...


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

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

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