Напечатать последовательность слов в обратном порядке - C (СИ) (150838)

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

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

Задание:

Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных букв; между соседними словами - запятая, за последним словом точка. Напечатать эту же последовательность слов, но в обратном порядке.

Мой код:
#include <stdio.h>
#include <iostream>
 
void main()
{
    char s[31][6];
    char str[181];
    int i,j,k,n;
    printf("CTPOKA: ");
    gets(str);
 
    k=0;
    n=0;
    for (i=0;str[i]!=0;i++)
    {
        if (str[i]==',')
        {
            s[k][n++]=0;
            k++;
            n=0;
            continue;
        }
        s[k][n]=str[i];
        n++;
    }
 
    for (i=k;i!=0;i--)
        printf(" %s", s[i]);

    system("pause");
}
В теории все правильно, но на практике выводит много непонятных символов. В чем проблема?

Решение задачи: «Напечатать последовательность слов в обратном порядке»

textual
Листинг программы
#include <stdio.h>
#include <iostream>
 
 
void main()
{
    char str[181];
    int i,j;
    printf("CTPOKA: ");
    gets(str);
 
    for (i=strlen(str);i!=-1;i--)
    {
        if (str[i]==',')
            for (j=1;j<=6;j++)
                if (str[i+j]!=',' && str[i+j]!='.') printf("%c", str[i+j]); else {printf(","); break;}
            
        if (i==0) 
            for (j=0;j<=5;j++)
                if (str[i+j]!=',') printf("%c", str[i+j]); else break;
    }
    printf(".\n\n");
 
    system("pause");
}

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

Вывод программы представляет собой строку, полученную путем перебора символов строки в обратном порядке, при этом удаляются все символы, следующие за запятой, до тех пор, пока не будет достигнута точка. Список действий:

  1. Программа запрашивает строку, используя функцию gets().
  2. Используется цикл for, чтобы пройти по символам строки в обратном порядке.
  3. Если текущий символ является запятой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  4. Если текущий символ не является запятой, он выводится на экран.
  5. Если текущий символ является запятой, но следующая за ней точка не является точкой, она также выводится на экран.
  6. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  7. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  8. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  9. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  10. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  11. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  12. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  13. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  14. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  15. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  16. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  17. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  18. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.
  19. Если текущий символ является запятой, а следующая за ней точка не является точкой, то используется вложенный цикл for, чтобы пропустить символы, следующие за запятой, до тех пор, пока не будет достигнута точка.
  20. Если текущий символ является запятой, а следующая за ней точка является точкой, то цикл прерывается.

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


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

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

12   голосов , оценка 4.417 из 5
Похожие ответы