Программа работает, но нужно только красоту навести. (2 переменные заменить на 1) - C (СИ)
Формулировка задачи:
Собственно вот и программа. Просьба заключается в следующем: в функции ghost требуется всё записать через одну переменную, а не через две (F,Q) как сделал я. Буду крайне рад любому совету, как этого можно добиться )
Язык програмирования (С)
#include <stdio.h> #include <stdlib.h> void ghost(double *a, int count); void print_array(double *a, int count); int main() { int n, i; double *a=malloc(sizeof(double)*n); scanf ("%d", &n); if (n<=0) { return 0; } for (i=0; i<n; i++) { scanf("%lf",a+i); } ghost(a,n); print_array(a,n); free (a); return 0; } void ghost(double *a, int count) { int i; double Q; double F; for(i=0; i<count; i++) { if(i==1) { Q=a[1]; a[1]=(a[2]+a[0])/2; } if((i%2 == 0)&&(i<count-1)&&(i>1)) { F=a[i]; a[i]=(a[i+1]+Q)/2; } if((i%2!=0)&&(i<count-1)&&(i>1)) { Q=a[i]; a[i]=(a[i+1]+F)/2; } } } void print_array(double *a, int count) { int i; for(i=0; i<count; i++) { printf("%lf\n", a[i]); } }
Решение задачи: «Программа работает, но нужно только красоту навести. (2 переменные заменить на 1)»
textual
Листинг программы
void ghost(double *a, int count) { int i; double Q; for (i=0; i<count; i++) { if (i==1) { Q=a[1]; a[1]=(a[2]+a[0])/2; } if ((i%2 == 0) && (i<count-1) && (i>1)) { a[i]=(a[i+1]+Q)/2; Q=a[i]; } if ((i%2!=0) && (i<count-1) && (i>1)) { a[i]=(a[i+1]+Q)/2; Q=a[i]; } } }
Объяснение кода листинга программы
В данном коде реализована функция с именем ghost, которая принимает два аргумента: double *a (указатель на массив типа double) и int count (количество элементов в массиве). Внутри функции объявлены две переменные:
- int i (переменная для цикла for)
- double Q (временная переменная) Далее, в цикле for (от 0 до count-1), выполняются следующие действия:
- Если i равно 1, то значение Q присваивается a[1], а a[1] заменяется на (a[2]+a[0])/2.
- Если i четное (i%2 == 0), и i меньше count-1, и i больше 1, то значение a[i] заменяется на (a[i+1]+Q)/2, а Q присваивается значение a[i].
- Если i нечетное (i%2 != 0), и i меньше count-1, и i больше 1, то значение a[i] заменяется на (a[i+1]+Q)/2, а Q присваивается значение a[i]. После выполнения всех действий в цикле, функция завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д