Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 09:21   #1
AlexanderIvanov
Новичок
Джуниор
 
Регистрация: 13.04.2010
Сообщений: 1
По умолчанию Проблемы с заменой элементов одномерного массива

Дан исходный массив х из 15 элементов. После проведения вычислений формируется массив у. В сформированном массиве у необходимо заменить нулевые элементы уі элементами массива хі , а отрицательные элементы нулями. Вичислить среднеарифметическое значение массива у до и после замены. Программа работает, но при замене элементов получается просто бред. (Программа написана на С++4.5, многие записи лишние, но к сожалению так надо ).

Код:
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include<conio.h>
void main()
{
float x[15], y[15], Y[15], sum, sum1;
printf("Введите элементы массива х\n");
for (int i=0; i<=14; i++) {printf("x[%u]=",i); cin>>x[i]; cout<<"\n";}
printf("Исходные данные\n");
for (i=0; i<=14; i++) printf("x[%u]=%f\n",i,x[i]);
getch();
printf("Результаты расчета\n");
printf("Массив х до замены\n");
for (i=0; i<=14; i++) printf("x[%u]=%f\n",i,x[i]);
getch();
printf("Массив у до замены\n");
sum=0;
for (i=0; i<=14; i++)
{
if (x[i]>1.5) y[i]=(sqrt(x[i])*sin(M_PI*x[i]))/(x[i]+exp(x[i]));
else y[i]=2*x[i]+sqrt(exp(x[i]));
sum+=y[i];
printf("у[%u]=%f\n",i,y[i]);
}
getch();
float sred_arifm1=sum/15;
sum1=0;
printf("Массив у после замены\n");
for (i=0; i<=14; i++)
{
if (y[i]=0) Y[i]=x[i];
if (y[i]<0) Y[i]=0;
sum1+=Y[i];
printf("у[%u]=%f\n",i,Y[i]);
}getch();
float sred_arifm2=sum1/15;
printf("Среднеарифметическое массива у до замены= %f\n",sred_arifm1);
printf("Среднеарифметическое массива у после замены= %f\n",sred_arifm2);
}

Последний раз редактировалось Stilet; 13.04.2010 в 09:27.
AlexanderIvanov вне форума Ответить с цитированием
Старый 13.04.2010, 10:04   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В глаза бросилось:
Код:
if (y[i]=0) Y[i]=x[i];
Должно быть
Код:
if (y[i]==0) Y[i]=x[i];
Остальное не смотрел.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 13.04.2010, 10:23   #3
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Скорее всего так:
Код:
printf("Массив у после замены\n");
for (i=0; i<=14; i++)
{
if (y[i] == 0) Y[i]=x[i]; else
if (y[i] < 0) Y[i]=0; else
Y[i] = y[i];
sum1+=Y[i];
printf("у[%u]=%f\n",i,Y[i]);
}
evgn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод элементов массива.Изменение элементов массива. Vesnushka18 Помощь студентам 6 09.06.2011 13:05
Бейсик. Найти сумму численных значений элементов одномерного массива Марька Помощь студентам 4 16.03.2010 23:01
Консультация с заменой кода для массива. eluminat Помощь студентам 3 01.07.2009 11:05
поиск одинаковых элементов одномерного массива и их количества MyQwErTy Помощь студентам 2 28.02.2009 17:17
составить программу подсчета числа элементов одномерного массива, превосходящих СРЕДНЕЕ ГЕОМЕТРИЧЕСКОЕ Fatality Помощь студентам 4 05.02.2009 07:53