Форум программистов, компьютерный форум CyberForum.ru

Сформировать массив y по формуле и выполнить указанные вычисления - C++

Восстановить пароль Регистрация
 
Mistikkx
1 / 1 / 0
Регистрация: 04.10.2013
Сообщений: 77
15.04.2014, 20:28     Сформировать массив y по формуле и выполнить указанные вычисления #1
Элементы вещественного одномерного массива х размером n > 20 сгенерированы датчиком псевдослучайных чисел в диапазоне [-10, 10]. Сформировать массив y по формуле и выполнить указанные вычисления. Формулу записать с помощью математических символов в привычном виде. Вывести на экран исходный массив и результаты решения задачи. Все числа округлять до сотых.

y[i] = x[i] / ln(abs(x[i] + 1.23)), i = l, 2, ..., n. Вычислить сумму отрица-тельных значений из первых 15 элементов массива у.

И вот примерный мой набросок:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
float Y(float x);
 
int main(){
    SetConsoleOutputCP(1251);
float sum=0;
for(i=0;i<21;i++)
    {
        a[i]=rand()%15 -10;
        printf("%d ",a[i]);
    }
for(i=0;i<21;i++)
    {
        if (i%2==1)
        {
            sum = sum + Y(a[i]);
            printf("\n___%6.2f___,___%6.2f___",Y(a[i]),sum);
        }
    }
 
}
float Y(float x)
    {
     float f=0;
     f= x/log(abs(x))+1.23;
     return f;
    }

Не могли бы Вы исправить ошибки, и подсказать, как мне суммировать именно отрицательные числа первых 15-и элементов?
Заранее благодарю Вас!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2014, 20:28     Сформировать массив y по формуле и выполнить указанные вычисления
Посмотрите здесь:

C++ вычислить и сформировать массив S[i], элементы которого вычисляются по формуле S[i]=pow(sin,2)(x[i])+x[i].
Упорядочить указанные элементы матрицы,двумерный массив C++
C++ Написать программу, описывающую структуру, содержащую указанные поля и выполняющую над ней указанные действия
C++ Написать функцию вычисления f(x) по формуле
Создать структуру, содержащую сведения по учету растений и выполнить указанные действия с ней C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
15.04.2014, 21:00     Сформировать массив y по формуле и выполнить указанные вычисления #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
где объявление массива a?
C++
1
int a[50];
C++
1
a[i]=rand()%15 -10;
чтобы получить случайное число было в промежутке [-10, 10] должно быть
C++
1
a[i]=rand()%21 -10;
для суммирования отрецательных поставьте условие
C++
1
if(a[i]<0) sum+=a[i];
C++
1
f= x/log(abs(x))+1.23;
данная запись значит f=x/ln(|x|)+1.23, в задании приведена другая формула
Mistikkx
1 / 1 / 0
Регистрация: 04.10.2013
Сообщений: 77
15.04.2014, 21:15  [ТС]     Сформировать массив y по формуле и выполнить указанные вычисления #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
float Y(float x);
 
int main(){
    SetConsoleOutputCP(1251);
int a[50],i;
float sum=0;
for(i=0;i<21;i++)
    {
        a[i]=rand()%21 -10;
        printf("%d ",a[i]);
    }
for(i=0;i<21;i++)
    {
        if(a[i]<0) 
        {
          sum+=a[i];
            printf("\n___%6.2f___,___%6.2f___",Y(a[i]),sum);
        }
    }
 
}
float Y(float x)
    {
     float f=0;
     f=x/log(abs(x))+1.23;
     return f;
    }
Вот, что у меня получилось по вашим заметкам, правда, Я так и не понял, как мне надо изменить ту формулу, в каком виде ее представить?
zss
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
15.04.2014, 21:23     Сформировать массив y по формуле и выполнить указанные вычисления #4
1.
C++
1
2
3
4
float Y(float x)
 {
     return x/(log(fabs(x))+1.23);
  }
2. Почему a[50], а цикл только до 21-го элемента?
3.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
float y[21];
for(i=0;i<21;i++)
    {
        y[i]=Y(a[i]);
        if(y[i]<0) 
        {
          sum+=a[i];
        }
        printf("\n___%6.2f",y[i]);
   }
    printf("\n%6.2f___",sum);
 
 
}
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
15.04.2014, 21:32     Сформировать массив y по формуле и выполнить указанные вычисления #5
вот так вижу код вашей программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
#include <conio.h>
float Y(float x);
 
int main(){
SetConsoleOutputCP(1251);
float sum=0;
int n;
printf("Vvedite kolichestvo elimentov v massive\n");
scanf("%d",&n);
 
int *x=new int[n];
float *y=new float [n];
int i;
for(i=0;i<n;i++)
    {
        x[i]=rand()%21 -10;
        printf("%d ",x[i]);
    }
   
for(i=0;i<n;i++)
    y[i]=Y(x[i]);
 
for(i=0;i<15;i++)
{
     if (y[i]<0) sum+=y[i];
}
printf("\n");
 for(i=0;i<n;i++)
     printf("%6.2f ", int(y[i]*100+0.5)/100.0);
 printf("\nsum=%f\n",sum);
 getch();
}
float Y(float x)
{
     float f=0;
     f= x/log(abs(x+1.23));
     return f;
}
Цитата Сообщение от zss Посмотреть сообщение
Почему a[50], а цикл только до 21-го элемента?
думаю потому что используется 21 элемент, а 50 это максимальное число элементов, хотя гораздо удобнее через переменную для быстрого изменения количиства используемых элементов

C++
1
int(y[i]*100+0.5)/100.0
это округление до сотых
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
15.04.2014, 21:33     Сформировать массив y по формуле и выполнить указанные вычисления #6
Делай выводы:

10 : i: необъявленный идентификатор
10 : i: необъявленный идентификатор
10 : i: необъявленный идентификатор
12 : a: необъявленный идентификатор
12: i: необъявленный идентификатор
13: a: необъявленный идентификатор
13: i: необъявленный идентификатор
15: i: необъявленный идентификатор
15: i: необъявленный идентификатор
15: i: необъявленный идентификатор
17: error C2065: i: необъявленный идентификатор
19: a: необъявленный идентификатор
19: i: необъявленный идентификатор
20: error C2065: a: необъявленный идентификатор
20: i: необъявленный идентификатор
28: =: преобразование "double" в "float", возможна потеря данных
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
15.04.2014, 21:38     Сформировать массив y по формуле и выполнить указанные вычисления #7
Цитата Сообщение от Ярослав Никитин Посмотреть сообщение
Делай выводы:
пожалуйста просматривайте тему до конца, а не только 1-е сообщение, в последнем своём сообщении автор привёл исправленный код без ошибок в самом коде( а вот задание не верно выполнено)
Mistikkx
1 / 1 / 0
Регистрация: 04.10.2013
Сообщений: 77
15.04.2014, 21:38  [ТС]     Сформировать массив y по формуле и выполнить указанные вычисления #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
float Y(float x);
 
int main(){
    SetConsoleOutputCP(1251)
 
int a[50],i;
float sum=0;
for(i=0;i<50;i++)
    {
        a[i]=rand()%50 -10;
        printf("%d ",a[i]);
    }
for(i=0;i<50;i++)
    {
        if(a[i]<0) 
        {
          sum+=a[i];
            printf("\n___%6.2f___,___%6.2f___",Y(a[i]),sum);
        }
    }
 
}
float Y(float x)
    {
     float f=0;
     f=x/(log(fabs(x))+1.23);
     return f;
    }
Вы так говорите?
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
15.04.2014, 21:41     Сформировать массив y по формуле и выполнить указанные вычисления #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Mistikkx Посмотреть сообщение
Вычислить сумму отрица-тельных значений из первых 15 элементов массива у.
C++
1
sum+=a[i];
вычисляете сумму массива x, всех его отрицательных элементов

C++
1
 printf("\n___%6.2f___,___%6.2f___",Y(a[i]),sum);
на каждой итерации выводите текущее значение суммы, зачем? вам нужно найти сумму и вывести её

кроме того я уже привёл правильный, рабочий код по вашему заданию посмотрите выше
Mistikkx
1 / 1 / 0
Регистрация: 04.10.2013
Сообщений: 77
15.04.2014, 21:42  [ТС]     Сформировать массив y по формуле и выполнить указанные вычисления #10
[]http://src.screeny.ru/uploads/90/6b/e2/8c/63b00d8c.jpg?secure=1TPNH6hL-N6NcG4Lb-ctFA&expires=1397583920[/]
Вот как твоя программа выглядит.
Ярослав Никитин
 Аватар для Ярослав Никитин
0 / 0 / 2
Регистрация: 13.04.2014
Сообщений: 70
15.04.2014, 21:43     Сформировать массив y по формуле и выполнить указанные вычисления #11
Цитата Сообщение от kiborgdelto Посмотреть сообщение
пожалуйста просматривайте тему до конца, а не только 1-е сообщение, в последнем своём сообщении автор привёлисправленный код без ошибок в самом коде( а вот задание не верно выполнено)
учту
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
15.04.2014, 21:49     Сформировать массив y по формуле и выполнить указанные вычисления #12
не могу открыть картику, не переходит почему то (
всё работает сам смотри
http://ideone.com/bsO54Y
Mistikkx
1 / 1 / 0
Регистрация: 04.10.2013
Сообщений: 77
15.04.2014, 21:59  [ТС]     Сформировать массив y по формуле и выполнить указанные вычисления #13
Преогромное спасибо Вам! И всем остальным участникам тоже!

Добавлено через 4 минуты

В моем компиляторе он не находит сумму :
Миниатюры
Сформировать массив y по формуле и выполнить указанные вычисления  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 09:37     Сформировать массив y по формуле и выполнить указанные вычисления
Еще ссылки по теме:

Простые вычисления по формуле C++
C++ Сформировать массив по формуле
C++ Сформировать массив по заданной формуле и упорядочить по значению сренеарифметического

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kiborgdelto
70 / 72 / 27
Регистрация: 23.03.2011
Сообщений: 141
18.04.2014, 09:37     Сформировать массив y по формуле и выполнить указанные вычисления #14
на последний элемент массива у посматрите
Yandex
Объявления
18.04.2014, 09:37     Сформировать массив y по формуле и выполнить указанные вычисления
Ответ Создать тему
Опции темы

Текущее время: 23:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru