Обработка строки: выписать в новую строку целые десятичные константы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте,имеется задание: Переписать слова, которые представляют собой правильную целую десятичную константу. Есть даже наработка,даже наверное больше скажу,программа в какой-то степени работает,но вот в чем проблема,мне необходимо,чтобы она не выписывала в новую строку числа,которые начинаются с 0(по факту это же не десятичная константа),вот мой код,спасибо за раннее
Листинг программы
  1. #include "stdio.h"
  2. #include "math.h"
  3. #include "conio.h"
  4. #include "windows.h"
  5. #include<string.h>
  6. int main ()
  7. { int i,i1,i2,n,Kol_Digit;
  8. char s1[80], s2[80]="",slovo[30];
  9. SetConsoleOutputCP (1251);
  10. SetConsoleCP (1251);
  11. printf("\aВведите строку\n");
  12. gets(s1);
  13. printf("Исходная строка\n");
  14. puts(s1);
  15. i=0;
  16. while(i<strlen(s1))
  17. { //Определяем позицию начала слова
  18. while(i<strlen(s1) && s1[i]==' ')i++;
  19. if(i<strlen(s1))//
  20. {
  21. i1=i; //начало текущего слова
  22. while(i<strlen(s1) && s1[i]!=' ')i++; //конец текущего слова
  23. n=i-i1; //длина текущего слова
  24. strncpy(slovo,&s1[i1],n); //копируем текущее слово в
  25. slovo[n]=' '; //поле slovo, добавляем пробел
  26. slovo[n+1]='\0'; //и символ '\0'
  27. Kol_Digit=0; //Количество символов, являющихся цифрой
  28. for(i2=0;i2<strlen(slovo)-1;i2++)
  29. { //проверка, является-ли текущий символ строки цифрой
  30. if(isdigit((unsigned char)slovo[i2] ))
  31. Kol_Digit++;
  32. else
  33. break;//Найден символ "не цифра". Цикл можно прервать
  34. }
  35. if(Kol_Digit==strlen(slovo)-1 && slovo[1]!='0') //Последний символ - пробел
  36. strcat(s2,slovo);//Переписываем текущее слово в результирующую строку.
  37. }
  38. }
  39. s2[strlen(s2)-1]='\0';//В конце результирующей строки удаляем лишний пробел.
  40. printf("Результирующая строка длиной %d\n",strlen(s2));
  41. puts(s2);
  42. getch ();
  43. return 0;
  44. }

Решение задачи: «Обработка строки: выписать в новую строку целые десятичные константы»

textual
Листинг программы
  1. if(Kol_Digit==strlen(slovo)-1 && slovo[1]!='0') //Последний символ - пробел
  2.                 strcat(s2,slovo);//Переписываем текущее слово в результирующую строку.

Объяснение кода листинга программы

  1. В условии проверяется, является ли последний символ строки пробелом и не является ли он нулем.
  2. Если условие выполняется, то с помощью функции strcat к результирующей строке добавляется текущее слово.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы