Professional Documents
Culture Documents
2010
Аудиториски вежби 6
Текстуални низи - стрингови
1
25.10.2010
Декларирање на променливи
double r; (или float r;)
char c;
Низа од променливи:
ако сакаме да ги запаметиме броевите кои ќе
бидат извлечени во едно бинго-извлекување, а
воопшто и не знаеме колку може да има (секоја
недела е различно)
наместо да смислуваме 30, 40 или 10000
различни имиња на променливи, само
пишуваме:
int bingo[10000];
2
25.10.2010
Што е стринг?
3
25.10.2010
4
25.10.2010
Визуелно претставување на
зафатената меморија
Со извршување на
char ime[20]
во меморијата се креира следниот
мемориски простор за стрингот ime:
М а k е d o n k a 0
5
25.10.2010
Нетерминиран стринг
#include <iostream>
using namespace std;
void main ()
{
char str[100] ;
str[0]='S';
str[1]='k';
str[2]='o';
str[3]='p';
str[4]='j';
str[5]='e';
cout << str;
}
Skopje╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠└
6
25.10.2010
#include <iostream>
using namespace std;
void main()
{
char ime[20];
cin >> ime;
cout << "imeto e: " << ime;
cin >> ime;
cout << "Vtoroto ime e: " << ime;
}
Ana-Marija
imeto e: Ana-Marija
Ana Marija
Vtoroto ime e: Ana
7
25.10.2010
#include <iostream>
using namespace std;
void main()
{
char ime[20];
cin.getline(ime, 20);
cout << "imeto e: " << ime << endl;
}
Аna Marija Trajkova
imeto e:
Аna Marija Trajkova
8
25.10.2010
void main()
{
char ime[20];
int i=0;
cin.getline(ime,20);
while (ime[i]!=0)
{
cout << ime[i];
i++;
}
} Аna Marija Trajkova
void main()
{
char ime[20];
int i=2;
cin.getline(ime,20);
while (i<7)
{
cout << ime[i];
i++;
}
} Kazablanka
zabla
9
25.10.2010
Должина на стринг
void main()
{
char ime[20];
int i=0;
cin.getline(ime,20);
while (ime[i]!=0) i++;
cout << i;
}
Аna Trajkova
12
10
25.10.2010
Функција strlen()
void main()
{
char ime[20];
int i=0;
cin.getline(ime,20);
while (ime[i]!=0) i++;
cout << "Dolzhinata e: " << i <<"\n";
cout << "Dolzhinata e i: " << strlen(ime);
}
Аna Trajkova
Dolzhinata e: 12
Dolzhinata e i: 12
11
25.10.2010
Пример 1
void main()
{
char ime[20];
int i=0;
cin.getline(ime,20);
while (ime[i]!=0)
{
ime[i]=toupper(ime[i]);
i++;
}
cout << ime;
}
rabota
RABOTA
Функција toupper() !
12
25.10.2010
Пример 2
void main()
{
char ime[20];
cin.getline(ime,20);
ime[1]=toupper(ime[1]);
cout << ime;
}
marija
???????
Пример 3
void main()
{
char ime[20];
int i=0;
cin.getline(ime,20);
while (ime[i]!=0)
{
if (islower(ime[i]))
ime[i]=toupper(ime[i]);
else
ime[i]=tolower(ime[i]);
i++;
Ratko%
}
rATKO%
cout << ime;
}
13
25.10.2010
Пример 4
void main()
{
char ime[20];
char prezime[20];
char celo_ime[40];
cout << "Vnesi go tvoeto ime:" << endl;
cin.getline(ime,20);
if (strcmp(ime,"Aleksandar")==0)
cout << "Ti se vikash isto kako mene." << endl;
cout << "Vnesi go tvoeto prezime:" << endl;
cin.getline(prezime,20);
if (strcmp(prezime,"Ilievski")==0)
cout <<"Ti se prezivash kako i jas." <<endl;
14
25.10.2010
Пример 4 (прод.)
strcpy(celo_ime, ime);
strcat(celo_ime," ");
strcat(celo_ime, prezime);
15
25.10.2010
Задача 1
Да се провери дали еден збор е
палиндром?
Решение
void main()
{
char zbor[40];
bool tocno;
int n,
i=0;
cout << "Vnesete go zborot:";
cin >> zbor;
Vnesete go
n=strlen(zbor); zborot:abrakadabra
zborot:anasana
do Zborot ne e
e palindrom
{ palindrom
tocno=(zbor[i]==zbor[n-i-1]);
i++;
} while((tocno)&&(i<=(n/2)));
if (tocno)
cout<<"Zborot e palindrom"<<endl;
else
cout<<"Zborot ne e palindrom"<<endl;
}
16
25.10.2010
Задача 2
Се внесува една SMS порака збор по збор
Решение
int main()
{
char zbor[30];
char poraka[161];
int dolzhina;
strcpy(poraka,"");
cout << "Vnesuvaj zbor po zbor.“;
cout << " Za kraj vnesi string so edno prazno mesto
\n";
cin.getline(zbor,30);
17
25.10.2010
Решение (прод.)
dolzhina=0;
while((strcmp(zbor,” ")!=0) &&(dolzhina<=160))
{
dolzhina+=strlen(zbor)+1;
strcat(poraka," ");
strcat(poraka, zbor);
cin.getline(zbor,30);
}
if (strlen(poraka)>160)
cout << "Porakata ne mozhe da se prati." <<
endl;
else
cout << poraka ;
return 0;
}
Задача 3
Дадена е една SMS порака која се
состои само од букви, од празни места
и точки
За секоја буква знаеме колку пати треба
да кликнеме на тастатурата на
мобилниот телефон за да ја добиеме
Да се пресмета колку кликања се
потребни за да се истипка на мобилен
телефон дадената порака
18
25.10.2010
Решение
void main()
{
char poraka[161];
int klik=0;
int i=0;
19
25.10.2010
case 'C':
case 'F':
case 'I':
case 'L':
Vnesi ja porakata.
case 'O':
Mozhesh da koristish
case 'R':
golemi bukvi, prazno
case 'V':
mesto i tochka.
case 'Y':
ANA I MARKO SE
klik+=3;
DRUGARI.
break;
Potrebni se 42
case 'S':
klikanja za da se
case 'Z':
ispishe porakata
klik+=4;
break;
}
i++;
}
cout << "Potrebni se " ;
cout << klik <<”klikanja”;
cout <<”za da se ispishe porakata”;
cout << endl;
}
20
25.10.2010
Задача 4
Во царството на МОН имале еден чуден
јазик
Решение
void main()
{
char zbor[30];
int i;
cout << "Vnesi eden zbor od nashiot jazik";
cout << endl;
cin.getline(zbor,30);
21
25.10.2010
Задача 5
Некој професор дури предавал многу
често употребувал даден збор кој се
случувало да го каже и по неколку пати
во една реченица
За даден текст (не подолг од 500 букви) и
даден збор, да се најде колку пати тој
збор се појавува во текстот
Ако тој збор се случи да се содржи и во
некој друг збор, треба да се изброи и
тоа појавување
Решение
void main()
{
char tekst[500];
char zbor[30];
int i,j, dolzhina, pojavuvanja=0;
cout << "Vnesi go tekstot shto go kazhal profesorot“;
cout << endl;
cin.getline(tekst,500);
cout << "Vnesi go zborot shto se povtoruva"<< endl;
cin.getline(zbor,30);
for(i=0; i<(strlen(tekst)-strlen(zbor)+1); i++)
{
dolzhina=0;
for (j=0; j<strlen(zbor); j++)
if ( tekst[i+j] == zbor[j] ) dolzhina++;
if ( dolzhina == strlen(zbor) ) pojavuvanja++;
}
cout<<"Zborot se pojavuva "<<pojavuvanja<<" pati.”<<endl;
}
22
25.10.2010
Проблем!
Имаме текст “na bababa taraba.” и го
бараме зборот “baba”
Решението следи
Решение
void main()
{
char tekst[300];
char zbor[30];
int i,j, dolzhina, pojavuvanja=0;
23
25.10.2010
Продолжува решението
if (dolzhina==strlen(zbor))
{
pojavuvanja++;
i+=strlen(zbor)-1;
}
}
cout << "Zborot se pojavuva ";
cout << pojavuvanja<< "pati." <<endl;
}
Домашни задачи
За даден стринг, сите појавувања на буквата
‘b’ да се заменат со ‘p’
Пример,
за даден влез Ljubcho, да се даде на излез
Ljupcho
24
25.10.2010
Пример
Влез Излез
Toj
Si Тoj si kupi 10 kilogrami.
kupI
10
kiloGRAMI
25
25.10.2010
Пример
Влез Излез
26