Загрузка...

С++ надо саппорт с заданием

Тема в разделе C/C++ создана пользователем Identify 17 мар 2023. (поднята 18 мар 2023) 362 просмотра

  1. Identify
    Identify Автор темы 17 мар 2023 Переебал бабку кувалдой 765 5 июл 2019
    Разработать программу с единственным циклом и ветвлением в теле цикла.

    [IMG]
     
    17 мар 2023 Изменено
  2. Daemon
    Daemon 17 мар 2023 1680 8 янв 2021
    Вам надо именно динамический массив (std::vector) или массив переменной длины (new type[count])?
     
    1. Daemon
      nullptr, он то здесь причем, где вы там динамику увидели?
    2. Identify Автор темы
      Daemon, динамический
  3. lethe1337
    lethe1337 23 мар 2023 7 14 май 2020
    Если есть вопросы дай знать=)
    C
    #include <iostream>
    #include <fstream>

    using namespace std;

    void createArray(int**& arr, int p, int t) {
    arr = new int* [p];
    for (int i = 0; i < p; i++) {
    arr[i] = new int[t];
    }
    }

    void fillArray(int** arr, int p, int t) {
    for (int i = 0; i < p; i++) {
    for (int j = 0; j < t; j++) {
    cout << "Введите arr[" << i << "][" << j << "]: ";
    cin >> arr[i][j];
    }
    }
    }

    void printArray(int** arr, int p, int t, ofstream& out) {
    for (int i = 0; i < p; i++) {
    for (int j = 0; j < t; j++) {
    cout << arr[i][j] << " ";
    out << arr[i][j] << " ";
    }
    cout << endl;
    out << endl;
    }
    }

    void deleteArray(int**& arr, int p) {
    for (int i = 0; i < p; i++) {
    delete[] arr[i];
    }
    delete[] arr;
    arr = nullptr;
    }

    double averageNonNegative(int** arr, int p, int t, int* nonNegCount) {
    double sum = 0.0;
    int count = 0;
    for (int i = 0; i < p; i++) {
    int rowNonNegCount = 0;
    for (int j = 0; j < t; j++) {
    if (arr[i][j] >= 0) {
    sum += arr[i][j];
    count++;
    rowNonNegCount++;
    }
    }
    nonNegCount[i] = rowNonNegCount;
    }
    if (count == 0) {
    return 0;
    }
    return sum / count;
    }

    int main() {
    int** arr = nullptr;
    int p, t;
    cout << "Введите размерность матрицы (p, t): ";
    cin >> p >> t;

    createArray(arr, p, t);
    fillArray(arr, p, t);

    ofstream outFile("output.txt");
    printArray(arr, p, t, outFile);

    int* nonNegCount = new int[p];
    double avg = averageNonNegative(arr, p, t, nonNegCount);

    cout << "Среднее арифметическое неотрицательных элементов: " << avg << endl;
    outFile << "Среднее арифметическое неотрицательных элементов: " << avg << endl;

    for (int i = 0; i < p; i++) {
    cout << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl;
    outFile << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl;
    }

    deleteArray(arr, p);
    delete[] nonNegCount;
    outFile.close();

    return 0;
    }
     
    23 мар 2023 Изменено
    1. Посмотреть предыдущие комментарии (28)
    2. Daemon
    3. lethe1337
      Daemon, я понимаю, что вектор - это динамический массив, к тому же с удобным инструментом расширения по мере надобности. почему я не подумал про вектора - по условию не подразумевалось изменение размерности в будущем, поэтому использовал new
  4. lethe1337
    lethe1337 23 мар 2023 7 14 май 2020
    После дискуссии под предыдущим кодом, переделал в вектора, также добавил проверку на то, существует ли текстовик, если нет - создает его.

    C
    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <windows.h>

    using namespace std;

    void createArray(vector<vector<int>>& arr, int p, int t) {
    arr.resize(p, vector<int>(t));
    }

    void fillArray(vector<vector<int>>& arr, int p, int t) {
    for (int i = 0; i < p; i++) {
    for (int j = 0; j < t; j++) {
    cout << "Введите arr[" << i << "][" << j << "]: ";
    cin >> arr[i][j];
    }
    }
    }

    void printArray(vector<vector<int>>& arr, int p, int t, ofstream& out) {
    for (int i = 0; i < p; i++) {
    for (int j = 0; j < t; j++) {
    cout << arr[i][j] << " ";
    out << arr[i][j] << " ";
    }
    cout << endl;
    out << endl;
    }
    }

    void deleteArray(vector<vector<int>>& arr) {

    arr.clear();

    }


    double averageNonNegative(vector<vector<int>>& arr, int p, int t, vector<int>& nonNegCount) {
    double sum = 0.0;
    int count = 0;
    for (int i = 0; i < p; i++) {
    int rowNonNegCount = 0;
    for (int j = 0; j < t; j++) {
    if (arr[i][j] >= 0) {
    sum += arr[i][j];
    count++;
    rowNonNegCount++;
    }
    }
    nonNegCount[i] = rowNonNegCount;
    }
    if (count == 0) {
    return 0;
    }
    return sum / count;
    }

    int main() {
    SetConsoleOutputCP(CP_UTF8);
    vector<vector<int>> arr;
    int p, t;
    cout << "Введите размерность матрицы (p, t): ";
    cin >> p >> t;

    createArray(arr, p, t);
    fillArray(arr, p, t);

    ofstream outFile("output.txt");
    if (!outFile.is_open()) {
    outFile.open("output.txt");
    }
    printArray(arr, p, t, outFile);

    vector<int> nonNegCount(p);
    double avg = averageNonNegative(arr, p, t, nonNegCount);

    cout << "Среднее арифметическое неотрицательных элементов: " << avg << endl;
    outFile << "Среднее арифметическое неотрицательных элементов: " << avg << endl;

    for (int i = 0; i < p; i++) {
    cout << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl;
    outFile << "Количество неотрицательных элементов в строке " << i << ": " << nonNegCount[i] << endl;
    }

    outFile.close();

    return 0;
    }
     
    23 мар 2023 Изменено
Загрузка...
Top