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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
#1

Регулярные циклы в С/С++ - C++

23.03.2010, 17:41. Просмотров 1262. Ответов 25
Метки нет (Все метки)

Ребята, помогите решить задачку на С/С++, очень нужно

Располижить в массиве Pol сначала положительные, а потом отрицательные элементы выходящего массива. Дан массив А(9)

Добавлено через 31 секунду
Буду очень благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2010, 17:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Регулярные циклы в С/С++ (C++):

Заменить в коде циклы for на циклы while - C++
int i, j, n; bool a; cin >> i >> n; for (i; i<n; i++) { a = true; for (j = 2; j <= i / 2; j++) if ((i%j) == 0) a =...

Регулярные выражения - C++
Всем доброе утро. Ребята подскажите что не так в выражении вот шаблон регулярного выражения ^*,"(*)","(*)" а срочку которую отправляю...

Регулярные выражения - C++
Доброй ночи! Использую вот такой код void INITDIALOG(void* p){ char* bufer = new char; server.GetLocList(bufer); char * t =...

[C++] Регулярные выражения - C++
Знаю что в стандарте С нет регулярных выражений. Хочу попробывать собрать простую функцию поиска по шаблону регулярных выражений. ...

Регулярные выражения - C++
Помогите написать регулярку. Пишу на RE2. Если в тексте встречается ******.moikrug.ru то нужно вытащить то что под звездочками. Буду...

Регулярные выражения - C++
Можете подсказать что это значит? "Max-Forwards*(\d{3,}|7)" я без понятия что это и откуда это( Добавлено через 4 минуты я уже...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 22:46  [ТС] #16
Чтоб таблицу рисать такими символами ╠ и т.д.
У меня еще один вопросик
как на С++ будет выглядеть такое:
C++
1
printf("a=%8.2f",a);
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 23:00 #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <stdio.h>
 
int main(){
float a = 2.345;
 
printf("a=%8.2f",a);  // это даёт два знака после запятой: это C функция
printf("\n");         // на следующую сроку.
cout<<a;            // выводит столько знаков после запятой сколько их есть: это C++: это лучше.          
cout<<"\n";        // на следующую сроку.
return 0;
}
Совет не смешивай в программе оба способа вывода выбери либо C либо C++.
При смешивании они могут работать не согласованно.
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
24.03.2010, 12:19 #18
Замените основной цикл этим. Все работает
C++
1
2
3
4
5
6
7
8
9
10
for (int i=0, j=NUM-1, int k=0; k<NUM; k++) {
     if (A[i] > 0) {
          Pol[i] = A[i];
          i++;
     }
     else {
          Pol[j] = A[j];
          j--;
     }
}
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.03.2010, 12:29 #19
Я и такой алгоритм проверял он тоже не сработал,
После того как ты найдешь первый отрицательный ты на нём и застрянешь.
Мы же сравниваем с индексом mas[i] а i при нахождении <=0 не изменяется, следовательно.
мы опять останемся на том же месте.
потому что i будет не низменно,
положи небольшую программу с которой он работает, мне интересно.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.03.2010, 12:43 #20
Цитата Сообщение от PodOnoK Посмотреть сообщение
Располижить в массиве Pol сначала положительные, а потом отрицательные элементы выходящего массива. Дан массив А(9)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
 
int main()
{
  const int size    = 9;
        int a[size] = {1, -2, 3, -4, 5, -6, 7, -8, 9};
        int b[size];
 
  std::copy            (a, a + size, b);
  std::stable_partition(b, b + size, std::bind1st(std::greater<int>(), 0));
 
  std::copy (b, b + size, std::ostream_iterator<int>(std::cout, " "));
 
  return 0;
}
Cepera
52 / 52 / 1
Регистрация: 09.03.2009
Сообщений: 178
24.03.2010, 12:45 #21
Цитата Сообщение от PodOnoK Посмотреть сообщение
Чтоб таблицу рисать такими символами ╠ и т.д.
Так:
C++
1
cout<<"\а_здесь_ascii_код";
т.е. код экранируется обратной косой чертой
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.03.2010, 13:04 #22
Я не люблю потеть над алгоритмами поэтому они порой бывают не очень быстрыми но более
проверенные.
Может кто и за это спасибо скажет.
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
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <conio.h>
 
#define size 10
int main(){
 
int mas_Out[size] = {7,1,-2,3,-4,5,6,-7,8,9};
int mas_In[size]  = {0};
 
int i,j = 0;
int tmp_j = 0;
 
 
//Решние в 4 цикла.
for(i  = 0  ; i < size ; i++){
 
   for(j = tmp_j ; j < size ; j++){
        //выходим из цикла, и запоминаем индекс положительного
        if(mas_Out[j]>=0){
            mas_In[i] = mas_Out[j];  
            tmp_j = j+1;   //сохраняем для для начала рассморта следующего элемента
            j = size+20;   //просто для выхода из цикла.
        }
    
}
 
if(j==size)break; //что бы запомнить индекс i где находиться последний элемент >=0
}
 
tmp_j = 0;
for(;i<size;i++){
    for(j=tmp_j;j<size;j++){
    if(mas_Out[j]<0){
            mas_In[i] = mas_Out[j];  
            tmp_j = j+1;   //сохраняем для для начала рассморта следующего элемента
            j = size+20;   //просто для выхода из цикла.
        }
 
    }
 
}
 
 
for(i=0;i<size;i++){  printf("%d ",mas_In[i]);  }
printf("\n");
 
 
 
 
return 0;
}
Добавлено через 1 минуту
И такие алгоритмы порой трудно понять на трезвую голову.

Добавлено через 12 минут
//......
siger
13 / 13 / 1
Регистрация: 27.02.2010
Сообщений: 46
24.03.2010, 13:18 #23
R0mm, только нужно
C++
1
2
3
4
5
6
7
8
9
10
for (int i=0, j=NUM-1, int k=0; k<NUM; k++) {
     if (A[k] >= 0) {
          Pol[i] = A[k];
          i++;
     }
     else {
          Pol[j] = A[k];
          j--;
     }
}
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
24.03.2010, 13:34 #24
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 <conio.h>
 
#define size 10
int main(){
 
int mas_Out[size] = {7,1,-2,3,-4,5,6,-7,8,9};
int mas_In[size]  = {0};
 
int i,k,j = 0;
 
 
 
for (i=0, j=size-1,  k=0; k<size; k++) {
     if (mas_Out[k] >= 0) {
          mas_In[i] =  mas_Out[k];
          i++;
     }
     else {
          mas_In[j] =  mas_Out[k];
          j--;
     }
}
 
for(i=0;i<size;i++){  printf("%d ",mas_In[i]);  }
printf("\n");
 
 
return 0;
}
Я знал что Romm был очень близок к решению.
Думал он сам исправит.
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
24.03.2010, 14:08  [ТС] #25
Всем спс за помощь, я тут сам вчера накатал программу, преподавателю понравилось.
Вот код:
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 <iostream.h>
#include <conio.h>
#include <stdio.h>
 
void main()
{
 int a[9],pol[9];
 clrscr();
 for (int k=0; k<9; k++)
 {
  cout<<"Vvedite "<<k+1<<"-yi element: ";
  cin>>a[k];
 }
 cout<<endl<<"ЙННННННННЛННННННННННННННННННННННННННННН»"; int j(-1);
 cout<<endl<<"є Massiv є           Elementi          є";
 cout<<endl<<"ЗДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶";
 cout<<endl<<"є  A[9]  є";
 for (k=0; k<9; k++) printf(" %2i",a[k]);
 cout<<"  є"; cout<<endl<<"ЗДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶";
 for (k=0; k<9; k++)
  if (a[k]>0) {
           j++; pol[j]=a[k];
          }
 j++; cout<<endl<<"є Pol["<<j<<"] є";
 if (j>0) {
       for (k=0; k<j; k++) printf(" %2i",pol[k]);
      }
  else cout<<"            Pusto          ";
 if (j!=0) for (k=0; k<(27-(j*3)); k++) cout<<" ";
 cout<<"  є"; cout<<endl<<"ЗДДДДДДДДЧДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¶"; int i(-1);
 for (k=0; k<9; k++)
  if (a[k]<0) {
           i++; pol[i]=a[k];
          }
 i++; cout<<endl<<"є Pol["<<i<<"] є";
 if (i!=0) {
        for (k=0; k<i; k++) printf(" %2i",pol[k]);
       }
  else cout<<"            Pusto          ";
 if (i!=0) for (k=0; k<(27-(i*3)); k++) cout<<" ";
 cout<<"  є"; cout<<endl<<"ИННННННННКНННННННННННННННННННННННННННННј"; getch();
}
Вот как мне кажется, с такой простой задачей проблему сделали)) Всем спс за помощь.
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
24.03.2010, 21:56 #26
Genius Ignat, тьфу.. конечно же там A[k] !) Спросони невнимателен был

Добавлено через 56 секунд
siger, дада) спасибо. так и задумывалось
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2010, 21:56
Привет! Вот еще темы с ответами:

Регулярные выражения с++11 - C++
Просветите, пожалуйста, как из следующей строки &quot;123&lt;tag&gt;456&lt;/tag&gt;789&lt;tag&gt;987&lt;/tag&gt;654321&quot; с помощью регулярного выражения напечатать &quot;456...

регулярные выражения - C++
прочитал статю http://www.opennet.ru/base/dev/pcre_cpp.txt.html про регулярные выражения в c++ неужели там мноо кода нужно писать? ...

Регулярные выражения - C++
Ребят, у меня тут проблемы. В файле input.txt есть строчки, в которых нужно найти вес, т.е., например, 221 kg, 45g и отправить их в аутпут....

С++ и регулярные выражения - C++
С++ и регулярные выражения - возможно ли ето? Какие есть библиотеки или что-то в етом роде?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.03.2010, 21:56
Ответ Создать тему
Опции темы

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