Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!

Помош за програма

Vlatko_7

read-only
5 декември 2012
9
0
Задачава ја отепав од мислење и никако да ја решам :/ Ако има некој кој ќе сака да ми помогне?

Кодирање на текст според даден клуч

Програма во која преку мени ќе се одбира дали внесен стринг ќе се кодира или ќе се декодира. Кодирањето и декодирањето да се решат со 2 функции. Клучот на кодирање: Во текстот се користат само букви од азбука и цифри. Секоја буква се заменува со буква која е 3 места после неа во абецедата. Последните 3 букви X, Y, Z се заменуваат респективно со A, B, C. Секоја цифра се заменува со цифра која доаѓа 3 места после неа (0 со 3, 1 со 4 итн). Последните 3 цифри се заменуваат следствено со *,?,!.

Задачата да се тестира со 2 стринга. Прво да се кодира, а потоа кодираната верзија да се декодира.
 

''TcM>>

lurker
6 јануари 2008
961
39
А каде конкретно иначе имаш заглавено?
- тука на форумов колку што имам забележано тешко да ќе се одлучи некој да ти ја пише целосно задачата, но доколку покажеш каде си заглавил и не знаеш како да се одглавиш/продолжиш, верувај ми има доста кои што ќе ти помогнат :)

Доколку не ни знаеш како да почнеш, еве ти мало интро од мене:
бидејќи најверојатно се работи за конзолна апликација, ќе пишеш да се појави текст од која со внес на тастатурата да одбере од опција 1 или 2 (пример), потоа со scanf (или како и да беше) читаш што ќе внесе корисникот, а воедно и соодветно на одбраното да внесе цифра или буква. Потоа со if / else (или switch), ќе реагираш на постапката.
Една опција, постави редица if else услови и опфати ги сите карактери, односно ако буквата е А печати C else if буквата е B печати D итн итн...
или пак поедноставно (со помалце код) направи си функција користејќи го ASCII...
 
Пробај со оваа , имаш пример како буквите се конвертираат во броеви, така мислам полесно ќе го направиш кодирањето, освен за последните три случаи во буквите каде што треба да провериш со IF циклус. Прати код па ако може ќе ти помогниме.
 

Spamalot

lurker
13 јуни 2011
943
308
rabotenje samo so ascii vo slucajov... case ili if e premnoogu rabota :S...
edinstvena zaebancija so ascii moze da ti bidat poslednite 3 slucaevi za x y i z.. za niv mozes da napravis poseben uslov deka ako se raboti za ascii pogolem od 87 da odzemes 28 ili kolku i da bese toa, sum zaboravil ke si proveres
 

Shutter

hello world
29 декември 2010
350
121
Скопје
Немам премногу искуство со програмирање бидејќи тек почнав да го учам, но поради сложеноста на програмата, switch дефинитивно не би дошло во обзир. Мора да има некој друг начин.:silly:
 
Немам премногу искуство со програмирање бидејќи тек почнав да го учам, но поради сложеноста на програмата, switch дефинитивно не би дошло во обзир. Мора да има некој друг начин.:silly:
Ако програмираш во C# има една класа се вика Dictionary каде што секоја вредност можеш да ја заменуваш со друга. Ако не тогаш ќе работиш со ASCII кодови, кои ми се постирани во првото мислење.
 

Vlatko_7

read-only
5 декември 2012
9
0
int i;
char b[200];
string recenica;
cout<<"Vnesete string \n";
getline(cin,recenica,'.');
for(i=0;i<recenica.length();i++)
{
b=recenica+3;
}
cout<<b<<endl;



со овој код кој го имам сега, засега, ги кодира добро. само (space) ми заменува со #, (запирка) со "/" итн итн. а и последните три букви X, Y, Z ми ги заменува со други знаци.
 

''TcM>>

lurker
6 јануари 2008
961
39
затоа и ти рекоа само за тие 3 да искористиш посебни if услови, односно во for циклусот пробај пиши:
Код:
if (recenica[i] == 'X')
  b += 'A';
else if (recenica[i] == 'Y')
  b += 'B';
else if (recenica[i] == 'Z')
  b += 'C';
else  b += recenica[i] + 3;
не знам дали ќе работи, ама пробај си..
(принципот е тој)...
 
int i;
char b[200];
string recenica;
cout<<"Vnesete string \n";
getline(cin,recenica,'.');
for(i=0;i<recenica.length();i++)
{
b=recenica+3;
}
cout<<b<<endl;



со овој код кој го имам сега, засега, ги кодира добро. само (space) ми заменува со #, (запирка) со "/" итн итн. а и последните три букви X, Y, Z ми ги заменува со други знаци.
Епа ќе ставиш еден специјален if циклус пред да додаваш +3 за X,Y,Z да проверува ако ги има овие букви тогаш да ги смени во други не да му додадиш +3 како што правиш исто така и за бројките.
 

Vlatko_7

read-only
5 декември 2012
9
0
ќе пробам сега со ASCII кодови.
со 3 if циклуси.
1 за големи букви
2 за мали букви
3 за цифри

за да ги задржува празните места, запирките, точките, прашалниците, извичниците и сл непроменети :)

пр. if(char(i)>87&&char(i)<=90)
cout<<char(i)-22

вака, или како беше :) ќе пробам :)
 

Vlatko_7

read-only
5 декември 2012
9
0
#include <cstdlib>
#include <iostream>

using namespace std;

void kodiranje(string);
void dekodiranje(string);

int main(int argc, char *argv[])
{
string recenica;
cout<<"Vnesete string \n";
kodiranje(recenica);
dekodiranje(recenica);

system("PAUSE");
return EXIT_SUCCESS;
}

void kodiranje(string recenica)
{
int i;
char b[200];
getline(cin,recenica);
for(i=0;i<recenica.length();i++)
{
b=recenica+3;
}
cout<<b<<endl;
}

void dekodiranje(string recenica)
{
int i;
char b[200];
getline(cin,recenica);
for(i=0;i<recenica.length();i++)
{
b=recenica-3;
}
cout<<b<<endl;
}
еве го овој код кој го имам до сега. сеуште го немам решено проблемот да не ми ги менува празните места, интерпукциските знаци. и последните три букви да ги враќа A, B, C и последните три цифри да ги прави *, ?, !.
ако може помош, ќе ве молам :)
и некој да ми каже зошто морам char b[200] да биде ограничен? :)
 

Vlatko_7

read-only
5 декември 2012
9
0
void kodiranje(string recenica)
{
int i;
char b[9999];
getline(cin,recenica);
for(i=0;i<recenica.length();i++)
{
if(recenica.at(int(i))>=87&&recenica.at(int(i))<=90)
{
b=int(int(i)-23);
}
else
{
b=recenica+3;
}
}
cout<<b<<endl;
}


пробав вака во функцијата за големите X,Y, Z, ама ми дава некои други знаци :( некој да помогне малце со некоја идеја? :)
 

Risto-

read-only
10 септември 2012
2
0
Еве еден псевдокот за кодирање на текст

Код:
char originalna_recenica[max_bukvi], kodirana_recenica[max_bukvi];
 
for i = 0 to strlen(originalna_recenica) do
 
  kodirana_recenica[i] = ((originalna_recenica[i] - 'a' + 3) mod 26) + 'a'
 
endfor

26 - 26 букви во англиската азбука
mod - остатокот од делењето на два броја (мислам дека ова делче ти била суштината на задачата барем во првиот дел на делот на кодирање на буквите)
 

Vlatko_7

read-only
5 декември 2012
9
0
#include <cstdlib>
#include <iostream>

using namespace std;

void kodiranje(string);
void dekodiranje(string);

int main(int argc, char *argv[])
{
string recenica;
cout<<"Vnesete string \n";
kodiranje(recenica);
dekodiranje(recenica);

system("PAUSE");
return EXIT_SUCCESS;
}

void kodiranje(string recenica)
{
int i;
char a[99999];
getline(cin,recenica);
for(i=0;i<recenica.length();i++)
{
if (int(recenica)>=65&&int(recenica)<=87||
int(recenica)>=97&&int(recenica)<=119||
int(recenica)>=48&&int(recenica)<=54)
a=(int(recenica)+3);
else
if (int(recenica)>=88&&int(recenica)<=90||
int(recenica)>=120&&int(recenica)<=122)
a=(int(recenica)-23);
else
if (recenica=='7')
a='*';
else
if (recenica=='8')
a='?';
else
if (recenica=='9')
a='!';
else
a=recenica;
}
cout<<a<<endl;
}

void dekodiranje(string recenica)
{
int i;
char b[99999];
getline(cin,recenica);
for(i=0;i<recenica.length();i++)
{
if (int(recenica)>=68&&int(recenica)<=90||
int(recenica)>=100&&int(recenica)<=122||
int(recenica)>=51&&int(recenica)<=57)
b=(int(recenica)-3);
else
if (int(recenica)>=65&&int(recenica)<=67||
int(recenica)>=97&&int(recenica)<=99)
b=(int(recenica)+23);
else
if (recenica=='*')
b='7';
else
if (recenica=='?')
b='8';
else
if (recenica=='!')
b='9';
else
b=recenica;
}
cout<<b<<endl;
}



РЕШЕНА! :D

само уште некој да ми каже зошто морам кај (char a) и (char b) да ставам и [(број)]
??
 

Vlatko_7

read-only
5 декември 2012
9
0
Да се направи програма во која за внесени позиции (координати) на кралицата, се испишуват сите полиња кои може да ги бие кралицата. Пример(A1, A2 итн)


Некој идеја? Мислам со if и else, ама така многу редови ќе ми испаднат. Некое групирање, нешто? :)
 

razor111

read-only
28 октомври 2012
10
2
па мислам дека имаш доволно туториали на нет.. и нема да е мал кодов и со матрици да се пишува.. потражи сам најубаво е ко ќе сфатиш сам :)
 
членови онлајн
мислења
теми
членови

Последни огласи

IT.mk/market понуда

Бесплатна достава на 3000 производи
На врв Дно