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

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

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

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

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

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

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

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

Регулярные выражения - C++
Как записать строки у тегов <c></c> и <v></v>? <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <worksheet...

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

Регулярные выражения. - C++
Здравствуйте всем! Имеется массив строк. Надо написать программу с функцией реализующей выявления соответствия между шаблоном допустим...

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

Регулярные выражения в с++ - C++
Рылся рылся, нигде не нашел... Кто нибудь, объясните: 1) как установить эту библиотеку Regex. 2) Как заставить её работать. 3) И...

Регулярные выражения на C++ - C++
Здраствуйте, возникла необходимость использовать регурные выражения в Си++. Первое что пришло в голову переписать все на Qt например,...

Регулярные выражения - C++
Составить регулярное выражение, пропускающее строки, содержащие хотя бы по разу каждую из трех первых букв вашей фамилии(Например, фамилия...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
23.03.2010, 19:06     Регулярные циклы в С/С++ #2
Как-то так
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>
 
using namespace std;
 
#define NUM 9
 
int main() {
     int A[NUM];
     int Pol[NUM];
 
     cout << "Заполнение массива А.\n";
     for (int i=0; i<NUM; i++) {
          cout << "Введите элемент " << i+1;
          cin >> A[i];
     }
 
     for (int i=0, j=NUM-1; i<NUM; ) {
          if (A[i] > 0) {
               Pol[i] = A[i];
               i++;
          }
          else {
               Pol[j] = A[j];
               j--;
          }
     }
     return 1;
}
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 20:03  [ТС]     Регулярные циклы в С/С++ #3
Я переделал немного эту программу и она не выводит то что мне нужно.... Вот ее код:
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.h>
#include <conio.h>
 
int main() {
     int A[9];
     int Pol[9],i,j;
     clrscr();
     cout<<"Заполнение массива А.\n";
     for (i=0; i<9; i++) {
      cout<<"Введите элемент "<<i+1<<" ";
      cin>>A[i];
     }
 
     for (i=0, j=8; i<9; ) {
      if (A[i]>0) {
           Pol[i]=A[i];
           i++;
           cout<<endl<<Pol[i]," ";
      }
      else {
           Pol[j]=A[j];
           j--;
           cout<<endl<<Pol[j]," ";
      }
     }
     getch();
     return 0;
}
При ее запуске получается бсконечный вывод левых чисел... Кто знает в чем ошибка???
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 21:18     Регулярные циклы в С/С++ #4
i<NUM; //вот причина.
i может даже и не стать >=NUM потому что не все элементы массива могут быть положительны.

посмотри на условие:
C
1
2
3
4
if (A[i] > 0) {
               Pol[i] = A[i];
               i++;
          }
В цикл требуется простой счётчик:
C
1
2
3
4
5
6
7
8
9
10
11
  for (int i=0,k=0, j=NUM-1; k<NUM; ) {
          if (A[i] > 0) {
               Pol[i] = A[i];
               i++;
          }
          else {
               Pol[j] = A[j];
               j--;
          }
k++;  //поэтому цикл прекратиться.
}
Добавлено через 54 минуты
Алгоритм не рабочий, только проверил.
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 21:21  [ТС]     Регулярные циклы в С/С++ #5
Всем спс за помощь, но так как вы тут описывали мне не очень помогло. Тк мой компилятор сильно ругался. Вот написал сам код судите:
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
#include <iostream.h>
#include <conio.h>
 
void main()
{
 int a[9],pol[9];
 int i,k,j;
 clrscr();
 for (k=0; k<9; k++)
 {
  cout<<"Vvedite "<<k+1<<" element: ";
  cin>>a[k];
 }
 cout<<endl; j=-1;
 for (k=0; k<9; k++)
  if (a[k]>0) {
           j++; pol[j]=a[k];
          }
 j++;
 if (j>0) {
       for (k=0; k<j; k++) cout<<pol[k]<<" ";
          }
 cout<<endl; getch(); i=-1;
 for (k=0; k<9; k++)
  if (a[k]<0) {
           i++; pol[i]=a[k];
          }
 i++;
 if (i!=0) {
        for (k=0; k<i; k++) cout<<pol[k]<<" ";
           }
 getch();
}
Вроде все работает норм
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 21:23     Регулярные циклы в С/С++ #6
Не берите в голову что я сказал алгоритм не работает уже проверено.
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 21:28  [ТС]     Регулярные циклы в С/С++ #7
Я это тоже заметил когда его вставлял. Я в С\С++ пока не очень силен, т.к. недавно начали учить. Вот сам написал, вроде все норм)
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 21:40     Регулярные циклы в С/С++ #8
Я не любитель потеть над алгоритмами, поэтому, такой изощренный и сложный тебе
для понимания вариант решения.
Просто вечером не очень хорошо думается.
Завтра что - нибудь по проще будет.
Этот пример тебе пригодится для дальнейшего изучения C++
Решение с помощью стека.
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream.h>
//Описание узла стека:
struct Node {
int n_str;
Node *pnext;
};
 
//----------------------------------------------------------------------
int push(Node **top, int index); //положить на вершину стека
int pop(Node **top);             //выборка  из стека
int print(Node *top);            //показать значения стека
int Update(Node **top);          //полное освобождение памяти из под стека.
//----------------------------------------------------------------------
 
int main() {
const int SIZE = 10;
int A[SIZE] = {1 , 2, -5 , 3 , 5 , -7 , 7 ,3 ,1 };
Node *top_Ot = NULL;  
Node *top_Pol = NULL; 
 
             int Pol[SIZE] = {0};
 
              int iter = 0;
              while(iter<SIZE){
 
              if(A[iter]>=0)push(&top_Pol,A[iter]);
              if(A[iter]<0)push(&top_Ot,A[iter]);
              iter++;
              }
 
for(int i = 0;top_Pol;i++)Pol[i] = pop(&top_Pol);
for(;top_Ot;i++)          Pol[i] = pop(&top_Ot);
 
for( int p = 0 ; p <SIZE ; p++ ) cout<<Pol[p]<<' ';
cout<<"\n";
 
 
 
     return 0;
}
 
int push(Node **top, int index){
//Если формируем первый элемент.
if((*top)==NULL){
Node * pv = new Node ;
pv->n_str = index;
pv->pnext = NULL;
(*top)=pv;
return 0;
}
 
//Иначе добавляем на вершину.
else {            
Node * pv = new Node ;
pv->n_str = index;
pv->pnext = (*top);
(*top)= pv;
return 0;
}
 
return 0;
 
 
}
 
 
//выборка  из стека
int pop(Node **top){
Node *tmp = (*top);
if(tmp){
int str = tmp->n_str;
(*top)=(*top)->pnext;
delete tmp;
return str;
}
 
return 0;
}
 
//показать значения стека
int print(Node *top){   
while(top){
cout<<"Number_str "<<top->n_str<<'\n';
top = top->pnext;
}
cout<<'\n';
return 0;
}
int Update(Node **top){ 
    while((*top)){
    pop(top);
}
    
    return 0; 
}
Ещё раз извиняюсь за сложность.

Добавлено через 4 минуты
Поменяй :
C++
1
2
for(int i = 0;top_Pol;i++)Pol[i] = pop(&top_Pol);
for(;top_Ot;i++)          Pol[i] = pop(&top_Ot);
на это:
C++
1
2
3
int i;
for( i = 0;top_Pol;i++)Pol[i] = pop(&top_Pol);
for(;top_Ot;i++)          Pol[i] = pop(&top_Ot);
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 21:41  [ТС]     Регулярные циклы в С/С++ #9
Genius Ignat, ничего страшного. Я постараюсь и в этом разобраться. Все равно это понабится. Спс за код
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 21:42     Регулярные циклы в С/С++ #10
Если тебе не срочно завтра тебе решу.
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 21:52  [ТС]     Регулярные циклы в С/С++ #11
Нет, я не спешу. Еще раз спс.

Добавлено через 7 минут
Вот у меня вопрос ASCII(псевдо) коды можно использовать в VS 2006 когда создаеш консольное приложение? Если да, то как они вводтся тоже с помощью Alt+цифры?
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 21:54     Регулярные циклы в С/С++ #12
Да бы не отнимать времени у тебя, сразу признаюсь что не понял вопрос.
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 22:26  [ТС]     Регулярные циклы в С/С++ #13
Ну например такое:
Dec_____Hex___Char___Name
50_____32_____2______DIGIT TWO
65_____41_____A______LATIN CAPITAL LETTER A
204____CC____╠_______BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
PodOnoK
16 / 13 / 0
Регистрация: 10.01.2010
Сообщений: 252
23.03.2010, 22:31  [ТС]     Регулярные циклы в С/С++ #14
Вот такое
Вложения
Тип файла: rar Таблица символов ASCII.rar (15.1 Кб, 9 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2010, 22:42     Регулярные циклы в С/С++
Еще ссылки по теме:

Регулярные выражения - C++
Может кто нибудь подсказать реализацию регулярных выражений на С/С++?

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.03.2010, 22:42     Регулярные циклы в С/С++ #15
они вводтся тоже с помощью Alt+цифры
Что понимается под этим:
Таблица ASCII мне известна.
А что вы хотите сделать не понятно.
C++
1
2
3
4
5
6
7
8
#include <iostream.h>
int main(){
char ch = 65 ;  //код символа
cout<<ch;       //вывод буквы.
//Если ты введёшь число от -127...128 это число по таблице ASCII будет означать некий символ.
//Можешь вводить либо символы: либо числа от -127 до 128 если тебе интересно, всё равно результат символ.
return 0;
}
Может это надо было.
Yandex
Объявления
23.03.2010, 22:42     Регулярные циклы в С/С++
Ответ Создать тему
Опции темы

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