C/C++
Программирование на C++. Библиотека stdio.h
Дана последовательность символов, среди которых есть "двоеточие". Получить все символы, расположенные между первым и вторым двоеточием. Если второго двоеточия нет, то получить все символы, расположенные после единственного имеющегося двоеточия. Требование к выполнению: не пользоваться функциями обработки строк (кто знает) и избегать массивов.
#include <stdlib.h>
#include <stdio.h>
void output(const char* msg, const char* str, char ch) {
int i = 0;
printf("%8s%s >>> ", msg, str);
while (str[i] && str[i] != ch) ++i;
if (!str[i]) printf("not found!");
else if (!str[++i]) printf("not found!");
else while (str[i] && str[i] != ch) putchar(str[i++]);
puts("\n");
}
int main(void) {
const char* first = "abc:defghijk:lmnop";
const char* second = "abcde:fghijklmnopq";
const char* third = "abcdefghijklmnopq:";
const char* fourth = "abcdefghijklmnopqr";
output("first: ", first, ':');
output("second: ", second, ':');
output("third: ", third, ':');
output("fourth: ", fourth, ':');
system("pause > nul");
return 0;
}
P.S. Думаю, что так прокатит!
#include <stdio.h>
void output(const char* msg, const char* str, char ch) {
int i = 0;
printf("%8s%s >>> ", msg, str);
while (str[i] && str[i] != ch) ++i;
if (!str[i]) printf("not found!");
else if (!str[++i]) printf("not found!");
else while (str[i] && str[i] != ch) putchar(str[i++]);
puts("\n");
}
int main(void) {
const char* first = "abc:defghijk:lmnop";
const char* second = "abcde:fghijklmnopq";
const char* third = "abcdefghijklmnopq:";
const char* fourth = "abcdefghijklmnopqr";
output("first: ", first, ':');
output("second: ", second, ':');
output("third: ", third, ':');
output("fourth: ", fourth, ':');
system("pause > nul");
return 0;
}
P.S. Думаю, что так прокатит!
Виктор Блаженов
Я уверен, что Ваш ответ правильный и ни сколько в нём не сомневаюсь, но к сожалению мы по теме обработки символьных данных, прошли только операторы char, getchar, putchar, если вам не сложно, могли бы Вы сделать более лёгкий вариант, как на примере (на фото). Условие задачи с примера на фото: поменять все точки на многоточие.

Последовательность символов — это строка, которая содержит символы. В ней может быть два двоеточия, а может не быть. Так же в ней могут быть и другие разделители. Если нет второго двоеточий, то в строке должны быть все символы между первым двоеточиями и единственным двоеточием, которое там есть.
Виктор Блаженов
Могли бы вы написать как Вы представляете код на C/C++ обращая внимание на требования к выполнению...
int GetNewString(char* messin,int len1,char* messout,int len2)
{
char* adr = messin;
int yes = 0;
int index = 0;
for(int i=0;i<len1;i++)
{
if (*adr == ':')
{
if (yes) return index;
else
{
yes = 1;
adr++;
continue;
}
}
if(yes == 1)
{
if(index < len2)
{
messout[index] = *adr;
index ++;
}
}
adr++;
}
return index;
}
{
char* adr = messin;
int yes = 0;
int index = 0;
for(int i=0;i<len1;i++)
{
if (*adr == ':')
{
if (yes) return index;
else
{
yes = 1;
adr++;
continue;
}
}
if(yes == 1)
{
if(index < len2)
{
messout[index] = *adr;
index ++;
}
}
adr++;
}
return index;
}
Похожие вопросы
- C++, библиотека math.h
- Программирование на C++
- Программирование на C++
- C++ библиотека fstream. при использовании Кириллицы изменяется кодировка в создаваемом файле..
- Помоги написать лабу по программированию на c++
- Помогите решить задачу по программированию на C++
- Программирование на C. Помогите бездарю
- На каком языке программирования написан C (Си)?
- Программирование на c++
- Программирование на C++