Doua enunturi fara mari dificultati de pe programmr.com,
cu mentiunea ca am folosit pentru initializarea sirurilor de caractere, in
locul "batranei" functii gets(char *str) din biblioteca C,
metoda getline din clasa std::istream.
Aceasta incarca in
spatiul indirectat de char * str un numar specificat, n, de caractere inclusiv
terminatorul de sir. Adica, daca dorim sa impunem citirea a maxim 50 de
caractere, linia corespunzatoare va fi:
cin.getline(str,
51);
Primul
enunt cere scrierea unui cod care converteste fiecare caracter
al unui sir de caractere in echivalent binar, fiind luate in calcul si
eventualele spatii si semne de punctuatie.
O functie de conversie realizeaza 8 impartiri la 2 ale
codului ASCII corespunzator fiercarui caracter transmis ca parametru, pentru a
initializa bitii care codifica respectivul caracter, stiut fiind ca o variabila
de tip char ocupa 8 biti in memorie.
Codul si printscreen-ul:
//Given a string of no more than 50 characters (a
character array),
//you need to write a function that converts character by
character the string
//into its binary equivalent and prints out the bits of
each character.
#include <iostream>
using namespace std;
void Char2Bin(char);
int main()
{
char s[51];
cout
<<"Enter a string of max 50 char and the binary equivalent will be
printed.\n";
cin.getline(s,
51); // cele 51 de caractere citite includ terminatorul de sir
cout
<<"\n";
int length = 0;
while(s[length]) length++;
for(int i = 0;
i < length; i++)
{
Char2Bin(s[i]);
cout
<<" ";
}
return 0;
}
void Char2Bin(char c)
{
int tab[8], i;
for(i = 0; i
< 8; i++)
{
tab[i] = c%2;
c /= 2;
}
i--;
while(i >=
0)
{
cout
<<tab[i];
i--;
}
}
Al
doilea enunt cere ca programul sa transforme eventualele
litere aflate pe pozitii de indecsi pari in sir in litere mici daca sunt litere
mari. Daca indecsii sunt impari iar
pe pozitiile corespunzatoare sunt litere mari, ele vor fi transformate in
litere mici.
#include <iostream>
using namespace std;
void CrazyStr(char *);
int main()
{
char s[500];
cout
<<"\nEnter a string, max 499 characters.\n";
cin.getline(s,
500); // cele 500 de caractere citite includ terminatorul de sir
//gets(s);
CrazyStr(s);
cout
<<"\n" << s;
return 0;
}
void CrazyStr(char * s)
{
unsigned
length = 0;
while(s[length]) length++;
for(int i = 0;
i < length; i++)
{
if(!(i%2))
{
if(s[i]
>= 97 && s[i] <= 122) s[i] -= 32;
}
else if(s[i]
>= 65 && s[i] <= 90) s[i] +=32;
}
}
No comments:
Post a Comment