Подскажите, пожалуйста =)
У меня есть вот такая задача:
В записке слова зашифрованы - каждое из них написано наоборот. Расшифровать сообщение.
У меня пока в голове крутится только то что мне нужно будет посчитать кол-во слов в предложении и каждое слово перевернуть. . Но каким образом пока додуматься не могу. Был вариант, что можно бы было зацепиться как-то за пробелы между словами. . Но может быть можно как-то ещё? Заранее спасибо за советы =)
Другие языки программирования и технологии
Совет по программе на языке си (строки)
#include <stdio.h>
#include <ctype.h>
int main() {
char note[666], *i = note, *b, *e;
int iw = 0;
printf("строка\n? ");
fgets(note, 666, stdin);
printf("\nрезультат\n: ");
for (; *i; ++i) {
if (!iw) {
if (isspace(*i) || ispunct(*i)) {
putchar(*i);
} else {
b = i;
iw = 1;
}
} else if (iw && (isspace(*i) || ispunct(*i))) {
for (e = i; --e >= b;) putchar(*e);
putchar(*i);
iw = 0;
}
}
puts("\nнажмите ввод");
getchar();
}

#include <ctype.h>
int main() {
char note[666], *i = note, *b, *e;
int iw = 0;
printf("строка\n? ");
fgets(note, 666, stdin);
printf("\nрезультат\n: ");
for (; *i; ++i) {
if (!iw) {
if (isspace(*i) || ispunct(*i)) {
putchar(*i);
} else {
b = i;
iw = 1;
}
} else if (iw && (isspace(*i) || ispunct(*i))) {
for (e = i; --e >= b;) putchar(*e);
putchar(*i);
iw = 0;
}
}
puts("\nнажмите ввод");
getchar();
}

А длина слова не наводит на мысли?
Пробелы не важны, тебе надо найти начало и конец слова:
Если начало еще не найдено и символ цифры или буквы, то это начало слова.
Иначе Если еще конец не найден и это последний символ в строке или не последний, но следующий идет не цифра и не буквы, то это конец слова.
Потом когда нашел начало и конец слова, то надо перевернуть и после начало и конец снова допустим присвоить -1 как признак еще не найденного.
А переворачивание у тебя код был вроде, меняешь 1 с последним, 2 с предпоследним и тд от начала до конца слова.
Если начало еще не найдено и символ цифры или буквы, то это начало слова.
Иначе Если еще конец не найден и это последний символ в строке или не последний, но следующий идет не цифра и не буквы, то это конец слова.
Потом когда нашел начало и конец слова, то надо перевернуть и после начало и конец снова допустим присвоить -1 как признак еще не найденного.
А переворачивание у тебя код был вроде, меняешь 1 с последним, 2 с предпоследним и тд от начала до конца слова.
Маха4 Маха4
Может я ошибаюсь, но пробелы то как раз важны, ибо они служат индикатором, ориентиром - то, что это не слово. А как только встречается символ (букв. или цифр. неважно) , то это НАЧАЛО перевернутого слова. Далее, до первого попавшегося пробела (это будет индикатором конца перевернутого слова).
Хы, так если заранее известно, что слова перевернуты, не легче ли просто считывать весь док-т с конца до начала и записывать слова в массив?
Мыслить надо от простого к сложному, задавая себе последовательно вопросы:
1. Правильно ли будет ничего не выдавать, если исходная записка пустая?
2. Если в записке только одно слово, то вроде нужно прочитать его с конца, и это правильный ответ?
3. Если в записке 2 слова, то каждое из них я уже умею дешифровать (см. 2), а какое из двух выводить первым?
4. Если я не знаю, сколько в записке слов, получиться ли у меня выделить и дешифровать первое из них, а потом дешифровать остаток? Или нужно сначала дешифровать последнее?
Основной принцип структурного программирования - разбиение задачи на простые блоки, потом повторяющиеся блоки вынести в функции.
Функцией будет блок "дешифровать и вывести слово" с параметрами (начало_слова, конец_слова) .
Блоками:
- "проверка оставшейся длины записи"
- "выделить следующее слово"
Соединив всё вместе, получим программу.
1. Правильно ли будет ничего не выдавать, если исходная записка пустая?
2. Если в записке только одно слово, то вроде нужно прочитать его с конца, и это правильный ответ?
3. Если в записке 2 слова, то каждое из них я уже умею дешифровать (см. 2), а какое из двух выводить первым?
4. Если я не знаю, сколько в записке слов, получиться ли у меня выделить и дешифровать первое из них, а потом дешифровать остаток? Или нужно сначала дешифровать последнее?
Основной принцип структурного программирования - разбиение задачи на простые блоки, потом повторяющиеся блоки вынести в функции.
Функцией будет блок "дешифровать и вывести слово" с параметрами (начало_слова, конец_слова) .
Блоками:
- "проверка оставшейся длины записи"
- "выделить следующее слово"
Соединив всё вместе, получим программу.
Похожие вопросы
- Помогите, пожалуйста, написать программу на языке Си
- Как настроить Python под Си? Как написать программу на языке Си в Python'е ?
- Вопрос о работе программы на языке СИ. Каким будет ответ?
- Как запретить ввод символов в программе на языке СИ++?
- подскажите как сделать программу на языке СИ(((
- не могу создать программу на языке "си"
- Пожалуйста, ктол может объяснитеб как написать программу на языке Си по этой задаче. С чего начать????
- помогите написать программу на языке Си: В одномерном массиве целых чисел заменить максимальное значение минимальным.
- надо написать код программы на языке си. помогите кто знает как!
- Программа на языке Си