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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
#1

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

23.09.2011, 12:45. Просмотров 485. Ответов 10
Метки нет (Все метки)

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

 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2011, 12:45     Не могу найти ошибку, одномерный массив
Посмотрите здесь:

Найти ошибку. Одномерный массив - C++
Программа должна находить три максимальных элемента массива, но вопреки моим ожиданиям она этого не делает, а вместо этого выводит три...

Задача на одномерный массив. Найти ошибку - C++
#include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int fak(int k) { return((k==1)?...

Не могу найти ошибку. (Массив объектов) - C++
Здравствуйте уважаемые программисты! Учусь кодить на c++, столкнулся с ошибкой (насколько я понял, что-то с памятью), которую никак не могу...

Не могу найти ошибку (массив с чётными индексами) - C++
Задача: Введите с клавиатуры данные в массив целого типа, а затем выведите на экран значения элементов массива с чётными...

Найдите плз ошибку, Одномерный массив с указателями - C++
Если максимальный элемент находится левее минимального элемента, то упорядочить в порядке убывания элементы, находящиеся между максимальным...

Массив указателей не могу понять ошибку - C++
Массив указателей не могу понять ошибку почему нельзя так присвоить значение:c-&gt;data=d;?Объясните пожалуйста! Вот сам код программы: ...

Эксперты! Одномерный массив неповторяющихся чисел не могу понять почему криво работает - C++
Задание: Нужно вывести массив из случайных чисел. Размер массива 8. Случайные числа от 1 до 8. Числа не должны повторяться. #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 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
2540 / 1305 / 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
2540 / 1305 / 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++
fatal error LNK1120: неразрешенных внешних элементов: 1 #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;thread&gt; using namespace...

Не могу найти ошибку - C++
Задача: вывести элементы массива, которые повторяются ровно 2 раза #include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; ...

Не могу найти ошибку - C++
w-Слово.CustomAlphabet-Буквы на которые не заканчиваются слова. Не получается предпоследнюю букву вернуть(возвращает последнюю). string...

Не могу найти ошибку - C++
Добрый день, программа не компилируется, не могу найти ошибку. Заранее спасибо. #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main() ...


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

Или воспользуйтесь поиском по форуму:
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     Не могу найти ошибку, одномерный массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru