|
|
|
| Добрый день.
Есть не большая "скромненькая" задача, скромненькая она для Вас гуру, для новчиков это кошмар :-/
Цель: "Разработать программу для выравнивания строки до заданного размера путем вставки дополнительных пробелов между словами"
Идея: "Определить место первого пробела в массиве S[50]. По средством перезаписи строки в другой символьный массив, изменить строку до нужного размера B[50] путем вставки нееобходмиого количества пробелов вместо одного первого"
Все бы хорошо. Да только вот пробелы не числа, и путем i++ для меня трудно их представить.
Если есть у вас какие-то идеи или "ссылки", отпишитесь пожалуйста.
Все происходит в Borland C++ MS-DOS Version 3.1 - самому страшно... :-/
Спасибо за внимание. | |
|
|
|
|
|
|
|
для: Admexture
(22.10.2008 в 18:02)
| |
разве такое не прокатывает? | |
|
|
|
|
|
|
|
для: GeorgeIV
(23.10.2008 в 12:51)
| | ммм я наверно не так рассказал. Проблема не в определении первого пробела, а в замене его на большее количество пробелов.
Например есть фраза:
Превед_Медвед
после преобразования должно получиться
Превед ______________________Медвед
где _ - это пробелы, их колчичество определяется не достоющим значениям до 50.
Т.е. У нас длина строки 12, следоватьельно 50 -12=38. Надо как-то вставить эти 38 пробелов вемсто одного первого. Вот в этом и проблемка :-(
Но спасибо что хоть вы откликнулись. | |
|
|
|
|
|
|
|
для: ADmexture
(26.10.2008 в 09:23)
| | Цикл =) | |
|
|
|
|
|
|
|
для: Admexture
(22.10.2008 в 18:02)
| | Написал за вечер... Немного отладил! Посмотри, вроде бы работает...
Расставляет нужное количество пробелов между словами, чтобы получалась требуемая длина строки!
P.S. написана на Visual Studio 2008 C++
#include "stdafx.h"
#include "conio.h"
#include <iostream>
//#include <string>
using namespace std;
int length(char* str)
{
int i=0;
while(str[i++]);
return --i;
}
char* fillStr(char* str, int count)
{
bool flag=false;
char* ptrStr=str;
int ind=0;
while(count>0)
{
if(ptrStr[ind]==NULL)
{
if(flag==false)
{
char* tmpStr=ptrStr;
ptrStr=new char[length(ptrStr)+1];
int j=0;
while(tmpStr[j]!=NULL)
ptrStr[j++]=tmpStr[j];
ptrStr[j]=NULL;
return ptrStr;
}
else
{
ind=0;
flag=false;
}
}
else if(ptrStr[ind]==' ')
{
char* tmpStr=ptrStr;
ptrStr=new char[length(ptrStr)+2];
int j=0,k=0;
while(tmpStr[j]!=NULL)
{
ptrStr[k]=tmpStr[j];
if(j==ind)
{
ptrStr[k]=tmpStr[j];
ptrStr[++k]=tmpStr[j];
}
j++;
k++;
}
ptrStr[k]=NULL;
count--;
while(ptrStr[++ind]==' ');
flag=true;
}
else ind++;
}
return ptrStr;
}
char* resizeStr(char* str,int size)
{
int count=size-length(str);
char* ptrStr=str;
ptrStr=fillStr(ptrStr,count);
return ptrStr;
}
void main ()
{
int maxLength;
char* myStr = new char[255];
cout<<"Enter your sentence: ";
cin.getline(myStr,255);
cout<<"Enter max length of string: ";
cin>>maxLength;
char* resultStr=new char[maxLength];
resultStr=resizeStr(myStr,maxLength);
cout<<myStr<<endl;
cout<<resultStr<<endl;
getch();
delete [] resultStr;
delete [] myStr;
}
|
| |
|
|
|
|
|
|
|
для: StarWorm
(17.11.2008 в 02:23)
| | аааа мега спасибо!!! Вы - мозГ!!!! | |
|
|
|