Воскресенье, 01.12.2024, 11:15
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1313
Статистика

Онлайн всего: 5
Гостей: 5
Пользователей: 0

Примеры решения задач по строкам

Пример 1

            Дана строка   (максимум    15   символов), содержащая  целое  незнаковое   число  в троичной системе  исчисления. Перевести число в семеричную  систему  исчисления. Полученный результат вывести на экран.

#include <stdio.h>

int main(int argc, char *argv[])

{

  char str[16];

  printf("Введите число: ");

  gets(str);

  unsigned num = 0, i;

  for(i=0;str[i]!=0;i++){

    num += str[i] - 48;

    if(str[i+1] != 0) num *= 3;

  }

  for(i=0;num>0;i++){

    str[i] = num%7 + 48;

    num /= 7;

  }

  str[i] = 0;

  for(int j=0;j<i/2;j++){

    char ch = str[j];

    str[j] = str[i-j-1];

    str[i-j-1] = ch;

  }

  printf("Результат: ”);

  puts(str);

  return 0;

}


Пример 2

Дана   строка  (максимально  100  символов), содержащая слова, разделенные одним или несколькими     пробелами,    или   знаками табуляции. Заменить все знаки   табуляции знаком пробела, удалить двойные пробелы из  строки.   При   реализации   программы функции    из    библиотеки    string.h   не использовать.

#include <stdio.h>

int main(int argc, char *argv[])

{

  char str[101];

  printf("Введите строку: ");  gets(str);

  for(int i=0;str[i]!=0;i++)

    if(str[i] == '\t') str[i] = ' ';

  int j = 1;

  for(int i=1;str[i] != 0;i++){

    if((str[i] == ' ') && (str[i-1]==' ')) continue;

    str[j++] = str[i];

  }

  str[j] = 0;

  printf("Результат: ”);  puts(str);

  return 0;

}


Пример 3

Дана   строка  (максимально  100  символов), содержащая слова, разделенные одним или несколькими    пробелами,    или    знаками табуляции.  Заменить  все знаки  табуляции знаком пробела, удалить  двойные пробелы из   строки.   При   реализации   программы использовать     функции    из   библиотеки string.h.

#include <stdio.h>

#include <string.h>

int main(int argc, char *argv[])

{

  char str[101];

  printf("Введите строку: ");  gets(str);

  do{

    int ind = strcspn(str,"\t");

    if(str[ind] == 0) break;

    str[ind] = ' ';

  }while(1);

  do{

    char *ptr = strstr(str,"  ");

    if(!ptr) break;

    strcpy(ptr,ptr+1);

  }while(1);

  printf("Результат: ”); puts(str);

  return 0;

}


Пример 4

Дана    строка    (максимальная    длина   100 символов), содержащая слова, разделенные пробелами или знаками   табуляции.  Число слов в строке не  превышает  20,   а   длина каждого   слова   не   более   10   символов. Упорядочить слова в строке по алфавиту.

#include <stdio.h>

#include <string.h>

 

int main(int argc, char *argv[])

{

  char str[101];

  printf("Введите строку: "); gets(str);

  char array[20][11];

  int count = 0;

  char *ptr = strtok(str,"\t ");

  for(count=0; ptr!=NULL; count++){

    strcpy(array[count],ptr);

    ptr = strtok(NULL,"\t ");

  }

int flag = 1;

 while(flag){

    flag = 0;

    for(int i = 0;i<count-1;i++)

      if(strcmp(array[i],array[i+1])>0){

        char buffer[11];

        strcpy(buffer,array[i]);      strcpy(array[i],array[i+1]);

        strcpy(array[i+1],buffer);  flag = 1;

      }

  }

  strcpy(str,"");

  for(int i=0;i<count;i++){

    strcat(str,array[i]); strcat(str," ");

  }

  printf("Результат: ”); puts(str);

  return 0;

}


Пример 5

Дан массив строк  (максимально  25  строк, каждая  строка  не  более  80  символов). Строки вводятся пользователем, признак завершения ввода – ввод  пустой  строки. Упорядочить   строки   по  длине  или  по алфавиту (по выбору пользователя).

#include <stdio.h>

#include <string.h>

int main(int argc, char *argv[])

{

  char strs[25][81];

  unsigned count = 0;

  printf("Вводите строки:\n");

  for(int i=0;i<25;i++,count++){

    gets(strs[i]);

    if(strcmp(strs[i],"") == 0) break;

  }

  int type = 0;

  printf(" 0 – сортировать по алфавиту, \

             \n !0 – сортировать по длине: ");

  scanf("%d",&type);

int flag = 1;

  while(flag){

    flag = 0;

    for(int i = 0;i<count-1;i++)

      if((type&&(strlen(strs[i]) > strlen(strs[i+1])))||

          (!type&&(strcmp(strs[i],strs[i+1])>0))){

        char buffer[81];

        strcpy(buffer,strs[i]);

        strcpy(strs[i],strs[i+1]);

        strcpy(strs[i+1],buffer);

        flag = 1;

      }

  }

  printf("Результат:\n");

  for(int i=0;i<count;i++) puts(strs[i]);

  return 0;

}

 

 

Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---