Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Пребразование массива


Автор: indolent 7.5.2007, 21:04
Задача:(Borland C++3.1)
Код

Вводится массив. Заменить каждый его элемент на среднее арифметическое из 3-х соседних элементов. Например, из массива 

    1  5  3  7  8

должно получиться 

    2.00  3.00  5.00  6.00  5.00

Элементы за границей массива считать равными 0. Динамическими массивами не пользоваться.

Код

int a[3], pos=1, el;
        a[0] = 0;
        scanf ("%d", &el);
        a[pos++]=el;
        while (scanf ("%d", &el) != EOF)//Как задать цикл по-другому,т.к. он бесконечен 
            {
                a[pos++]=el;
                if (pos == 3) pos = 0;
                printf ("%f ", ( (float)(a[1] + a[2] + a[0]) ) / 3);
            }
        a[pos]=0;
        printf ("%f", ( (float)(a[1] + a[2] + a[0]) ) / 3);
        printf ("\n");


ПОМОГИТЕ!!!!!!


M
Kuvaldis
Заголовок темы без указания языка - это как паспорт без фотки. Нужно указывать!

Автор: GIK 7.5.2007, 22:56
Чет непонятный у тебя какой-то способ, вот по прошче smile
Код

#include<iostream>
#include<cstdio>
#include<conio>
#include <iomanip>
#include <stdlib>
#include <stdio>


int main(int argc, char* argv[])
{  int mas[5]={0}, i, j, e, ran[5];
   printf ("%s\n", "Vvedite chisla");
   for(i=0; i<5; i++)
    scanf ("%d", &mas[i]);
   printf ("%s\n", "Itog posle vvoda");
   for(i=0; i<5; i++)
    printf ("%d\n", mas[i]);

   for(i=0; i<5; i++)
    {
      if(i!=0 && i!=4)
       ran[i]=(mas[i-1] + mas[i] + mas[i+1])/3;
      else if(i==0)
       ran[i]=(mas[i] + mas[i+1])/3; //левый край
      else
       ran[i]=(mas[i] + mas[i-1])/3; //правый край
    }

   for(i=0; i<5; i++)
    {
     mas[i]=ran[i];
     printf ("%d\n", mas[i]);
    }
   getch();
        return 0;
}


   

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)