Помощь - Поиск - Пользователи - Календарь
Полная версия: Раболта со строками
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Jerry
Здравствуйте.
мне надо написать программу-шифровальщик. С вводом рядка. Прога должна реализировать алгоритм: рядок роазбивается на 5 колонок, символы берутся с введеного рядка и записываются на свободное место следнующнй колонки.
Например:
ABC DEF GHK LMN OP
EL AFM BGN CHO DKP // каждый пятый

char arr [100];
puts("Input string:");
gets (arr);
puts("Inputed string");
puts(arr+5);
return 0;



функции эти надо еще предописывать? и как разбивается строка на колонки?
volvo
В результате ты что должна получить? Матрицу? Или просто последовательность символов (каждый 5-ый символ исходной строки)? Не видно этого по приведенному примеру...

Jerry
протсо повледовательность символов...(также разделеных на колонки...)

протсо повледовательность символов...(также разделеных на колонки...)

и функции gets puts описываются так --> ??

#include <studio.h>
int getchar();
int putchar();
Jerry
да... и разделение на столбики... это как бы в строку вставляется табуляцыя? но как ее туда вставить...? строка же может быть различной длины..
klem4
Сам алгоритм шафрования "каждый пятый символ" выглядит так :


# include <stdio.h>
# include <stdlib.h>
# include <strings.h>

char in[100], out[100];

int main (void)
{

gets(in);

int i = 4;
int n = strlen(in);

for (int pos = 0; pos < n; pos++)
{
while (i >= n)
{
i = i - n;
}

out[pos] = in[i];

i = i + 5;
}

puts(out);


return 0;
}



А вот с разбиением не ясно. Нужно раюотать с разбитой на куски строкой или рпосто выводить результат в таком виде ?
Jerry
я думаю просто выводить результат.так проще. чем проще ,тем лучше=)
а можно с комментариями? ато мне не совсем понятно... а надо разобратся...
volvo
Цитата
Сам алгоритм шафрования "каждый пятый символ" выглядит так :
Ты это запускал?

Access Violation не боишься? blink.gif
klem4
Исправил smile.gif)


Я просто через указатели сначала делал) Мм или ты не о том о чем я ?)
Jerry
fatal error C1010 - что значит эта ошибка?
klem4
Цитата
fatal error C1010 - что значит эта ошибка?


Какую строку ты водишь ?
volvo
Кстати, Jerry, если хочешь распечатать это группами по 3, то вот один из вариантов (puts(out) замени на этот код):

...
strrev(out);

i = 0;
while(i + 3 < strlen(out)) {
i += 3;
memmove(&out[i+1], &out[i], strlen(out) - i + 1);
out[i] = ' ';
i++;
}

puts(strrev(out));
...
Jerry
Цитата(klem4 @ 11.09.2006 20:40) *

Какую строку ты водишь ?


это при компиляции выводит...

Цитата(volvo @ 11.09.2006 20:45) *

Кстати, Jerry, если хочешь распечатать это группами по 3, то вот один из вариантов (puts(out) замени на этот код):

Код
...
  strrev(out);

  i = 0;
  while(i + 3 < strlen(out)) {
    i += 3;
    memmove(&out[i+1], &out[i], strlen(out) - i + 1);
    out[i] = ' ';
    i++;
  }

  puts(strrev(out));
...



нет... мне надо чтоб введеная строка, она может быть лубого размера, разбивалась на 5 столбиков... тоесть вставить 4 пробела (или табуляцию)...
volvo
Цитата(Jerry @ 11.09.2006 21:41)
нет... мне надо чтоб введеная строка, она может быть лубого размера, разбивалась на 5 столбиков... тоесть вставить 4 пробела (или табуляцию)...

Ну, тогда заменим число 3 на вычисленную длину каждого из 5 отрезков:

  strrev(out);
int divide = strlen(out) / 5 + (strlen(out)%5 ? 1:0);

i = 0;
while(i + divide < strlen(out)) {
i += divide;
memmove(&out[i+1], &out[i], strlen(out) - i + 1);
out[i] = ' ';
i++;
}

puts(strrev(out));
Jerry
спасибо...
но у мня выводит эту ошибку...

fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.
volvo
Ты бы лучше сказала, ЧЕМ ты компилируешь? Если у тебя полноценная поддержка C++, то задача будет решаться СОВЕРШЕННО по-другому (хотя тогда непонятно, с чего ты начала приводить решение в стиле С)...
Jerry
Цитата(volvo @ 12.09.2006 16:24) *

Ты бы лучше сказала, ЧЕМ ты компилируешь? Если у тебя полноценная поддержка C++, то задача будет решаться СОВЕРШЕННО по-другому (хотя тогда непонятно, с чего ты начала приводить решение в стиле С)...


Microsoft visual studio в консольном режиме... уже запустилась.

еще раз спасибо. я уже разобралась...
после паскаля немного непривычно в Си и Си++....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.