С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

23.09.2011, 12:45. Просмотров 499. Ответов 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

 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2011, 12:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу найти ошибку, одномерный массив (C++):

Найти ошибку. Одномерный массив - 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;?Объясните пожалуйста! Вот сам код программы: ...

10
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.09.2011, 12:49 #2
Не увидел, где у вас объявлен массив z?
0
sonice
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 41
23.09.2011, 12:50  [ТС] #3
Цитата Сообщение от soon Посмотреть сообщение
Не увидел, где у вас объявлен массив z?
int f[n],a;
0
soon
2542 / 1307 / 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. Как думаете, это сработает?
0
-=ЮрА=-
Заблокирован
Автор 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]);
0
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. Как думаете, это сработает?
не могли бы вы помочь мне с написаением, просто только начал изучать с
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.09.2011, 12:58 #7
Касательно f/z вам уже отписал -=ЮрА=-. А насчет повторного использования i - замените во втором цикле i на j. Ну или на любую другую переменную. Просто их принято использовать для счетчиков.
0
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]???
0
-=ЮрА=-
Заблокирован
Автор 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
0
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;
}
0
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 минуту
Спасибо !
0
23.09.2011, 14:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2011, 14:36
Привет! Вот еще темы с ответами:

Найти слова, повторяющиеся более одного раза, не могу найти ошибку - C++
#include &lt;iostream&gt; using namespace std; void obr1(char **s, char **mas, int n, int m) { int i; int k; char *tm; for(i...

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив - C++
ввести двумерный массив I . найти номера столбцов с положительными элементами и записать их в одномерный массив, отобразить его на экране. ...

Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массив - C++
Организовать одномерный массив с вещественными числами и найти первый и последний отрицательный элемент массива;

Массивы. Посчитать количество положительных, найти минимальное, удалить строку с минимальным (Не могу найти ошибку) - C++
// Заданы матрицы X(8;4),Y(5;5),Z(6;9). // Для каждой из матриц определить строку, в которой находится наименьшее // количество...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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