Определить произведение элементов массива, индексы которых находятся в интервале - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте!Написал программу,но она не работает,помогите,пожалуйста,исправить(ошибки на скрине). Cамо задание такое:"В массиве вещественных чисел Q=(q1,q2,…,qm) определить прозведения элементов ,индексы которых находятся в интервале К … Т (K< T < m)"
Листинг программы
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "math.h"
  4. #include "locale.h"
  5. float proizv(float Q[],int q,int K,int T);
  6. {float p=1;
  7. for(int i=0;i<q;i++)
  8. {if(i<T && i>K) p=p*Q[i];}
  9. return p;}
  10. int _tmain(int argc, _TCHAR* argv[])
  11. {
  12. const int q=13;
  13. float Q[q];
  14. FILE *p1 , *p2;
  15. p1=fopen("D:\doc.txt","w");
  16. for (int i=0;i<q;i++)
  17. {fscanf(p1,"%f\n",&Q[i]);}
  18. p2=fopen("D:\konec.txt","r");
  19. fprintf(p2,"%f",proizv(Q,q,1,8));
  20. fcloseall();
  21. return 0;
  22. }

Решение задачи: «Определить произведение элементов массива, индексы которых находятся в интервале»

textual
Листинг программы
  1. #include <stdio.h>
  2. float proizv(float Q[], int q, int K, int T)
  3. {
  4.     float p = 1;
  5.     int i;
  6.     for(i = 0; i < q; i++){
  7.         if(i < T && i > K)
  8.         p = p * Q[i];
  9.         }
  10.     return p;
  11. }
  12. int main()
  13. {
  14.     int i;
  15.     const int q = 13;
  16.     float Q[q];
  17.     FILE *p1 , *p2;
  18.     p1 = fopen("doc.txt","r");
  19.     if(p1 == NULL){
  20.         printf("File not found\n");
  21.         return 1;
  22.     }
  23.     for (i = 0;i < q; i++){
  24.         if(1 != fscanf(p1,"%f\n",&Q[i])){
  25.             printf("Not enough data in the file\n");
  26.             return 1;
  27.         }
  28.     }
  29.     p2 = fopen("konec.txt","w");
  30.     fprintf(p2, "%f", proizv(Q, q, 1, 8));
  31.     fclose(p1);
  32.     fclose(p2);
  33.     return 0;
  34. }

Объяснение кода листинга программы

  1. Включаем файл с библиотекой стандартного ввода/вывода
  2. Функция proizv(Q, q, K, T) принимает массив Q, длину массива q, и два индекса K и T.
  3. Внутри функции создаем переменную p равной 1.
  4. Используем цикл for для прохода по элементам массива Q от 0 до q-1.
  5. Внутри цикла проверяем условие i < T && i > K и если оно истинно, то умножаем p на Q[i].
  6. Возвращаем значение переменной p по окончании цикла.
  7. В функции main() открываем файл doc.txt для чтения и если он не найден, выводим сообщение об ошибке и возвращаем 1.
  8. Используем цикл for для прохода по элементам массива Q от 0 до q-1 и считываем значения в файле doc.txt в элементы массива Q.
  9. Если при считывании значения возникла ошибка, выводим сообщение об ошибке и возвращаем 1.
  10. Открываем файл konec.txt для записи.
  11. Вызываем функцию proizv(Q, q, 1, 8) и записываем результат в файл konec.txt.
  12. Закрываем файлы doc.txt и konec.txt.
  13. Возвращаем 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы