Загрузка...

Find and solve the error

Thread in C/C++ created by KinetiK Dec 3, 2021. 197 views

  1. KinetiK
    KinetiK Topic starter Dec 3, 2021 20,066 Jan 18, 2020
    Выскакивает какого-то хуя эта поебень:
    [IMG]
    Код:
    Code
    #include <fstream>
    #include <iostream>
    #include <cmath>

    using namespace std;

    struct Link
    {
    int data;
    Link* next;
    };



    int main()
    {
    const int m = 4;
    bool input = true;

    ifstream in("arrive.txt");
    int data;
    int count = 0;
    Link* first = 0;
    Link* last = 0;
    Link* link = 0;
    //зчитування даних з файлу та зберігання їх у зв'язаному списку
    while (in)
    {
    in >> data;
    if (!in)
    break;
    link = new Link();
    link->data = data;
    link->next = 0;
    if (input)
    {
    input = false;
    first = link;
    }
    else last->next = link;
    last = link;
    count++;
    }
    //розрахунок кількості рядків
    int rows = ceil((double)count / m);
    //визначення двовимірного масиву
    int** arr = new int* [rows];
    for (int i = 0; i < rows; i++)
    {
    arr[i] = new int[m];
    }
    //заповнення масиву
    link = first;
    for (int i = 0; i < rows; i++)
    {
    for (int j = 0; j < m; j++)
    {


    if (link != 0)
    {
    arr[i][j] = link->data;

    link = link->next;
    }
    else
    arr[i][j] = 0;
    }
    }
    //видалення структур з динамічної пам'яті
    while (first)
    {
    link = first;
    first = first->next;
    delete link;
    }
    // перший крок
    for (int i = 0; i < m; i++) {
    for (int j = 0; j < rows; j++) {
    if (arr[i][j] < 0 && arr[i][j] % 2) {
    arr[i][j] *= 2;
    }
    }
    }
    //другий крок
    double* b = new double[m];
    for (int i = 0; i < m; i++) {
    for (int j = 0; j < rows; j++) {
    double c = arr[i][j];
    if (c > 0) {
    b[i] += log10(c);
    }
    }
    }

    //занесення даних до файлу
    ofstream out("result.txt");
    out << "First step" << endl;
    out << "-----------------------------------------------------------" << endl;
    for (int i = 0; i < rows; i++)
    {
    for (int j = 0; j < m; j++)
    {

    out << arr[i][j] << ' ';
    }
    out << endl;
    }
    out << "-----------------------------------------------------------" << endl;
    out << "Second step" << endl;
    out << "-----------------------------------------------------------" << endl;
    for (int i = 0; i < 4; i++)
    {


    out << b[i] << ' ';

    }
    out << endl;
    out << "-----------------------------------------------------------" << endl;
    //видалення масивів з динамічної пам'яті
    for (int i = 0; i < rows; i++)
    {
    delete[] arr[i];
    }
    delete[] arr;
    delete[] b;
    return 0;
    }
     
  2. Onlyinc
    Onlyinc Dec 3, 2021 76 Oct 16, 2021
    Ты вроде пытаешься влесть в другой участок памяти, и за это и UB
     
  3. mazila43
    mazila43 Dec 3, 2021 1 Dec 3, 2021
    Link* first = 0 удали
     
Top
Loading...