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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2013, 19:21   #1
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию немного циклов

добрый вечер!вот пытаюсь составить цикл,но вот чтото ни как не получается да и еще и с индексами какаято запара...вот набросок этого цикла:
Код:
    for(i=0;i<p;i=i+2)
    {
      X0=a+X[i]*(b-a);
      N=X[i+1]*0.6;
      cout<<X0<<"  "<<N<<endl;
                   if((X0>0)&&(X0<=2)&&(N>0)&&(N<0.25))
                   {
                     Y[]=X0;
                   }
                   else if((X0>2)&&(X0<4)&&(N<(-0.25*X0+1)))
                   {
                     Y[]=X0;
                   } 
                   else
    }
суть проблемы такова,в массиве X[i] у нас хранятся ранее срандомленные числа, X0 и N это оси абсциса и ордината,вот высчитываем X0 N,и проверяем условие чтобы точка находилась под графиком если выполняется то мы забираем эту X0 если нет то отбрасываем эту пару и переходим к другой...и вот в чем вопрос что надо указать в else если мы хотим так сказать отбросить эту пару и приступить к проверке другой,и чтобы сделать с массивом Y[] чтобы туда по порядку записывалось и небыло пустых ячеек когда будем работать уже с этим массивом??или может посоветуете какой нить более гуманный метод реализации такого условия
-=Andriushka=- вне форума Ответить с цитированием
Старый 20.03.2013, 19:58   #2
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Andriushka,

Итак, проблема "запись в массив, чтобы индексы были хорошими", исходит из условия:

Код:
for(i=0;i<p;i=i+2)
если вам нужен обычный шаг, то не i=i+2, а i++ - это будет с обычным шагом на единицу, т.е., 0,1.2,3,4,5,... i<p

условие, будет примерно таким:
Код:
int j=0;
for(i=0;i<p;i++)
    {
      X0=a+X[i]*(b-a);
      N=X[i+1]*0.6;
      cout<<X0<<"  "<<N<<endl;
                   if((X0>0)&&(X0<=2)&&(N>0)&&(N<0.25))
                   {
                     Y[j]=X0;
                     j++;
                   }

                   if((X0>2)&&(X0<4)&&(N<(-0.25*X0+1)))
                   {
                     Y[j]=X0;
                     j++;
                   } 
                   
    }
j -- объяснить зачем и как? Или не нужно?
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 20:05   #3
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
Andriushka,

Итак, проблема "запись в массив, чтобы индексы были хорошими", исходит из условия:

Код:
for(i=0;i<p;i=i+2)
если вам нужен обычный шаг, то не i=i+2, а i++ - это будет с обычным шагом на единицу, т.е., 0,1.2,3,4,5,... i<p

условие, будет примерно таким:
Код:
int j=0;
for(i=0;i<p;i++)
    {
      X0=a+X[i]*(b-a);
      N=X[i+1]*0.6;
      cout<<X0<<"  "<<N<<endl;
                   if((X0>0)&&(X0<=2)&&(N>0)&&(N<0.25))
                   {
                     Y[j]=X0;
                     j++;
                   }

                   if((X0>2)&&(X0<4)&&(N<(-0.25*X0+1)))
                   {
                     Y[j]=X0;
                     j++;
                   } 
                   
    }
j -- объяснить зачем и как? Или не нужно?
понятно зачем j;просто шаг нужен такой i=i+2,обьясняю почему,сначала берется пара (0,1) независемо выбралась, подошла она или нет мы берем след пару (2,3)...а если делать i++ то получается что сначала (0,1) а затем (1,2)
-=Andriushka=- вне форума Ответить с цитированием
Старый 20.03.2013, 20:10   #4
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

ааа, вот оно что с i))
а разве график не может брать (1,2)? - ну, если так, то исправьте обратно на ваш шаг, и всё будет (должно) норм))
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 20:11   #5
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
ааа, вот оно что с i))
а разве график не может брать (1,2)? - ну, если так, то исправьте обратно на ваш шаг, и всё будет (должно) норм))
да график то может брать,просто по условиям моделируемого метода там вот такой вот принцип

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
ааа, вот оно что с i))
а разве график не может брать (1,2)? - ну, если так, то исправьте обратно на ваш шаг, и всё будет (должно) норм))
странно работает как то...else if он как бы не воспринимает изза условия графика,и если получается что неподошло значение то он туда пишет 0 и потом пофиг подходит или нет он все равно выдает 0

Последний раз редактировалось Stilet; 20.03.2013 в 21:03.
-=Andriushka=- вне форума Ответить с цитированием
Старый 20.03.2013, 20:35   #6
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Не могу понять -- цикл работает или нет? исправьте обратно шаг с наращиванием 2, и else у меня нет)
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 20:52   #7
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
Не могу понять -- цикл работает или нет? исправьте обратно шаг с наращиванием 2, и else у меня нет)
Код:
    for(i=0;i<p;i=i+2)
    {
                      d=0;
                      X0=0;
                      N=0;
      X0=a+X[i]*(b-a);
      N=X[i+1]*0.6;
      cout<<X0<<"  "<<N<<endl;
      d=((-0.25)*X0+1);
                   if((X0<=2)&&(N<0.25))
                   {
                     Y[i]=X0;
                     //j++;
                   }
                   else if((X0>2)&&(N<d))
                   {
                     Y[i]=X0;
                     //j++;
                   }
вот таким способом абы да кабы работает...т.е щас получается что в массив Y[i] записывается через 1 индекс,то что пропустили изза шага там 0(но также может быть и какойнить "мусор"),те состояния в которые попали по шагу но не прошли по условиям там тоже записался ноль,а где прошло по условию там все хорошо...отсюда есть несколько решений,первый,сделать шаг i++ добавить else с телом Y[i]=0(и в дальнейших условиях не включать ноль) или оставить даже шаг и нули не включать и сказать что так лучше будет,второй,если всегда останутся нули(увереность что не проскочит мусор) то попробовать затем убрать нули из массива...вот как то так...но конечно хотелось бы разобраться и закодить правильно...
-=Andriushka=- вне форума Ответить с цитированием
Старый 20.03.2013, 20:56   #8
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

j -- переменная, чтобы индексы массива Y[] были хорошими. Сначала она равно 0, а потом наращивание, когда условие хорошее и выполняется. Вот для чего была j)))))
Fanyuus вне форума Ответить с цитированием
Старый 20.03.2013, 21:07   #9
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
j -- переменная, чтобы индексы массива Y[] были хорошими. Сначала она равно 0, а потом наращивание, когда условие хорошее и выполняется. Вот для чего была j)))))
я и неспорю что она плохая)просто даже если ее и использовать то все равно в массив забиваются 0 если не выполняется так что всяко прийдется выбивать 0 из массива
-=Andriushka=- вне форума Ответить с цитированием
Старый 20.03.2013, 21:11   #10
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

ну, если выбивать из массива 0... можно "печатать,если не равно 0".
Или создать ещё массив, туда переписать всё без 0.

Более вариантов не вижу, думаю, может кто-то ещё поможет))

Выложите код целиком
Fanyuus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
организация циклов _ROBERT_ Помощь студентам 0 16.11.2012 00:27
Использование циклов while в while`e ... slovoblydie PHP 7 20.07.2012 12:44
Выбор циклов turtles Общие вопросы по Java, Java SE, Kotlin 1 18.05.2011 11:05
Множитель циклов Иллидан Общие вопросы C/C++ 6 25.12.2010 16:18
Организация циклов faelar Паскаль, Turbo Pascal, PascalABC.NET 4 25.01.2009 21:30