Форум: Форум C++Разное
Новые темы: 00
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Строки. Символьные массивы.
 
 автор: Admexture   (22.10.2008 в 18:02)   письмо автору
 
 

Добрый день.

Есть не большая "скромненькая" задача, скромненькая она для Вас гуру, для новчиков это кошмар :-/

Цель: "Разработать программу для выравнивания строки до заданного размера путем вставки дополнительных пробелов между словами"

Идея: "Определить место первого пробела в массиве S[50]. По средством перезаписи строки в другой символьный массив, изменить строку до нужного размера B[50] путем вставки нееобходмиого количества пробелов вместо одного первого"

Все бы хорошо. Да только вот пробелы не числа, и путем i++ для меня трудно их представить.
Если есть у вас какие-то идеи или "ссылки", отпишитесь пожалуйста.
Все происходит в Borland C++ MS-DOS Version 3.1 - самому страшно... :-/

Спасибо за внимание.

  Ответить  
 
 автор: GeorgeIV   (23.10.2008 в 12:51)   письмо автору
 
   для: Admexture   (22.10.2008 в 18:02)
 

if (S[i] == ' ')

разве такое не прокатывает?

  Ответить  
 
 автор: ADmexture   (26.10.2008 в 09:23)   письмо автору
 
   для: GeorgeIV   (23.10.2008 в 12:51)
 

ммм я наверно не так рассказал. Проблема не в определении первого пробела, а в замене его на большее количество пробелов.

Например есть фраза:

Превед_Медвед

после преобразования должно получиться

Превед ______________________Медвед

где _ - это пробелы, их колчичество определяется не достоющим значениям до 50.
Т.е. У нас длина строки 12, следоватьельно 50 -12=38. Надо как-то вставить эти 38 пробелов вемсто одного первого. Вот в этом и проблемка :-(
Но спасибо что хоть вы откликнулись.

  Ответить  
 
 автор: ddhvvn   (26.10.2008 в 21:01)   письмо автору
 
   для: ADmexture   (26.10.2008 в 09:23)
 

Цикл =)

  Ответить  
 
 автор: StarWorm   (17.11.2008 в 02: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;
}

charfillStr(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;
}


charresizeStr(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;
}

  Ответить  
 
 автор: ADmexture   (22.11.2008 в 18:58)   письмо автору
 
   для: StarWorm   (17.11.2008 в 02:23)
 

аааа мега спасибо!!! Вы - мозГ!!!!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования