1. Reč je lepa ako se u njoj naizmenično smenjuju samoglasnici (velika i mala slova a, e, i,
o,u) i suglasnici (ostala slova), pri čemu je svejedno da li reč počinje samoglasnikom ili
suglasnikom. Napiši program koji određuje dužinu najduže lepe reči u ulaznom fajlu (unos
sa konzole).
Preporuka napisati metod za proveru da li je slovo samoglasnik.
static bool samoglasnik(char ch)
{
if(ch=='a'|| ch=='A' || ch=='e'|| ch=='E'|| ch=='i'|| ch=='I'||
ch=='o'|| ch=='O'|| ch=='u'|| ch=='U')
return true;
else return false;
}
Prvo resenje sa prethodnim
static void Main(string[] args)
{
char ch, pre = ' ';
int x, d = 0, max = 0;
bool lepaRec=true;
while ((x = Console.Read()) != -1)
{
ch = (char)x;
if (!Char.IsWhiteSpace(ch))
{
if (Char.IsLetter(ch))
{
if(char.IsWhiteSpace(pre))
{d=1;lepaRec=true;} // pocinje rec
else if(samoglasnik(ch)!=samoglasnik(pre))
d++;
else lepaRec=false;
}
else
lepaRec=false;
}
else
{
if(lepaRec && d>max) max=d;
lepaRec=false;
}
pre=ch;
}
if(lepaRec && d>max) max=d;
Console.WriteLine(max);
}
}
Drugo resenje sa prethodnim i stanjem
state=0 van reci,
state=1 u lepoj reci,
state=2 u reci koja nije lepa
static void Main(string[] args)
{
char ch, pre = ' ';
int x, d = 0, max = 0;
int state = 0;
while ((x = Console.Read()) != -1)
{
ch = (char)x;
switch (state)
{
case 0:
if (Char.IsLetter(ch)) { state = 1; d = 1; }
else if (!char.IsWhiteSpace(ch)) state = 2;
break;
case 1:
if (char.IsWhiteSpace(ch))
{
if (d > max) max = d;
state = 0;
}
else
if (char.IsLetter(ch))
if (samoglasnik(ch) != samoglasnik(pre)) d++;
else state = 2;
else state = 2;
break;
case 2:
if (char.IsWhiteSpace(ch)) state = 0;
break;
}
pre=ch;
}
if(state==1 && d>max) max=d;
Console.WriteLine(max);
}
2. Na osnovu sadržaja fajla pismo.txt kreirati novi fajl u kojem sva velika slova zamenimo
malim, a dekadne cifre zamenimo zvezdicama.
static void Main(string[] args)
{ //System.IO.StreamReader sr = new System.IO.StreamReader("pismo.txt");
StreamReader sr = new StreamReader("pismo.txt");
StreamWriter sw = new StreamWriter("novoPismo.txt");
while (!sr.EndOfStream)
{
char ch = (char)sr.Read();
if (ch >= 'A' && ch <= 'Z')
ch = (char)(ch - 'A' + 'a');
else if (ch >= '0' && ch <= '9')
ch = '*';
sw.Write(ch);
}
sr.Close();
sw.Close();
}
3. Poverljiv tekst se unosi iz fajla. Tekst se sastoji od šifrovanih reči i običnih reči. Reči u
tekstu su odvojene po blanko znacima i nema prenosa reči u nov red. Šifrovana reč
ima sledeći format: počinje velikim slovom, zatim ide znak @, niz cifara proizvoljne
dužine i na kraju se nalazi veliko slovo. Obične reči su sve ostale reči. Napisati glavni
program koji čita poverljiv tekst iz fajla proba.txt i prikazuej procenat šifrovanih reči u
učitanom poverljivom tekstu.
Primer: Ulaz
Rezultat
E@1234E to small@gmail.com
40%
N@100K dollars
D@K jeste sifrovana
D@231KK nije sifrovana
static void Main(string[] args)
{
StreamReader sr = new StreamReader("proba.txt");
int brSifrovanih = 0, brUkupno = 0;
char ch;
int stanje = 0;
while (!sr.EndOfStream)
{
ch = (char)sr.Read();
switch (stanje)
{
case 0:
if (!char.IsWhiteSpace(ch))
{
brUkupno++;
if (ch >= 'A' && ch <= 'Z') stanje = 1;
else stanje = 4;
}
break;
case 1:
if (ch == '@')
stanje = 2;
else if (char.IsWhiteSpace(ch)) stanje = 0;
else stanje = 4;
break;
case 2:
if (ch >= 'A' && ch <= 'Z') stanje = 3;
else if (char.IsWhiteSpace(ch)) stanje = 0;
else if (!Char.IsDigit(ch)) stanje = 4;
break;
case 3:
if (char.IsWhiteSpace(ch)) { stanje = 0; brSifrovanih++; }
else stanje = 4;
break;
default: if (char.IsWhiteSpace(ch)) stanje = 0;
break;
}
}
if (stanje == 3) brSifrovanih++;
sr.Close();
Console.WriteLine(brUkupno + " " + brSifrovanih);
Console.WriteLine(100.0 * brSifrovanih / brUkupno + "%");
// Console.WriteLine(brSifrovanih / brUkupno*100);
Console.WriteLine((double)brSifrovanih / brUkupno*100);
}
4. Komentar je deo teksta koji počinje sa /* i završava sa */. Napisati
program kojim se prepisuje izostavljajući komentare tekstualna
datoteke ulaz.txt u datoteku izlaz.txt.
Resenje sa stanjima
0
1
𝑠𝑡𝑎𝑗𝑒 {
2
3
𝑣𝑎𝑛 𝑘𝑜𝑚𝑒𝑛𝑡𝑎𝑟𝑎
𝑣𝑎𝑛 𝑘𝑜𝑚𝑒𝑛𝑡𝑎𝑟𝑎 𝑝𝑟𝑜𝑐𝑖𝑡𝑎𝑛𝑎 𝑗𝑒 /
𝑢 𝑘𝑜𝑚𝑒𝑛𝑡𝑎𝑟𝑢 𝑠𝑚𝑜
𝑢 𝑘𝑜𝑚𝑒𝑛𝑡𝑎𝑟𝑢 𝑠𝑚𝑜 𝑎 𝑝𝑟𝑜𝑐𝑖𝑡𝑎𝑛𝑎 𝑗𝑒 ∗
static void Main(string[] args)
{
StreamReader sr = new StreamReader("ulaz.txt");
StreamWriter sw = new StreamWriter("izlaz.txt");
int stanje = 0;
while (!sr.EndOfStream)
{
char ch = (char)sr.Read();
switch (stanje)
{
case 0:
if (ch == '/') stanje = 1;
else sw.Write(ch);
break;
case 1:
if (ch == '*') stanje = 2;
else
{
sw.Write('/');// preskocena /
if (ch != '/') { sw.Write(ch); stanje = 0; }
}
break;
case 2:
if (ch == '*') stanje = 3;
break;
case 3:
if (ch == '/') stanje = 0;
else if (ch != '*') stanje = 2;
break;
}
}
if (stanje == 1) sw.Write('/');
sr.Close();
sw.Close();
}
Resenje sa logickom promenljivom I prethodnim
static void Main(string[] args)
{
StreamReader sr = new StreamReader("proba.txt");
StreamWriter sw = new StreamWriter("proba1.txt");
char pre = ' ';
bool komentar = false;
while (!sr.EndOfStream)
{
char ch = (char)sr.Read();
if (!komentar)
{
if (ch == '*' && pre == '/')
{ ch = '.'; komentar = true; } /// da bi izbegli /*/
else
{
if (pre == '/') sw.Write('/');
if (ch != '/') sw.Write(ch);
}
}
else
{
if (pre == '*' && ch == '/')
{ komentar = false; ch = '.'; }
}
pre = ch;
}
if (pre == '/') sw.Write(pre);
sr.Close();
sw.Close();
}
///
da bi izbegli */*