0 / 0 / 0
Регистрация: 30.10.2016
Сообщений: 3
|
|
1 | |
Нахождение произведения элементов массива30.10.2016, 21:55. Показов 1062. Ответов 0
Метки нет (Все метки)
Здравствуйте. Возможно, я обращаюсь с не очень умным вопросом, но я никак не могу понять, какая у меня ошибка в программе, в которой необходимо обработать три массива разного размера.
Необходимо написать функцию, которая выполняет требуемые действия, применить её ко всем трём массивам и сравнить полученные результаты. Ввод осуществляется из файлов с использованием аргументов функции main. Вывод – на экран или в файл с обязательным выводом исходных данных.Определить в каком массиве больше произведение элементов, попадающих в заданный диапазон. Если в двух или трёх массивах произведения совпадают, вывести соответствующее сообщение. Помогите понять где ошибка. Вот мой нерабочий код: #include "stdafx.h" #include <iostream> #include <fstream> #define _CRT_SECURE_NO_WARNINGS using namespace std; char buff[100]; // Буфер промежуточного хранения считываемого из файла текста. ifstream fin("mas1.txt"); // Открыли файл для чтения. const int nmax = 4; int ArrayInput(int *n, double x[], char *fname); // Функция ввода массива из файла. double Pr(double x[], int n); // Функция произведения элементов массива. void main(int argc, char *argv[]) { double a[nmax], b[nmax], c[nmax]; double pa, pb, pc, max; int na, nb, nc; setlocale(LC_ALL, "rus"); // Изменяем кодировку. if (argc < 4) { printf("Недостаточно параметров!\n"); return; } if (!ArrayInput(&na, a, argv[1])) return; if (!ArrayInput(&nb, b, argv[2])) return; if (!ArrayInput(&nc, c, argv[3])) return; pa = Pr(a, na); pb = Pr(b, nb); pc = Pr(c, nc); max = pa; if (pb > max) max = pb; if (pc > max) max = pc; if (pa == max) printf("Массив А имеет максимальное произведение элементов: %9.3lf\n", max); if (pb == max) printf("Массив В имеет максимальное произведение элементов: %9.3lf\n", max); if (pc == max) printf("Массив С имеет максимальное произведение элементов: %9.3lf\n", max); } double Pr(double x[], int n) { double p = 1; for (int i = 0; i < n; i++) p *= x[i]; return p; } int ArrayInput(int *n, double x[], char *fname) { FILE *file; if ((file = fopen(fname, "r")) == NULL) { printf("Невозможно открыть файл '%s'\n", fname); return 0; } if (fscanf(file, "%d", n) < 1) { printf("Ошибка чтения '%s'\n", fname); fclose(file); return 0; } if (*n < 0 || *n > nmax) { printf("Количество элементов массива должно быть от 1 до %d! (файл '%s')\n", nmax, fname); return 0; } for (int i = 0; i < *n; i++) if (fscanf(file, "%lf", &x[i]) < 1) { printf("Ошибка чтения '%s'\n", fname); fclose(file); return 0; } fclose(file); return 1; }
0
|
30.10.2016, 21:55 | |
Ответы с готовыми решениями:
0
Нахождение произведения положительных элементов побочной диагонали двумерного массива целых чисел Нахождение произведения элементов матрицы через класс Вычислить сумму S = P1 + P2 произведения P1 четных элементов массива xi и произведения P2 четных элементов массива yi , i = 1, 2, 3 Вычислить произведения элементов массива |
30.10.2016, 21:55 | |
30.10.2016, 21:55 | |
Помогаю со студенческими работами здесь
1
Рекурсия: вычисление произведения элементов массива Рекурсивная функция произведения элементов массива Ошибка в знаке произведения элементов массива Написать функцию вычисления произведения элементов массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |