Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Программирование на c++

Карина Серенкова Ученик (85), закрыт 1 месяц назад
Помогите пожалуйста решить задачку
1.Даны три слова (каждое содержит от 3 до 30 символов). Требуется создать новое слово, включающее в себя по 3 первых символа данных слов. ВАЖНО Для хранения использовать Си-строки. Исходные строки должны остаться неизменными.

Пример:

Ввод; Вывод;
volcano voldemort
demon
orthogon
Лучший ответ
Бывший Геймер Гуру (4184) 2 месяца назад
 #include 
#include

using namespace std;

int main() {
const size_t N = 30;
char s1[N+1], s2[N+1], s3[N+1];
char result[10];
cin.getline(s1, N)
.getline(s2, N)
.getline(s3, N);
strncpy(result, s1, 3);
strncpy(result + strlen(result), s2, 3);
strncpy(result + strlen(result), s3, 3);
cout << result << endl;
return 0;
}

Если введённые строки короче 3 символов, добавляется, сколько есть.
Остальные ответы
D P Мыслитель (9273) 2 месяца назад
Примерно так:
 #include  
#define BUF_SIZE 10
//-------------------------------------------------------------------
// Выводит в буфер buf три байта из src, начиная с текущей позиции pos
void to_buf( char* buf, size_t buf_size, size_t& pos, const char* src );
//-------------------------------------------------------------------

//-------------------------------------------------------------------
const char* words[] =
{
"volcano",
"demon",
"orthogon"
};
//-------------------------------------------------------------------

//-------------------------------------------------------------------
int main()
{
char buf[BUF_SIZE];
size_t pos = 0;
for( auto& w:words )
{
to_buf( buf, BUF_SIZE, pos, w );
}
std::cout << "BUF: " << buf << std::endl;
return 0;
}
//-------------------------------------------------------------------
// Выводит в буфер buf три байта из src, начиная с текущей позиции pos
void to_buf( char* buf, size_t buf_size, size_t& pos, const char* src )
{
size_t idx = pos;
size_t count = 0;
while( idx < (buf_size - 1) && src[count] && count < 3 )
{
buf[idx] = src[count];
idx++;
count++;
}
buf[idx] = '\0';
pos = idx;
}
//-------------------------------------------------------------------

Михаил Просветленный (20360) 2 месяца назад
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
char word1[30], word2[30], word3[30], newWord[9];

cout << "Enter first word: ";
cin >> word1;
cout << "Enter second word: ";
cin >> word2;
cout << "Enter third word: ";
cin >> word3;

strncpy(newWord, word1, 3);
strncpy(newWord + 3, word2, 3);
strncpy(newWord + 6, word3, 3);
newWord[9] = '\0';

cout << "New word: " << newWord << endl;

return 0;

}

/*
Ввод:
volcano
voldemort
demon

Вывод:
New word: volvodemo
*/

В данном коде мы считываем три слова с клавиатуры с помощью функции cin. Затем используем функцию strncpy() для создания нового слова, которая копирует первые 3 символа каждого слова в новое слово.
Карина СеренковаУченик (85) 2 месяца назад
а если пишут " недостаточный размер массива, используется память за ним." что можно сделать?
Михаил Просветленный (20360) Карина Серенкова, "Недостаточный размер массива" означает, что вы пытаетесь записать больше данных в массив, чем он может вместить. Чтобы решить эту проблему, вам нужно увеличить размер массива до необходимого размера или использовать другой способ хранения данных, например, динамический массив или список. "используется память за ним" означает что ваш код записывает данные за пределами выделенной памяти для массива, которое может привести к неожиданному поведению или ошибкам. Чтобы этого избежать, вам нужно проверять индексы массива при доступе к ним и убедиться, что они находятся внутри диапазона размера массива.
Евгений Корнев Мастер (1108) 2 месяца назад
 #include  
#include

using namespace std;

int main() {
char word1[31], word2[31], word3[31];

cout << "Enter the first word (3-30 characters): ";
cin.getline(word1, 31);

cout << "Enter the second word (3-30 characters): ";
cin.getline(word2, 31);

cout << "Enter the third word (3-30 characters): ";
cin.getline(word3, 31);

char newWord[10] = {}; //Empty and initializing the array with 0
strncat(newWord, word1, 3);
strncat(newWord, word2, 3);
strncat(newWord, word3, 3);

cout << "The new word is: " << newWord << endl;

return 0;
}
Похожие вопросы