PDA

View Full Version : Задача по информатика



gorski17
04-15-2013, 15:51
Здравейте, госпожата по информатика ми даде задача а аз въобще незнам как да я реша :( . Ако някой специалист в тази насока може да я реши ще съм безкрайно благодарен :)
Ето я задачата :

Даден е низ S, съдържащ от 1 до 20 думи. Всяка дума се състои от 1 до 6 главни латински букви. Разделител между думите е символът запетая. Да се напише програма, която генерира низ T, съдържащ всички думи на S без повторно срещащите се думи.

Благодаря предварително ако някой се заеме :)

Chacho
04-16-2013, 08:02
На какъв език ти трябва?

gorski17
04-16-2013, 10:16
На какъв език ти трябва?

на C++ език

Chacho
04-16-2013, 11:33
Нямам много време, та това, което остава да направиш, е да ограничиш първия низ до 20 думи и да погледнеш случая, в който накрая може да остане запетая в новия низ (тоест, ако накрая имаш такава, да я разкараш). Също така, по начинът, по който съм я написал сега, програмата предполага, че човекът е въвел низ, в който има само 0-6 буквени думи, разделени със запетаи и ако не е такъв формата, дава грешка.

Ето я и програмата:


#include <iostream>
#include <string>
using namespace std;

string generateString(const string & inputString)
{
string result = "";
string buffer = "";
int i=0;
int count=0;
while(i<(inputString.length()))
{
if(inputString[i]==',')
{
i++;
if(result.find(buffer+',')==string::npos)
{
result+=buffer;
result+=',';
}
buffer="";
count=0;
}
else
{
if(inputString[i]>='A' && inputString[i]<='Z' && count<=6)
{
buffer+=inputString[i];
i++;
count++;
}
else
{
i++;
buffer="";
count=0;
cout<<"Wrong Format";
return buffer;
}
}
}
if(result.find(buffer+',')==string::npos)
result+=buffer;
return result;
}

int main()
{
string input, output;
cout<<"Vuvedete niz: ";
cin>>input;
output = generateString(input);
cout<<"\n"<<output;
cin>>input; //Just to hold the console open
return 0;
}