Другие языки программирования и технологии
Задача на строки в Си++
Дана строка. Записать в обратном порядке буквы последнего слова.
a) Определить, что является разделителем слов (скорее всего, любые символы, не попадающие в англ. и русс. алфавит.
б) найти данный разделитель, начиная от конца заданной строки.
ц) переписать с конца строки в стороннюю переменную до разделителя, циклом, изменив последовательность.
где именно загвоздка?
И сразу уточните, достаточно ли просто Си или нужно использовать классы именно Си++
Про цикл:
Ну, позицию мы получаем интерджером (целым числом) .
Там нет ни классов, ни списков - с++ там не нужен.
примерный код
String a;
scanf(a);
//получение строки
int n;
n = len(a), nStart = -1;
for(int i = n; i >=0; i--)
{
if(код i[a] не попадает в рэндж лат. или русс. алфавита) //нету компилятора под рукой
{
nStart = i;
i = -1;
}
else
nStart = i;
}
//Тут, в nStart мы получили наш разрыв.
Далее, повторяем цикл, но с условием
sNewString += i[a];
i гоним до nStart;
Готов помочь с кодом, если что-то не получится. Просто кинуть готовую софтинку, сорьки, считаю не верным.
Длинну строки мы получаем интеджером.
Я бы for брал. Можно вайлом, но смысла не вижу.
б) найти данный разделитель, начиная от конца заданной строки.
ц) переписать с конца строки в стороннюю переменную до разделителя, циклом, изменив последовательность.
где именно загвоздка?
И сразу уточните, достаточно ли просто Си или нужно использовать классы именно Си++
Про цикл:
Ну, позицию мы получаем интерджером (целым числом) .
Там нет ни классов, ни списков - с++ там не нужен.
примерный код
String a;
scanf(a);
//получение строки
int n;
n = len(a), nStart = -1;
for(int i = n; i >=0; i--)
{
if(код i[a] не попадает в рэндж лат. или русс. алфавита) //нету компилятора под рукой
{
nStart = i;
i = -1;
}
else
nStart = i;
}
//Тут, в nStart мы получили наш разрыв.
Далее, повторяем цикл, но с условием
sNewString += i[a];
i гоним до nStart;
Готов помочь с кодом, если что-то не получится. Просто кинуть готовую софтинку, сорьки, считаю не верным.
Длинну строки мы получаем интеджером.
Я бы for брал. Можно вайлом, но смысла не вижу.
В чем вопрос?
Можно так:
Предположим что для разделителя слов стандартно используется символ пробела.
#include <stdio.h>
void reverse_word(char *string)
{
char *lastword,delim=0x20; // 0x20 - Символ пробела
for(lastword=string+strlen(string);(lastword!=string)&&((lastword-1)[0]!=delim);lastword--);
_strrev(lastword);
}
int main(void)
{
char string[0x100];
strcpy(string,"test string reverse");
printf("Original string: %s\r\n",string);
reverse_word(string);
printf("Last word reversed: %s\r\n",string);
return 0;
}
Предположим что для разделителя слов стандартно используется символ пробела.
#include <stdio.h>
void reverse_word(char *string)
{
char *lastword,delim=0x20; // 0x20 - Символ пробела
for(lastword=string+strlen(string);(lastword!=string)&&((lastword-1)[0]!=delim);lastword--);
_strrev(lastword);
}
int main(void)
{
char string[0x100];
strcpy(string,"test string reverse");
printf("Original string: %s\r\n",string);
reverse_word(string);
printf("Last word reversed: %s\r\n",string);
return 0;
}
Похожие вопросы
- Задача Pascal , строки , помогите пожалуйста !!!
- ассемблер. задача. в строке определить позицию первого вхождения букве z
- Работа со строками в Си
- замена слов в строке в СИ
- Удалить знаки пунктуации из строки. Язык Си.
- Задача по массиву в Си++
- Помогите решить задачу по строкам
- Необходимо упорядочить строки двумерного массива, по возрастанию первого эл-та. СИ.
- Помогите с задаче в СИ
- Си работа со строками. Нужна помощь