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

Не могу найти ошибку, одномерный массив - C++

Восстановить пароль Регистрация
 
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
23.09.2011, 12:45     Не могу найти ошибку, одномерный массив #1
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
// key.cpp: определяет точку входа для консольного приложения.
//
#include <StdAfx.h>
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
int main()
{
const int n=12;
int y[n];
cout<<" Array Y:"<<endl;
for (int i=0; i<n; i++){
cin>>y[i];
cout<<"y["<<i<<"]="<<y[i]<<endl;
}
int f[n],a;
for (int i=0; i<n; i++){
if (y[i]>=2)
a=2
else
a=3;
for (int i=0;i<n; i++)
z[i]=(1-y[i])/(sqr(y[i])+a*y[i]);
}
 
cout<<"Array f:"<<endl;
for (int i=0; i<n; i++)
cout<<"f["<<i<<"]="<<z[i]<<endl;
 
_getch();
}



По условию:Дан массив y1, …, y12.
Сформировать новый массив , f(i)= (1-y(i)/sqr(y(i)) + y(i)*a


где a = 2 если y(i)<=2 , a = 3 если y(i)>2

 Комментарий модератора 
Используйте теги форматирования кода!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.09.2011, 12:49     Не могу найти ошибку, одномерный массив #2
Не увидел, где у вас объявлен массив z?
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
23.09.2011, 12:50  [ТС]     Не могу найти ошибку, одномерный массив #3
Цитата Сообщение от soon Посмотреть сообщение
Не увидел, где у вас объявлен массив z?
int f[n],a;
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.09.2011, 12:52     Не могу найти ошибку, одномерный массив #4
И как это так
C++
1
2
3
4
5
6
7
for (int i=0; i<n; i++){
if (y[i]>=2)
a=2
else
a=3;
for (int i=0;i<n; i++)
z[i]=(1-y[i])/(sqr(y[i])+a*y[i]);
У вас в первом for задается переменная i, и в нем же она изменяется. Так нельзя.

Добавлено через 1 минуту
int f[n],a;
вы объявляете массив f, а используете z. Как думаете, это сработает?
-=ЮрА=-
Заблокирован
Автор FAQ
23.09.2011, 12:54     Не могу найти ошибку, одномерный массив #5
Цитата Сообщение от sonice Посмотреть сообщение
int f[n],a;
а в программе пишешь
Цитата Сообщение от sonice Посмотреть сообщение
z[i]=(1-y[i])/(sqr(y[i])+a*y[i]);

тогда уж или int z[n],a; или же
C++
1
f[i]=(1-y[i])/(sqr(y[i])+a*y[i]);
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
23.09.2011, 12:54  [ТС]     Не могу найти ошибку, одномерный массив #6
Цитата Сообщение от soon Посмотреть сообщение
И как это так
C++
1
2
3
4
5
6
7
for (int i=0; i<n; i++){
if (y[i]>=2)
a=2
else
a=3;
for (int i=0;i<n; i++)
z[i]=(1-y[i])/(sqr(y[i])+a*y[i]);
У вас в первом for задается переменная i, и в нем же она изменяется. Так нельзя.

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

вы объявляете массив f, а используете z. Как думаете, это сработает?
не могли бы вы помочь мне с написаением, просто только начал изучать с
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.09.2011, 12:58     Не могу найти ошибку, одномерный массив #7
Касательно f/z вам уже отписал -=ЮрА=-. А насчет повторного использования i - замените во втором цикле i на j. Ну или на любую другую переменную. Просто их принято использовать для счетчиков.
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
23.09.2011, 13:09  [ТС]     Не могу найти ошибку, одномерный массив #8
Цитата Сообщение от soon Посмотреть сообщение
Касательно f/z вам уже отписал -=ЮрА=-. А насчет повторного использования i - замените во втором цикле i на j. Ну или на любую другую переменную. Просто их принято использовать для счетчиков.

устранил, все равно не работает, есть другии версии?
правильно ли написано выражение f[i]=(1-y[j])/(y[j])^2+a*y[j]???
-=ЮрА=-
Заблокирован
Автор FAQ
23.09.2011, 13:25     Не могу найти ошибку, одномерный массив #9
Цитата Сообщение от sonice Посмотреть сообщение
устранил, все равно не работает, есть другии версии?
пока не напишешь никогда ошибку не находите
Цитата Сообщение от sonice Посмотреть сообщение
устранил, все равно не работает, есть другии версии?
правильно ли написано выражение f[i]=(1-y[j])/(y[j])^2+a*y[j]???
Вот
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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
int main()
{
    const int n=12;
    int i,f[n],y[n];
    cout<<" Array Y:"<<endl;
    for (i=0; i<n; i++)
    {
        cout<<"y["<<i<<"]=";
        cin>>y[i];
    }
    cout<<"Array f:"<<endl;
    for (i=0; i<n; i++)
    {
        f[i] = (1 - y[i]/sqrt(y[i]));
        if (2<=y[i])
            f[i] += y[i]*2;
        else
            f[i] += y[i]*3;
        cout<<"f["<<i<<"]="<<f[i]<<endl;
    }
    getch();
    return 0;
}
Результат работы
Array Y:
y[0]=1
y[1]=2
y[2]=3
y[3]=4
y[4]=5
y[5]=6
y[6]=7
y[7]=8
y[8]=9
y[9]=10
y[10]=11
y[11]=12
Array f:
f[0]=3
f[1]=4
f[2]=6
f[3]=7
f[4]=9
f[5]=11
f[6]=13
f[7]=15
f[8]=16
f[9]=18
f[10]=20
f[11]=22


Добавлено через 3 минуты
sonice, теперь пару слов о твоих ошибках
Цитата Сообщение от sonice Посмотреть сообщение
sqr
- нет такой функции корень это sqrt

Цитата Сообщение от sonice Посмотреть сообщение
for (int i=0; i<n; i++){
if (y[i]>=2)
a=2
else
a=3;
- а == 2 существует только в цикле и при выходе из него а == 3!


Цитата Сообщение от sonice Посмотреть сообщение
cout<<"Array f:"<<endl;
for (int i=0; i<n; i++)
cout<<"f["<<i<<"]="<<z[i]<<endl;
- формируешь значения f[i] и сразу в єтом же цикле выводи - экономишь целый цикл

Цитата Сообщение от sonice Посмотреть сообщение
cout<<"y["<<i<<"]="<<y[i]<<endl;
- да не выводить введеное надо, а сигнализировать что же вводить сейчас, не вопрос можешь и выводить, но можно вывесить на экран хоть какой то текст чтоже сейчас вводим...

Добавлено через 1 минуту
Цитата Сообщение от sonice Посмотреть сообщение
f[i]=(1-y[j])/(y[j])^2+a*y[j]???
- нет возведение в степень не так пишется - это pow
east
5 / 5 / 0
Регистрация: 23.09.2011
Сообщений: 10
23.09.2011, 13:27     Не могу найти ошибку, одномерный массив #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double* createArray(double* y, int n)
{
  if((y != NULL) && n>0)
  {
    double* f = new double(n);
    for(int i=0;i<n;i++)
    {
      int a = 2;
      if(y[i] > 2) a = 3;
      f[i] = (1-y[i]/sqrt(y[i])) + y[i]*a;
    }
    return f;
  }
  return NULL;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2011, 14:36     Не могу найти ошибку, одномерный массив
Еще ссылки по теме:

Двумерный массив, не могу найти ошибку C++
C++ Не могу найти ошибку. (Массив объектов)
Не могу найти ошибку C++

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

Или воспользуйтесь поиском по форуму:
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
23.09.2011, 14:36  [ТС]     Не могу найти ошибку, одномерный массив #11
[QUOTE=-=ЮрА=-;2007549]пока не напишешь никогда ошибку не находите

Вот
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
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
 
int main()
{
 const int n=12;
 int i,f[n],y[n];
 cout<<" Array Y:"<<endl;
 for (i=0; i<n; i++)
 {
  cout<<"y["<<i<<"]=";
  cin>>y[i];
 }
 cout<<"Array f:"<<endl;
 for (i=0; i<n; i++)
 {
  f[i] = (1 - y[i]/sqrt(y[i]));
  if (2<=y[i])
   f[i] += y[i]*2;
  else
   f[i] += y[i]*3;
  cout<<"f["<<i<<"]="<<f[i]<<endl;
 }
 getch();
 return 0;
}
Результат работы
Array Y:
y[0]=1
y[1]=2
y[2]=3
y[3]=4
y[4]=5
y[5]=6
y[6]=7
y[7]=8
y[8]=9
y[9]=10
y[10]=11
y[11]=12
Array f:
f[0]=3
f[1]=4
f[2]=6
f[3]=7
f[4]=9
f[5]=11
f[6]=13
f[7]=15
f[8]=16
f[9]=18
f[10]=20
f[11]=22


Добавлено через 3 минуты
sonice, теперь пару слов о твоих ошибках
- нет такой функции корень это sqrt

- а == 2 существует только в цикле и при выходе из него а == 3!


- формируешь значения f[i] и сразу в єтом же цикле выводи - экономишь целый цикл

- да не выводить введеное надо, а сигнализировать что же вводить сейчас, не вопрос можешь и выводить, но можно вывесить на экран хоть какой то текст чтоже сейчас вводим...

Добавлено через 1 минуту
Спасибо !
Yandex
Объявления
23.09.2011, 14:36     Не могу найти ошибку, одномерный массив
Ответ Создать тему
Опции темы

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