Определить произведение элементов массива, индексы которых находятся в интервале - C (СИ)
Формулировка задачи:
Здравствуйте!Написал программу,но она не работает,помогите,пожалуйста,исправить(ошибки на скрине).
Cамо задание такое:"В массиве вещественных чисел Q=(q1,q2,…,qm) определить
прозведения элементов ,индексы которых находятся в интервале К … Т (K< T < m)"
#include "stdafx.h"
#include "stdio.h"
#include "math.h"
#include "locale.h"
float proizv(float Q[],int q,int K,int T);
{float p=1;
for(int i=0;i<q;i++)
{if(i<T && i>K) p=p*Q[i];}
return p;}
int _tmain(int argc, _TCHAR* argv[])
{
const int q=13;
float Q[q];
FILE *p1 , *p2;
p1=fopen("D:\doc.txt","w");
for (int i=0;i<q;i++)
{fscanf(p1,"%f\n",&Q[i]);}
p2=fopen("D:\konec.txt","r");
fprintf(p2,"%f",proizv(Q,q,1,8));
fcloseall();
return 0;
}Решение задачи: «Определить произведение элементов массива, индексы которых находятся в интервале»
textual
Листинг программы
#include <stdio.h>
float proizv(float Q[], int q, int K, int T)
{
float p = 1;
int i;
for(i = 0; i < q; i++){
if(i < T && i > K)
p = p * Q[i];
}
return p;
}
int main()
{
int i;
const int q = 13;
float Q[q];
FILE *p1 , *p2;
p1 = fopen("doc.txt","r");
if(p1 == NULL){
printf("File not found\n");
return 1;
}
for (i = 0;i < q; i++){
if(1 != fscanf(p1,"%f\n",&Q[i])){
printf("Not enough data in the file\n");
return 1;
}
}
p2 = fopen("konec.txt","w");
fprintf(p2, "%f", proizv(Q, q, 1, 8));
fclose(p1);
fclose(p2);
return 0;
}
Объяснение кода листинга программы
- Включаем файл с библиотекой стандартного ввода/вывода
- Функция proizv(Q, q, K, T) принимает массив Q, длину массива q, и два индекса K и T.
- Внутри функции создаем переменную p равной 1.
- Используем цикл for для прохода по элементам массива Q от 0 до q-1.
- Внутри цикла проверяем условие i < T && i > K и если оно истинно, то умножаем p на Q[i].
- Возвращаем значение переменной p по окончании цикла.
- В функции main() открываем файл doc.txt для чтения и если он не найден, выводим сообщение об ошибке и возвращаем 1.
- Используем цикл for для прохода по элементам массива Q от 0 до q-1 и считываем значения в файле doc.txt в элементы массива Q.
- Если при считывании значения возникла ошибка, выводим сообщение об ошибке и возвращаем 1.
- Открываем файл konec.txt для записи.
- Вызываем функцию proizv(Q, q, 1, 8) и записываем результат в файл konec.txt.
- Закрываем файлы doc.txt и konec.txt.
- Возвращаем 0, что означает успешное выполнение программы.