IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Раболта со строками, С++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


Здравствуйте.
мне надо написать программу-шифровальщик. С вводом рядка. Прога должна реализировать алгоритм: рядок роазбивается на 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;



функции эти надо еще предописывать? и как разбивается строка на колонки?


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


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

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

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

#include <studio.h>
int getchar();
int putchar();


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


да... и разделение на столбики... это как бы в строку вставляется табуляцыя? но как ее туда вставить...? строка же может быть различной длины..


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Сам алгоритм шафрования "каждый пятый символ" выглядит так :


# 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;
}



А вот с разбиением не ясно. Нужно раюотать с разбитой на куски строкой или рпосто выводить результат в таком виде ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


я думаю просто выводить результат.так проще. чем проще ,тем лучше=)
а можно с комментариями? ато мне не совсем понятно... а надо разобратся...


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
Сам алгоритм шафрования "каждый пятый символ" выглядит так :
Ты это запускал?

Access Violation не боишься? blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Исправил smile.gif)


Я просто через указатели сначала делал) Мм или ты не о том о чем я ?)


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


fatal error C1010 - что значит эта ошибка?


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
fatal error C1010 - что значит эта ошибка?


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Кстати, 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));
...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


Цитата(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 пробела (или табуляцию)...


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата(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));
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


спасибо...
но у мня выводит эту ошибку...

fatal error C1010: unexpected end of file while looking for precompiled header directive
Error executing cl.exe.


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






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


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


Цитата(volvo @ 12.09.2006 16:24) *

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


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

еще раз спасибо. я уже разобралась...
после паскаля немного непривычно в Си и Си++....


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 20.09.2017 10:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"