IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> С++,работа с char-строками., C++,версия компилятора 5.0.
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Задание :
Задана запись,состоящая из букв.
Кол-во букв кратное числу N.
Всего в записи М слов.
Длина слова N.
Составить структурированную программу печати текста находяшегося между словами с заданными номерами A и B.

Проблема : даже не знаю как охарактеризовать..При выводе запроса на ввод следующего слова,вылезают слова,введенные ранее ,т.е :
Vvedite kol-vo slov v stroke:3

Vvedite kol-vo byks v slove (Kol-vo bykv doljo bit kratnoe chisly slov) :3

Vvedite 1 slovo iz 3 bykv:asd
sd 2 slovo iz 3 bykv:qwe
sd qwe 3 slovo iz 3 bykv:zxc

Nasha stroka : asd qwe zxc

Не могу понять в чем дело...

Вот код
#include <iostream>
#include <string.h>
#include <stdio.h>


int main ()
{
int m,n;
cout << "Vvedite kol-vo slov v stroke:";
cin >> m;
cout << "\n";
do
{
cout <<"Vvedite kol-vo byks v slove (Kol-vo bykv doljo bit kratnoe chisly slov:";
cin >> n;
cout <<"\n";
}while ((m%n)!=0);

char *str = new char[(m*n)-(n+1)];
str="";
char *word = new char[n];
cin.get();
for (int i=0;i<n;i++)
{
do
{
flush(cout);
cout << "Vvedite " << i+1 << " slovo iz " << n << " bykv:";
cin >> word;
if ((strlen(word))>3)
{
cout << "\n Slovo doljno sostoyat iz " << n << " bykv!!!\n";
cout << "Povtorite vvod!\n";
}
} while ((strlen(word))!=3);
if (i==n-1)
{
strcat(str,word);
}
else
{
strcat(word," ");
strcat(str,word);
}
}
cout << "\nNasha stroka : " << str;

cin.get();
cin.get();
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






smile.gif
  char *str = new char[(m*n)-(n+1)];
Почему "минус"? Тебе надо M*N символов, (M - 1) пробелов между ними и один символ для завершающего нуля... Я бы написал:
  char *str = new char[m*n + m];

 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 23:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name