Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
2020-08-21 | 337 |
5.00
из
|
Заказать работу |
|
|
Программа в цикле вводит строки текста, по нажатию произвольной клавиши поочередно выделяет каждое слово строки, проверяет его на наличие букв и цифр, выводит длину минимального слова в строке и само это слово.
#include <string.h>
#include <ctype.h>
int main ()
{const int n=70;
char s[n],*st,str[n];
unsigned min;
bool flag=0;
cout << "input of string" << endl;
while (cin.getline(s, n)) //цикл ввода строк, выход – Ctrl+z
{ cout << endl;
st=strtok(s,",.:;!?"); //выделение 1-ой лексемы (слова)
min=strlen(st); //получение в min длины слова
strcpy_s(str,st); //запоминание минимального слова
while (st!=NULL)
{ cout << st << endl;
_getch();
for (unsigned j=0; j<=(strlen(st)-1);j++)
if (isalnum(st[j])) //проверка слова на буквы и цифры
flag=1;
else
{
flag=0;
break;
}
if (flag)
if (strlen(st)<min)
{min=strlen(st);
strcpy_s(str,st);
}
st=strtok(NULL,",.:;!?"); //выделение i-ой лексемы
} //end while выделения лексем
cout << "min dlina = " << min << "\nmin lexema = " << str<< endl;
cout << "input of string or Ctrl+z" << endl;
}//end while ввода строк
_getch();
return 0;
}
Сортировка вводимых с клавиатуры строк *
Вводимые строки помещаются в двумерный массив. Признак завершения ввода – STOP_STRING=“*!*”. Сортировка проводится по методу пузырька в порядке возрастания кода первого символа (по алфавиту). При сортировке перемещаются при необходимости не сами строки, а указатели на них. Для сравнения строк используется библиотечная функция strcmp().
// prot. h
void vvod_str (char **,const int, int&);
void vyvod_str (char **, int);
void sortirovka (char **, int);
// stdafx.h
#pragma once
#define WIN32_LEAN_AND_MEAN
|
#include <stdio.h>
#include <tchar.h>
// TODO: reference additional headers your program requires here
#include <iostream>
#include <conio.h>
#include <string.h>
#include "prot.h"
using namespace std;
//fun.cpp
#include "stdafx.h"
void vvod_str (char **mas_str,const int n, int &dn)
{ const char * STOP_STRING= "*!*";
cout << "Input of string:" << endl;
for (int index=0; index<n; index++)
{cin>> mas_str[index];
if (!strcmp(mas_str[index], STOP_STRING))
{dn=index;break;}
}
}
void vyvod_str (char **mas_str, int n)
{ cout << "----------------------" << endl;
int m=n;
for (int index=0; m>0; m--)
cout << mas_str[index++] << endl;
}
void sortirovka (char **pointers, int n)
{ char *ptr;
for (int index=0; index<n; index++)
for (int i=n-1; i > index; i--)
if (strcmp(pointers[i-1], pointers[i])>0)
{ptr= pointers[i];
pointers[i] = pointers[i-1];
pointers[i-1] = ptr;
}
}
// main.cpp
#include "stdafx.h"
int main()
{
const int STRING_NUMBER= 100; //количество строк
const int BUFFER_SIZE =81; //количество символов в строке
char buffer [STRING_NUMBER][BUFFER_SIZE]; //двумерный массив строк
char *pointers [STRING_NUMBER]; //массив указателей на строки
int dn; //количество введенных строк
//присваивание значений элементам массива указателей
for (int index=0; index<STRING_NUMBER; index++)
pointers[index] = buffer[index];
//или pointers[index] = &buffer[index][0];
vvod_str(pointers, STRING_NUMBER, dn); //ввод строк
vyvod_str(pointers, dn); //вывод строк
sortirovka (pointers, dn); //сортировка строк
vyvod_str(pointers, dn);
_getch();
return 0;
}
Сортировка строк в зависимости от признака, передаваемого функции main() через аргумент argv *
Программа сортирует строки в лексикографическом порядке, возрастающем или убывающем в зависимости от признака, передаваемого функции main() через аргумент argv, и выводит их на стандартный вывод. Исходный текст программы с комментариями и подробное описание выполняемых действий, представлены в лекции 1.
Инвертирование строки с помощью рекурсивной функции
void reverse();
int main()
{ reverse();
cout << endl;
_getch();
|
return 0;
}
void reverse()
{ char c= _getche();
if (c!= 13) reverse(); //’\r’
cout << c;
return;
}
[1] Об этих способах определения строк мы поговорим чуть позже в данной лекции
[2] Об этих способах определения строк мы поговорим чуть позже в данной лекции
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!