Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 18:03   #1
decorator
 
Регистрация: 14.02.2011
Сообщений: 3
По умолчанию Строки

Начальный текст(5-10 строк по 40-60 символов) вводится с клавиатуры
В каждой строке поменять местами слова максимальной и минимальной длины.

Вот часть программы.Сделал ввод текста и поиск макс и мин слов. Дальше не знаю что делать. Помогите пожалуйста!!

Код:
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<alloc.h>
#include<string.h>

void main ()
{int i,l,j,max=0,min=0,nsl,ksl,dlsl,nmax,kmax,nmin,kmin;
char S[5][60],B[5][60],*p=", ";
char *q;
clrscr();
for(i=0;i<5;i++)
gets (S[i]);
printf("\n");
printf("massiv:\n");
printf("\n");
for(i=0;i<5;i++)
printf("%s\n",S[i]);

q=strtok(S[i],p);
if(q) printf("%s\n",q);
do
{q=strtok(NULL,p);
if (q)
{
printf(" %d\n",q);}
}
while (q);

nsl=0;
for(i=0;i<5;i++)
 {for(j=0;j<60;j++)
  {if (S[i]==" ")
    {ksl=j-1;dlsl=ksl-nsl+1;
     if(dlsl>max) {max=dlsl; nmax=nsl; kmax=ksl;}
     if(dlsl<min) {min=dlsl; nmin=nsl; kmin=ksl;}
     nsl=j+1;
    }
  }
 }


}

Последний раз редактировалось Stilet; 15.03.2011 в 18:08.
decorator вне форума Ответить с цитированием
Старый 15.03.2011, 19:39   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

воооот, на плюсах

Код:
#include <iostream>
#include <string>
#include <iterator>
#include <sstream>
#include <vector>
#include <algorithm>

using namespace std;

const int N = 3;

bool cmp_str_len(const string &s1, const string &s2)
{ return s1.length() < s2.length(); }

void do_work(string &str)
{
	vector<string> v;
	stringstream ss_in(str), ss_out;
	copy(istream_iterator<string>(ss_in), istream_iterator<string>(), back_inserter(v));
	swap(*min_element(v.begin(), v.end(), cmp_str_len), *max_element(v.begin(), v.end(), cmp_str_len));
	copy(v.begin(), v.end(), ostream_iterator<string>(ss_out, " "));
	str = ss_out.str();
}

int main(int argc, char *argv[])
{
	vector<string> m_list;

	for (int i = 0; i < N; i++) {
		string s;
		getline(cin, s);
		m_list.push_back(s);
	}

	cout << endl << "old data:" << endl;
	copy(m_list.begin(), m_list.end(), ostream_iterator<string>(cout, "\n"));

	for_each(m_list.begin(), m_list.end(), do_work);

	cout << endl << "new data:" << endl;
	copy(m_list.begin(), m_list.end(), ostream_iterator<string>(cout, "\n"));

	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 15.03.2011 в 20:12.
pproger вне форума Ответить с цитированием
Старый 15.03.2011, 20:46   #3
decorator
 
Регистрация: 14.02.2011
Сообщений: 3
По умолчанию

спасибо.но нужно на с...
decorator вне форума Ответить с цитированием
Старый 15.03.2011, 22:22   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2decorator
ну я всю ману потратил, извиняй
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 17.03.2011, 23:17   #5
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

ну раз максимальное и минимальное ты уже нашел, то остается их переставить
в принципе можно просто где-нибудь отдельно их запомнить (слова всмысле), потом сделать в строке вместо них пустое место и изменить размер этого места чтобы влезло другое слово. черт, наверное непонятно) например
Цитата:
пила пила я пила пила стержень
запоминаем, удаляем (точнее очищаем)
Цитата:
пила пила _ пила пила ________
потом меняем местами размеры
Цитата:
пила пила ________ пила пила _
ну и вставляем запомненные слова
если надо, могу с кодом помочь
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 22.03.2011, 21:00   #6
decorator
 
Регистрация: 14.02.2011
Сообщений: 3
По умолчанию

как я делал...
я записывал в новый файл первую часть (до мин\макс слова)..
потом слово которое нужно поменять... потом середину, потом опять слово и уже потом конец...но видимо где то были ошибки и программа не работала...
decorator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Дбавление новой строки, после строки с подходящими параметрами RailOS Microsoft Office Excel 5 18.08.2010 10:12
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10