Вывести Max И Min Слово В Строке С++

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

irit

Гость
#1
Добрый День. Помогите пожалуйста с решением следующей задачи:
В подключаемой к головной программе функции необходимо реализовать следующее: найти и вывести на экран самое длинное и самое короткое слово в указанной пользователем строке (n) символьной матрицы М. Пишем на Борланде. Некоторые функции из книг - не работают. Получилось написать только подсчет макс. длины слова, но как найти мин. и вывести их оба на экран - не могу понять. Была идея зафиксировать индекс первой буквы макс. и мин. слова в отдельных переменных и затем вывести их циклом до пробела, но реализовать не получилось, только путаюсь ещё больше. Заранее спасибо. Вот код:

C++:
void Stroki(char M[K_Strok][K_Stolb], int st, int el)
{
clrscr();		gotoxy (20,20);
char Mchar; 
int n;
cout << "Vvedite nomer stroki ";

cin >> n;	


int curlen = 0;	// dlina slova 
int maxlen = 0;	// max dlina slova
int minlen = el; // min dlina slova
int index = -1;	// scetchik


for (int i=0;; i++)
{	
Mchar = M[n][i];



if (Mchar == ' '|| Mchar == '\0')

index = i;	 
curlen = i-index; 

if (curlen > maxlen)
maxlen = curlen;


if (Mchar == '\0')
{
break;
}
 

ruamanga

New Member
12.01.2012
4
0
#2
Вот вариант всё в main() для визуализации:

C++:
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
#pragma argsused
int main(int argc, char* argv[])
{
const int K_Strok=2, K_Stolb=120;
int st, el, flagsign=0;
char M[K_Strok][K_Stolb]={"Vfieufygu jud hfu wkufykg iugiug gffee"," ewu7fwejytewv  kuygu g	ygutyfu uguyfu"};

clrscr(); gotoxy (20,20);
char Mchar;
int n;

cout << "Vvedite nomer stroki ";
cin >> n;

int curlen = 0;	// dlina slova
int maxlen = 0;	// max dlina slova
int minlen = K_Stolb; // min dlina slova
int index = -1;	// scetchik

for (int i=0;; i++)
{
Mchar = M[n][i];
if (Mchar == '\0') break;
if (Mchar == ' ' || Mchar == '\0')
{
if (flagsign==0) continue;
else {
curlen = i-index-1;
index = i;
cout << " curlen = " << curlen << "; ";
if (curlen > maxlen) maxlen = curlen;
if (curlen < minlen) minlen = curlen;
};
};
if (Mchar == ' ') flagsign = 0; else flagsign = 1;
}
cout << "\nword length maximal = " << maxlen << "\n";
cout << "word length minimal = " << minlen << "\n";
return 0;
}