• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Сортировка Символов В Строке По Частоте Их Встреча

  • Автор темы ленарано
  • Дата начала
Л

ленарано

язык си. Бьюсь над задачей несколько дней.
Вот я немного навояла. Что дальше делать пока не знаю(((Не получается подсчитать и заполнить количество каждого символа.
C++:
#include <locale.h>
#include <string.h>
#include <conio.h>
void bubbleSort(char *a, int *b, int size );

struct str
{char sim;
int skl;};


int main(void)
{setlocale(LC_ALL,"rus");
struct str s [256], *str1[256];
int i,j,len;
char tmpc;
char string[21];
memset( s, 0, sizeof(s)); 
len = strlen( string ); 
printf( "Введите строку: \n" ); 
gets (string);
i=0;
while(string[i]!='\0')
{s[i].sim=string[i];
printf( "%dсимвол %c\n",i+1, s[i].sim );
i++;
}

for(i=0;i<len;i++)//вот на этом этапе явно что-то не так
{if(s[i].sim)
s[i].skl+=1;
printf( "Символ '%c'. Он встречался %d раз\n", s[i].sim, s[i].skl );
} 
}
void bubbleSort(char *a, int *b, int size )
{
int tmp, i, j;
char tmpc;
for(i = 0; i < size - 1; ++i) // i - номер прохода
{			
for(j = 0; j < size - 1; ++j) // внутренний цикл прохода
{	 
if (b[j + 1] < b[j]) 
{
tmp = b[j + 1]; 
b[j + 1] = b[j]; 
b[j] = tmp;
tmpc = a[j + 1]; 
a[j + 1] = a[j]; 
a[j] = tmpc;
}
}
}
}
 
M

MisterSpock

Вы уверены, что printf должно выполняться в цикле?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!