Ввести строку, заменить интервалы между словами на 2 пробела - C (СИ) (76700)

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

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

Ввести строку, заменить интервалы между словами на 2 пробела. Попробовал сосчитать сколько всего символов и переместить их все вправо пока символ после пробела не станет тоже пробелом. Подскажите где ошибка:
#include "stdafx.h"
#include "stdio.h"
#include "string.h"

int main()
{
    char str[100];
    int i, n;
    printf("Vvesti stroku: \n");
    gets(str);
    for(i=0; i<100 ; i++)
    {
        if(str[i]=='\0')
        {
            n=(i-1);
        }
    }
    for(i=0; i<100; i++)
        for(n; n<100; n--)
            if(str[i]==' ')
            {
                while(str[i+1] != ' ')
                {
                    str[n]=str[n-1];
                }
            }               
    printf("\n stroka: %s \n", str);
    return(0);
}
помогите пожалуйста

Решение задачи: «Ввести строку, заменить интервалы между словами на 2 пробела»

textual
Листинг программы
#include "stdio.h"
#include "string.h"
 
 
int main()
{
    char str[100];
    int i, length, n;
    printf("Vvesti stroku: \n");
    gets(str);
    for(i=0; i<100 ; i++)
    {
        if(str[i]=='\0')
        {
            length=(i-1);
            break;
        }
    }
    for(i=0; i<length; i++)
        if(str[i]==' ')
        {
            n = length + 2;
            while(str[i+1] != ' ')
            {
                str[n]=str[n-1];
                n--;
            }
            length++;
            i++;
        }               
    printf("\n stroka: %s \n", str);
    return(0);
}

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

  1. Включаем необходимые заголовочные файлы
  2. Объявляем переменные:
    • str - массив символов для хранения введенной строки
    • i, length, n - целочисленные переменные для работы со строкой
  3. Выводим сообщение и призыв к вводу строки
  4. С помощью функции gets() считываем строку из стандартного ввода и сохраняем её в массиве str
  5. В цикле проходим по всем элементам массива str (кроме последнего, т.к. последний элемент массива - это нулевой символ)
  6. Проверяем, является ли текущий символ нулевым символом. Если да, то:
    • сохраняем длину строки (исключая нулевой символ) в переменную length
    • выходим из цикла
  7. В цикле проходим по всем пробелам в строке (т.е. по всем символам, которые равны ' ')
  8. Если текущий символ равен ' ', то:
    • увеличиваем длину строки на 2 (т.к. вместо одного пробела мы вставляем два)
    • в цикле сдвигаем все символы, следующие за текущим пробелом, на один символ вправо (т.к. мы добавили пробел)
    • уменьшаем значение переменной length на 1 (т.к. мы только что обработали один пробел)
  9. Выводим измененную строку
  10. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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