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

Массивы. Структурные типы. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерный массив http://www.cyberforum.ru/cpp-beginners/thread387747.html
Двумерные массивы. Проверить, все ли столбцы матрицы упорядочены по убыванию. Если нет, то упорядочить первый неупорядоченный столбец
C++ Расширение языка С. WTF? Hi, All! Решил на выходных заняться учебой, сессия скоро. На эти выходные наметил себе план работ - скачать задания:) Вот сижу читаю содержание учебной дисциплины. Кроме всего прочего вот, что... http://www.cyberforum.ru/cpp-beginners/thread387745.html
биномиальная куча C++
подкиньте какой литературы или пример формирования и редактирования биномиальной кучи, буду очень благодарен
C++ Написать программу для последовательного хранения трех стеков в массиве из N элементов
Написать программу для последовательного хранения трех стекiв в массиве из N элементов (стеки размещаются в массиве равномерно друг за другом). На входе задаются пары целых чисел (i, j), где 1  и ...
C++ Строковые массивы. http://www.cyberforum.ru/cpp-beginners/thread387705.html
Даны натуральное число n символы s1 ...sn.Известно, что среди s,,s есть по крайней мере 1 запятая.Найти такое натуральное число i ,что s - первая по порядку запятая.
C++ Программка вроде не сложная, но никак не могу разобраться с модулями... Часть кода есть Постановка задачи Определите массив, хранящий строки символов. Создайте массив слов, считываемых из файла. Повторяющиеся слова не должны повторно заноситься в массив. Для каждого из слов... подробнее

Показать сообщение отдельно
Selector_Al
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 12
20.11.2011, 21:45  [ТС]
Идея такова:
Входной файл ("a.txt"):

//матрица А:
1/2 3/5 2/3
12/7 3/2 6/17
5/3 7/2 4/4

//матрица Б:
1/3 4/5 3/1
11/2 4/7 3/10
12/3 5/7 7/10

(естественно.. в самом файле только рациональные дроби)

далее...:
У меня проблема со считыванием из файла, не знаю как его грамотнее организовать...
Я создаю две структуры.. структуру элементов и структуру матриц

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
#include <iostream>
#include <fstream>
using namespace std;
 
struct Spisok
{
    Spisok *next;
    int x,y;
};
 
struct Matirx
{
    Spisok *start, *b;
    char a; //путь к файлу
 
    int in()
    {
        char s=getc(a); //
        float n=0.0, m=0.0;
        int i=1;
        bool flag=true;
        while(s!=/*условие конца строки*/)
            if((s>='0') && (s<='9'))
            {
                if(flag==true)
                    n=n*10+('s'-'1'+1);
                else
                    m=m*10+('s'-'1'+1);
            }
            if((s=='/') && (s==' '))
            {
                if(flag==true)
                    start->x=n;
                else
                    start->y=m;
                start=start->next;
                flag==!flag;
            }
            s=getc(a);
}
};
 
int main(int argc, char* argv[])
{
    const char* fileName="inputFile.txt";
    //in(fileName);
}
мне просто нужно подсказать как лучше их в файле представить и считать из него... а дальше я сам все сделаю

Добавлено через 6 часов 13 минут
Идея изменилась:
-по умолчанию в программе должны быть матрицы 3х3

inputfile.txt содержит:
1 2 3 5 2 3
12 7 3 2 6 17
5 3 7 2 4 4

1 3 4 5 3 1
11 2 4 7 3 10
12 3 5 7 7 10
далее...:

file.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef _FILE_H
#define _FILE_H
 
#include "elem.h"
#include "matrix.h"
 
//ф-ия проверки на существование всякой... тра-ля-ля...
int checkFile(int );
 
//ф-ия проверки существования входного файла и наличия в нем элементов матрицы
int checkInFile(int );
 
//ф-ия проверки вывода элементов из файла
int checkOutElem(const char* , Elem* , int );
 
//подсчет числа элементов во входном файле
int countElemnts(const char* );
 
//чтение элементов из входного файла
bool readElemnts(const char* , Elem* , int );
 
#endif
file.cpp
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
#include "file.h"
 
int checkFile(int argc)
{
    if (argc < 3)
    {
        cout<<"Строка запуска: Matrix.exe inputfile.txt outputfile.txt"<<endl;
        return -1;
    }
    else return 0;
}
 
int checkInFile(int elemNum)
{
    if(elemNum<9)
    {
        cout<<"Входной файл не существует или в нем слишком мало элементов для формирования матрицы"<<endl;
        return 0;
    }
    else return -2;
}
 
int checkOutElem(const char* inFileName,Elem* elemArr,int elemNum)
{
    if (!readElemnts(inFileName,elemArr,elemNum))
    {
        cout<<"Неизвестная ошибка при вводе точек из файла"<<endl;
        return 0;
    }
    else return -3;
}
 
int countElemnts(const char* fileName)
{
    ifstream in(fileName);
    //файл не открыт
    if (!in.is_open())
        return 0;
    Elem e;
    int i; //тут, т.к. нам нужно вернуть i в качестве результата ф-ии 
    for (i=0; ;i++)
    {
        in>>e;
        if (in.fail())
            break;
    }
    return i;
}
 
bool readElemnts(const char* fileName,Elem* elemArr,int maxElemNum)
{
    ifstream in(fileName);
    //файл не открыт
    if (!in.is_open())
        return 0;
    for (int i=0; i<maxElemNum; i++)
    {
        in>>elemArr[i];
        if (in.fail())
            return false;
    }
    return true;
}
elem.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef _ELEM_H
#define _ELEM_H
 
#include <iostream>
#include <fstream>
using namespace std;
 
struct Elem
{
private:
   int numer,denom;
public:
   Elem();
   //ввод элементов
   friend istream& operator >> (istream& , Elem& );
   //вывод элементов
   friend ostream& operator << (ostream& , const Elem& );
};
 
#endif
elem.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "elem.h"
 
Elem::Elem()
{
    numer=0;
    denom=1;
}
 
istream& operator >> (istream& in, Elem& e)
{
    in>>e.numer>>e.denom;
    return in;
}   
 
ostream& operator <<(ostream& out, const Elem& e)
{
    out<<"("<<e.numer<<" "<<e.denom<<")";
    return out;
}
main.cpp
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
#include "file.h"
/*#include <iostream>
using namespace std;*/
 
int main(int argc, char** argv)
{
    setlocale(2, "Russian");
    checkFile(argc); //ф-ия проверки существования файлов программы
    //имя входного файла
    const char* inFileName="inputfile.txt";
    const char* outFileName="outputfile.txt";
    //определение общего количества элементов входного файла
    int elemNum=countElemnts(inFileName);
    //cout<<"Количество элементов: "<<elemNum;
    checkInFile(elemNum);
    Elem *elemArr=new Elem[elemNum]; //массив элементов матрицы
    checkOutElem(inFileName,elemArr,elemNum);
    //размерновть матрицы, будем использовать 3 сразу и для строк и для столбцов
    const int dimMaxMatrix=3;
    Matrix matrixArr[dimMaxMatrix];
 
    
    cout<<endl; system("Pause");
    return 0;
}
как мне теперь сделать матрицу!??
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru