Member 13413735 Ответов: 3

Как сделать cc программу вопроса


Вы-закодированная форма строки данных следующим образом: последовательная
вхождения буквы (до 9) представлены буквой
далее следует количество вхождений.

Например, строка

a9a3b2c4de

расшифровывается как струна

aaaaaaaaaaaabbccccdc

- то есть 12 последовательных вхождений a, за которыми следуют 2 bs, а затем
4 cs, затем a d и, наконец, c

Учитывая закодированную форму, вы должны вывести строку данных.

Ввод
-----
Кодированная форма строки, выполненная в соответствии со следующими правилами.
1. Если символ встречается только один раз, то в кодированной строке он
появляется как таковой (например, 'd' в приведенной выше строке.)
2. Если число последовательных вхождений символа равно
между 2 и 9, то он представлен в виде символа, за которым следует
по количеству вхождений (например, aaaab представлен как a4b).
3. Если число последовательных вхождений символа больше
чем 9, то сгруппируйте 9 вхождений в соответствии с правилом 2. Повторите набор
правила для оставшейся строки.

Выход
------
Исходная строка, состоящая только из символов которого
кодировка была дана в качестве входных данных.

Что я уже пробовал:

#include<stdio.h>
 
int main() {
   char str[20], ch;
   int count = 0, i;
 
   printf("\nEnter a string : ");
   scanf("%s", &str);
 
   printf("\nEnter the character to be searched : ");
   scanf("%c", &ch);
 
   for (i = 0; str[i] != '\0'; i++) {
      if (str[i] == ch)
         count++;
   }
 
   if (count == 0)
      printf("\nCharacter '%c'is not present", ch);
   else
      printf("\nOccurence of character '%c' : %d", ch, count);
 
   return (0);
}

Patrice T

Этот код предназначен для другой проблемы.

3 Ответов

Рейтинг:
1

OriginalGriff

Еще раз перечитайте свой домашний вопрос.
Вам нужно прочитать строку, а затем обработать ее как пары символов.
Первый символ-это символ, который нужно повторить, второй-количество раз, чтобы повторить его (N).

Все, что вам нужно сделать, это напечатать символ N раз, а затем перейти к следующей паре.

Но это твое домашнее задание, так что я не дам тебе никакого кода!


Рейтинг:
1

CPallini

В соответствии с требованиями

a9a3b2c4de

следует расширить до
aaaaaaaaaaaabbccccde

вместо
aaaaaaaaaaaabbccccdc


Тем не менее, расширение это действительно простое дело:
(обработка ошибок, то есть неправильный формат входной строки, оставлена в качестве упражнения)
  1. прочитайте следующий символ из закодированной строки, если нет следующего символа (конец строки достигнут), а затем выйдите
  2. если считываемый символ является буквой, то добавьте его в выходную строку и запишите в переменную (скажем cur_char) вернитесь к шагу 1.
  3. считанный символ-это цифра, преобразуйте ее в соответствующее число, скажем d и добавить cur_char d- раз в выходную строку


Рейтинг:
0

Nuruddin Warsi

плз помогите..где я ошибаюсь?

#include<stdio.h>
int main()
{
int i,n,s;
char a[100];
scanf("%d",&s);
for(i=0;i<s;i++)
{
scanf("%c",&a[i]);
}
for(i=0;i<s;i++)
{
if((a[i]>='a' && a[i]<='z')&&(a[i+1]>='a'&& a[i+1]<='z'))
{

printf("%c",a[i]);
}

else if((a[i]>='a' && a[i]<='z') &&(a[i+1]>=2 && a[i+1]<=9))
{

n=a[i+1];
while(n>0)
{
printf("%c",a[i]);
n=n-1;
}

}
}
if(a[s-1]>='a'&& a[s-1]<='z')
{
printf("%c",a[s-1]);
}
return 0;
}


Richard MacCutchan

else if((a[i]>='a' && a[i]<='z') &&(a[i+1]>=2 && a[i+1]<=9))
Вам нужно поставить кавычки вокруг 2 и 9, они вводятся как символы, а не целые числа.

Nuruddin Warsi

неужели это...все еще не работает

Patrice T

Является ли это решением вопроса?
или у вас много счетов?

Nuruddin Warsi

другой человек...искал решение...наткнулся на этот сайт и решил выложить вопрос относительно кода

Patrice T

Откройте новый вопрос для вашей проблемы
с кодом ans объяснение того, что не так.
затем удалите это " решение"

Member 13413799

можете вы, пожалуйста, дайте мне почтовый идентификатор Юр я тоже участник сайт nptel