Программа работает, но нужно только красоту навести. (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]. После выполнения всех действий в цикле, функция завершается.