| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Убрать в каждом слове после запятой до состых |
| Автор: antigrom 3.12.2008, 05:20 |
| Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами. Удалить из каждой группы идущих подряд более двух цифр, которой предшествует точка, все цифры начиная с третьей (например, 5+0.1234-98.54+123.4 преобразуется в 5+0.12-98.54+123.4). Писать надо в буилдере Консол Визард Я сделал так чтобы прога убирала все после третьей цифры в последнем введеном слове...а дальше ну хоть убей не могу решить и все ... 1) #pragma hdrstop #include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> //--------------------------------------------------------------------------- #pragma argsused int main() { char a_string[100],b_string[100],word[40]=""; cout<<"imput the stging:"<<endl; gets(a_string); int j=0; int len=strlen(a_string); for(int i=0;i<len;i++) { if((a_string[i-3]!=',')&&(i!=len)) word[j++]=a_string[i]; else { cout<<word; j=0; } } getch(); } 2)тут я пытался проверить на числа введеные слова и мне надо сделать так что прога при проверке после запятой убирала все символы после 3 цифры... подмогните......очь прошу... #pragma hdrstop #include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> //--------------------------------------------------------------------------- #pragma argsused int main() { char a_string[100],word[40]=""; cout<<"imput the stging:"<<endl; gets(a_string); int j=0; int len=strlen(a_string); for(int i=0;i<len;i++) { if (a_string[len]=0||1||2||3||4||5||6||7||8||9) { if(a_string[i]!=',') { if ((a_string[i+2]=='0'||'1'||'2'||'3'||'4'||'5'||'6'||'7'||'8'||'9')&&(i!=len)) word[j++]=a_string[i]; else j=0; } } cout<<word; } getch(); } //--------------------------------------------------------------------------- |
| Автор: mes 3.12.2008, 06:02 |
1. == a не = 2. if (a_string[len]=='0' || a_string[len]=='1' ... ) или if (a_string[len]>='0' && a_string[len]<='9 ) |
| Автор: mrbrooks 3.12.2008, 08:51 |
| |
| Автор: xvr 3.12.2008, 10:52 | ||
|
| Автор: antigrom 3.12.2008, 11:21 |
| чего не получается прога циклится и выводит постоянно первое число если не трудно объясните что и как делать а лучше если коментарий оставите что делает каждый оператор... #include <iostream> #include <conio.h> #include <locale> #include <ctype.h> enum State { S_Start, S_Count, S_Block }; int main() { char ch; int cnt=0; State state=S_Start; std::cin>>ch; while(ch) { switch(state) { case S_Start: if (ch==',' || ch=='.') {state=S_Count; cnt=0;} break; case S_Count: if (!isdigit(ch)) {state=S_Start; break;} if (cnt<3) ++cnt; else state=S_Block; break; case S_Block: if (!isdigit(ch)) {state=S_Start; break;} continue; } std:: cout << ch; } return 0; } |
| Автор: xvr 3.12.2008, 20:33 | ||||
| Переборщил с std:: по вкусу вот это
должно быть таким
|