BG Development


  Reply to this topicStart new topicStart Poll

> Помощ със задача на C++
ultranumb2
Публикувано на: 01-02-2018, 16:28
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 2
Регистриран на: 01.02.18



Здравейте,

за края на семестъра ни дадоха да направим курсова задача на C++.

Условието е : По време на Втората световна война е била измислена машина кодираща съобщенията по следния начин. След съставяне на съобщението, то бива разбито на части по два символа. Между всеки две последователни части се поставя кодова дума - "пе". Така полученото съобщение бива изпратено и съответно разкодирано от съюзниците.

Пример:

"Целият ни взвод е пленен." -> Це-пе-ли-пе-ят-пе- н-пе-и -пе-вз-пе-во-пе-д -пе - е - пе-пл-пе-ен-пе-ен-пе.

Да се разработи програма, която разкодира съобщенията за целите на армията.

Програмата да има следните функции:

- функция, която създава списъка с кодираното изречение.

- функция за изтриване на кодовите думи от списъка.

- функция за извеждане на елементите от списъка.



Ето до къде съм стигнал. Не съм сигурен дали има общо с това което се иска. Най-трудно ми е да разбера как ще стане частта с кодирането на изречението.

Целта ми е след като избера " N " за добавяне на нова дума, да ми излезе цяло изречение кодирано по горния начин.

Много ще съм благодарен ако някой може да ми помогне с нещо. icon_lol.gif


CODE
#include <iostream>
using namespace std;

struct kod {
      char duma[10];
      kod *next, *prev;
};

typedef kod* Point;

Point Head;

void Create (Point &Head)
{
Point      Last, P;
char      ch;

cout<<" Нова дума (Y/N) ?:";
cin >> ch;
while (ch == 'Y' || ch == 'y') {
P = new kod;
cout<<"Въведете дума: ";
cin >> P->duma;
P->next=NULL;
if (Head == NULL)       
{Head = P; P->prev=NULL;}
else       {P->prev=Last;Last->next=P;}
Last = P;
cout<<" Нова дума (Y/N) ?:";
cin >> ch;
}
}
PMEmail Poster
Top
korsarq
Публикувано на: 01-02-2018, 17:17
Quote Post



Име: Мартин Чекуров
Група: Потребител
Ранг: Активен

Мнения: 201
Регистриран на: 30.11.16



Я си форматирай добре кода че така и той трябва да се разкодира


--------------------
It gladdens me to know that Odin prepares for a feast.
Soon I shall be drinking ale from curved horns.
This hero that comes into Valhalla does not lament his death!
I shall not enter Odin's hall with fear.My death comes without apology!
And I welcome the valkyries to summon me home!
PMEmail Poster
Top
ivanov03
Публикувано на: 01-02-2018, 22:51
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 75
Регистриран на: 14.12.12



Здравей!

Най-важното преди да започнеш да решаваш дадена задача е: първо няколко(понякога много) пъти да прочетеш условието на задачата - докато вникнеш и го разбереш!

Това какво трябва да направиш във функцията, която създава списъка с кодираното изречение, е написано в условието на твоята задача: "След съставяне на съобщението, то бива разбито на части по два символа. Между всеки две последователни части се поставя кодова дума - "пе"."

Не съм писал отдавна на С/С++, затова няма да давам код, а ще се опитам да ти помогна с определянето на стъпките, които трябва да изпълниш според мен, за да решиш задачата:

1.Въвежда се изречение от клавиатурата - виждам, че в кода си се насочил към въвеждане на дума, но това не е правилно, защото ако въвеждаш дума по дума ще се получат грешки заради интервалите. Обърни внимание в примера как е дадено: це-ли-ят- н-и -... (Тирето замества пе)
Тоест цялото съобщение(изречение) трябва да се разбие(раздели) на последователни части от два символа - включително и интервалите в него!
2. Въведеното изречение се чете последователно символ по символ и всеки два символа се записват примерно в две променливи а и в
2.1.Когато се прочетат първите два символа - първия символ е записан в променливата а, втория символ е записан в променливата в, сега:
2.1.1. Създаваш свързан списък
2.1.2. Добавяш като първи елемент от списъка стойностите записани в а и в
2.1.3. Добавяш като следващ елемент в свързания списък пе - можеш да ги направиш като две променливи и да ги инициализираш - примерно с='п', d='e'
2.2.След това прочиташ следващите два символа и повтаряш стъпки 2.1.2(но добавяш като следващ елемент в списъка) и 2.1.3.
3. И така докато прочетеш съобщението докрая

Всичко това програмно може да се реализира с цикъл, в който четеш символ по символ съобщението (ако ти е трудно да реализираш четене от клавиатурата символ по символ, може да го направиш с четене от файл - има такива функции в С/С++)
За всеки символ трябва да правиш проверка(с if) дали е четен или не е
- ако не е четен - записваш стойността му в променливата а
- ако е четен - записваш стойността му в променливата в и продължаваш с точки 2.1.2.(след първия символ вече добавяш като следващ елемент в списъка) и 2.1.3.
(Ако съобщението е записано в масив от символи - може да направиш проверката да бъде за нечетен елемент, защото в масива броенето на елементите започва от 0)

(Мисля, че можеш да създадеш свързания списък и в началото, а после в цикъла само да повтаряш стъпки стъпки 2.1.2(но добавяш като следващ елемент в списъка) и 2.1.3.

Когато бях студент много полезни неща за свързан списък и въобще за програмирането намерих в книгата "Програмиране = ++ алгоритми", мисля че я има в интернет свободна за изтегляне, заедно със сорс кода, можеш да я потърсиш!

Това е от мен. Успех!
PM
Top
ultranumb2
Публикувано на: 02-02-2018, 00:57
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 2
Регистриран на: 01.02.18



Много благодаря !
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0