• Какие есть хорошие курсы по С#(платные/бесплатные)?

    @marlaaa Автор вопроса
    Рассматривала IT academy и Teach me skills, в Беларуси. Часто слышу отзывы о них, но не знаю как выбирать
    Написано
  • Как перенести разметку текста из html файла в приложение wpf?

    @marlaaa Автор вопроса
    Василий Банников, я использую библиотеку EpubSharp для чтения EPub файлов и мне надо вывести на экран приложения текст из файла, в переменной html хранится текст с разметкой.
  • Как перенести разметку текста из html файла в приложение wpf?

    @marlaaa Автор вопроса
    У меня текст с разметкой html хранится в
    ICollection<EpubTextFile> html = book.Resources.Html;

    Как мне его корректно отобразить в блоке WebView?
  • Как перенести разметку текста из html файла в приложение wpf?

    @marlaaa Автор вопроса
    Василий Банников, Я хочу сделать открытие EPub файла и пользуюсь для этого EpubSharp.
    Я могу отобразить текст без разметки, но сама библиотека дает мне возможности сохранить разметку, но я не знаю как прописать это в коде
    private void Page2_Loaded(object sender, RoutedEventArgs e)
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "Epub files (*.epub)|*.epub|All files (*.*)|*.*";
                if (openFileDialog.ShowDialog() == false)
                {
                    return;
                }
                else
                {
                    string filePath = openFileDialog.FileName;
    
                    EpubBook book = EpubReader.Read(filePath);
    
                    string title = book.Title;
                    var authors = book.Authors;
                    byte[] cover = book.CoverImage;
    
                    ICollection<EpubChapter> chapters = book.TableOfContents;
    
                    ICollection<EpubTextFile> html = book.Resources.Html;
                    ICollection<EpubTextFile> css = book.Resources.Css;
                    ICollection<EpubByteFile> images = book.Resources.Images;
                    ICollection<EpubByteFile> fonts = book.Resources.Fonts;
    
    
                    string text = book.ToPlainText();
                    EpubFormat format = book.Format;
                    OcfDocument ocf = format.Ocf;
                    OpfDocument opf = format.Opf;
                    NcxDocument ncx = format.Ncx;
                    NavDocument nav = format.Nav;
                    bk.Items.Add(text);
                }
            }
  • Почему при умножении матриц, вводя разные значения при каждом новом запуске программы я получаю одни и те же размеры(не правильные)?

    @marlaaa Автор вопроса
    res2001,
    Я попробовала сделать через &n &m &l, вывод в файл поменялся но он всё равно не правильный.
    Еще один момент. Ты вызываешь CreatMatr несколько раз, но сохраняешь (пока что не сохраняешь) набор значений n, m, l только один - последний. А как же все предыдущие? Они не нужны?

    CreatMatr должен записывать в файл все значения в виде матриц, а потом их надо считать ReadMatr насколько я понимаю
    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <ctime> 
    using namespace std;
    
    void CreatMatr(int &n, int &m, int &l) {
        ofstream file("matriza.bin", ios::app);
        cout << "Ввести строки первой матрицы";
        cin >> n;
        cout << "Ввести столбцы для первой матрицы и строки для второй";
        cin >> m;
        int** M;
        M = new int* [n];
        for (int i = 0; i < n; i++)
            M[i] = new int[m];
    
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                M[i][j] = rand() % 10;
    
    
        cout << "Ввести столбцы второй матрицы";
        cin >> l;
        int** M2;
        M2 = new int* [m];
        for (int i = 0; i < m; i++)
            M2[i] = new int[l];
    
        for (int i = 0; i < m; i++)
            for (int j = 0; j < l; j++)
                M2[i][j] = rand() % 10;
    
    
    
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++) {
                file << M[i][j] << " ";
            }
            file << endl;
        }
        file << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < l; j++) {
                file << M2[i][j] << " ";
            }
            file << endl;
        }
        file << endl;
        file.close();
    
        delete[] M;
        delete[] M2;
    }
    
    vector<vector<int>> ReadMatrix(ifstream& is, int n, int m) {
        vector<vector<int>> result(n, vector<int>(m));
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                is >> result[i][j];
            }
        }
        return result;
    }
    
    void WriteMatrix(ofstream& os, const vector<vector<int>>& m1) {
        os << m1.size() << " " << m1[0].size() << "\n";
        for (int i = 0; i < m1.size(); ++i) {
            for (int j = 0; j < m1[0].size(); ++j) {
                os << m1[i][j] << " ";
            }
            os << "\n";
        }
    }
    
    vector<vector<int>> MatrixProduct(const vector<vector<int>>& m1, const vector<vector<int>>& m2) {
        int n = m1.size(), m = m2.size(), l = m2[0].size();
        vector<vector<int>> result(n, vector<int>(l));
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < l; ++j) {
                int sum = 0;
                for (int k = 0; k < m; ++k) {
                    sum += m1[i][k] * m2[k][j];
                }
                result[i][j] = sum;
            }
        }
        return result;
    }
    int main() {
        setlocale(LC_ALL, "Rus");
        int m=1, n=1, l=1;
        int k = 3;
        int r = 0;
        while (r < k) {
            CreatMatr(n, m, l);
            r++;
        }
    
        ifstream file("matriza.bin", ios::in);
        ofstream out("result.bin", ios::out);
        if (!file.is_open() || !out.is_open()) {
            cout << "Файл не открыт\n";
            return 1;
        }
    
        for (int i = 0; i < k; i++) {
        
    
            vector<vector<int>> m1 = ReadMatrix(file, n, m);
            vector<vector<int>> m2 = ReadMatrix(file, m, l);
    
            WriteMatrix(out, MatrixProduct(m1, m2));
    
        }
    
        out.close();
        file.close();
        return 0;
    }
  • Почему при умножении матриц, вводя разные значения при каждом новом запуске программы я получаю одни и те же размеры(не правильные)?

    @marlaaa Автор вопроса
    k-это количество произведений матриц которые я записываю в файл. Я решила сделать его 3. CreatrMatr - создаю файл и записываю в него матрицы. ReadMatr-читаю матрицу из файла в вектор.
    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <ctime> 
    using namespace std;
    
    int CreatMatr(int n, int m, int l) {
        ofstream file("matriza.bin", ios::app);
        cout << "Ввести строки первой матрицы";
        cin >> n;
        cout << "Ввести столбцы для первой матрицы и строки для второй";
        cin >> m;
        vector <std::vector <int>> myVect(n, std::vector <int>(m));
        for (size_t i = 0; i < n; i++)
        {
            std::vector <int> tmp(m);
            for (size_t j = 0; j < m; j++)
                tmp[j] = rand() % 100;
            myVect.push_back(tmp);
        }
        cout << "Ввести столбцы второй матрицы";
        cin >> l;
        vector <std::vector <int>> myVect1(n, std::vector <int>(l));
        for (size_t i = 0; i < n; i++)
        {
            std::vector <int> tmp(l);
            for (size_t j = 0; j < l; j++)
                tmp[j] = rand() % 100;
            myVect1.push_back(tmp);
        }
    
    
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++) {
                file << myVect[i][j] << " ";
            }
            file << endl;
        }
        file << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < l; j++) {
                file << myVect1[i][j] << " ";
            }
            file << endl;
        }
        file << endl;
        file.close();
    
        return n, m, l;
    }
    
    vector<vector<int>> ReadMatrix(ifstream& is, int n, int m) {
        vector<vector<int>> result(n, vector<int>(m));
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                is >> result[i][j];
            }
        }
        return result;
    }
    
    void WriteMatrix(ofstream& os, const vector<vector<int>>& m1) {
        os << m1.size() << " " << m1[0].size() << "\n";
        for (int i = 0; i < m1.size(); ++i) {
            for (int j = 0; j < m1[0].size(); ++j) {
                os << m1[i][j] << " ";
            }
            os << "\n";
        }
    }
    
    vector<vector<int>> MatrixProduct(const vector<vector<int>>& m1, const vector<vector<int>>& m2) {
        int n = m1.size(), m = m2.size(), l = m2[0].size();
        vector<vector<int>> result(n, vector<int>(l));
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < l; ++j) {
                int sum = 0;
                for (int k = 0; k < m; ++k) {
                    sum += m1[i][k] * m2[k][j];
                }
                result[i][j] = sum;
            }
        }
        return result;
    }
    int main() {
        setlocale(LC_ALL, "Rus");
        int m = 1, n = 1, l=1;
        int k = 3;
        int r = 0;
        while (r < k) {
            CreatMatr(n, m, l);
            r++;
        }
    
        ifstream file("matriza.bin", ios::in);
        ofstream out("result.bin", ios::out);
        if (!file.is_open() || !out.is_open()) {
            cout << "Файл не открыт\n";
            return 1;
        }
    
        for (int i = 0; i < k; i++) {
            file >> n >> m >> l;
    
            vector<vector<int>> m1 = ReadMatrix(file, n, m);
            vector<vector<int>> m2 = ReadMatrix(file, m, l);
    
            WriteMatrix(out, MatrixProduct(m1, m2));
    
        }
    
        out.close();
        file.close();
        return 0;
    }

    Я сначала попробовала изменить создание файла и его заполнение под вектор, но оно не работало поэтому я просто поправила то что уже было:
    убрала утечку памяти и в CreatMatr сделала return n,m,l
    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <ctime> 
    using namespace std;
    
    int CreatMatr(int n, int m, int l) {
        ofstream file("matriza.bin", ios::app);
        cout << "Ввести строки первой матрицы";
        cin >> n;
        cout << "Ввести столбцы для первой матрицы и строки для второй";
        cin >> m;
        int** M;
        M = new int* [n];
        for (int i = 0; i < n; i++)
            M[i] = new int[m];
    
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                M[i][j] = rand() % 10;
    
    
        cout << "Ввести столбцы второй матрицы";
        cin >> l;
        int** M2;
        M2 = new int* [m];
        for (int i = 0; i < m; i++)
            M2[i] = new int[l];
    
        for (int i = 0; i < m; i++)
            for (int j = 0; j < l; j++)
                M2[i][j] = rand() % 10;
    
    
    
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++) {
                file << M[i][j] << " ";
            }
            file << endl;
        }
        file << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < l; j++) {
                file << M2[i][j] << " ";
            }
            file << endl;
        }
        file << endl;
        file.close();
        delete[] M;
        delete[] M2;
        return n, m, l;
    }
    
    vector<vector<int>> ReadMatrix(ifstream& is, int n, int m) {
        vector<vector<int>> result(n, vector<int>(m));
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                is >> result[i][j];
            }
        }
        return result;
    }
    
    void WriteMatrix(ofstream& os, const vector<vector<int>>& m1) {
        os << m1.size() << " " << m1[0].size() << "\n";
        for (int i = 0; i < m1.size(); ++i) {
            for (int j = 0; j < m1[0].size(); ++j) {
                os << m1[i][j] << " ";
            }
            os << "\n";
        }
    }
    
    vector<vector<int>> MatrixProduct(const vector<vector<int>>& m1, const vector<vector<int>>& m2) {
        int n = m1.size(), m = m2.size(), l = m2[0].size();
        vector<vector<int>> result(n, vector<int>(l));
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < l; ++j) {
                int sum = 0;
                for (int k = 0; k < m; ++k) {
                    sum += m1[i][k] * m2[k][j];
                }
                result[i][j] = sum;
            }
        }
        return result;
    }
    int main() {
        setlocale(LC_ALL, "Rus");
        int m = 1, n = 1, l=1;
        int k = 3;
        int r = 0;
        while (r < k) {
            CreatMatr(n, m, l);
            r++;
        }
    
        ifstream file("matriza.bin", ios::in);
        ofstream out("result.bin", ios::out);
        if (!file.is_open() || !out.is_open()) {
            cout << "Файл не открыт\n";
            return 1;
        }
    
        for (int i = 0; i < k; i++) {
            file >> n >> m >> l;
    
            vector<vector<int>> m1 = ReadMatrix(file, n, m);
            vector<vector<int>> m2 = ReadMatrix(file, m, l);
    
            WriteMatrix(out, MatrixProduct(m1, m2));
    
        }
    
        out.close();
        file.close();
        return 0;
    }
  • Как сделать удаление и добавление элемента в массив структур?

    @marlaaa Автор вопроса
    Евгений Шатунов,
    void elementdob(student*& stu, int& n, student newelement) {
    
        student* stooo = new student[n+1];
        for (int i = 0; i < n; i++) {
            stooo[i] = stu[i];
        }
    
        stooo[n] = newelement;
        n++;
        delete[] stu;
        stu = stooo;
        
    }

    stooo[n] = newelement; Здесь я хочу сделать newelement последним элементом структуры. А мне выдаёт: Чтение недопустимых данных из "stooo": доступный для чтения объем равен "(size_t)*560+8" байт, однако считать можно только "n" байт. Почему так? Как это поправить?
  • Как заполнить конец каждой строки символом '*'?

    @marlaaa Автор вопроса
    А есть способ поставить * после букв
    #include <iostream>
    #include <fstream>
    using namespace std;
    int main()
    {
        setlocale(LC_ALL , "Russian");
        int N;
        cout << "Введите N";
        cin >> N;
        ofstream file("proga.txt");
        for (int i = 0; i < N; i++)
        {
            for (int e = 1; e < N-i; e++)
                file << "*";
            for (char j = 'A'; j <= 'A' + i; j++)
                file << j;
                file << '\n';
    
        }
    
        file.close();
        return 0;
    }
  • Рекурсия.По какой причине ответ всегда 0?

    @marlaaa Автор вопроса
    Wataru, если вводить числа, кроме нуля, то выводит x^n=0, хотя должно выводить число возведённое в степень
    #include <iostream>
    #include <cmath>
    using namespace std;
    float power(float X, int N){
        if (N != 0){
            if (N < 0){
                return 1 / power(X, -N);
                }
            else if(N>0){
                if (N % 2 == 0){
                    float b=power(X, N/2);
                    return pow(b,2);
                    }
                else{    
                    return X * power(X, N - 1);
                    }
                }
        else{
            return 1; 
            }
    	}
    }
    int main(){
    float X;
    int N;
    cout<<"X=";
    cin>>X;
    for (int i=0;i<=5;i++){
        cout<<"N=";
        cin>>N;
        cout<<X<<"^"<<N<<"="<<power(X,N)<<endl;
    	}
    }

    624ea358c44cf164506303.jpeg
  • Сортировка строк по алфавиту. Как это подробно работает?

    @marlaaa Автор вопроса
    jcmvbkbc, т.е когда мы сравниваем слова мы сравниваем и все буквы в слове по очереди?
  • Сортировка строк по алфавиту. Как это подробно работает?

    @marlaaa Автор вопроса
    calculator212, j, это, как я понял, буквы. Как компилятор понимает какая буква больше?
  • Как исправить выведенные ошибки C2109 и C2676?

    @marlaaa Автор вопроса
    Цикл вообще создан для вывода массива по алфавиту. Есть возможность сделать это без gosvos[j] > gosvos[j+1] или как преобразовать эту строку чтоб она была правильной?
  • Не компилируется код. Как исправить ошибку?

    @marlaaa Автор вопроса
    Выделена под три элемента включая нулевой