Программа работает, но нужно только красоту навести. (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 (количество элементов в массиве). Внутри функции объявлены две переменные:

  1. int i (переменная для цикла for)
  2. double Q (временная переменная) Далее, в цикле for (от 0 до count-1), выполняются следующие действия:
  3. Если i равно 1, то значение Q присваивается a[1], а a[1] заменяется на (a[2]+a[0])/2.
  4. Если i четное (i%2 == 0), и i меньше count-1, и i больше 1, то значение a[i] заменяется на (a[i+1]+Q)/2, а Q присваивается значение a[i].
  5. Если i нечетное (i%2 != 0), и i меньше count-1, и i больше 1, то значение a[i] заменяется на (a[i+1]+Q)/2, а Q присваивается значение a[i]. После выполнения всех действий в цикле, функция завершается.

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


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

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

8   голосов , оценка 3.875 из 5
Похожие ответы