Orar semigroup #2

Orar semigroup #2

Problema 6 - 3+1 variante de rezolvare

Varianta cu 26 de case-uri

#include<iostream>
using namespace std;
int main()
{char a[100],*p,b[100]={0};
cin.get(a,100);
for(p=a;*p;p++)
    switch(*p)
{case 'A' : strcat(b,"11");break;
case 'B' : strcat(b,"12");break;
case 'C' : strcat(b,"13");break;
case 'D' : strcat(b,"14");break;
case 'E' : strcat(b,"15");break;
case 'F' : strcat(b,"21");break;
case 'G' : strcat(b,"22");break;
case 'H' : strcat(b,"23");break;
case 'I' : strcat(b,"24");break;
case 'J' : strcat(b,"24");break;
case 'K' : strcat(b,"25");break;
case 'L' : strcat(b,"31");break;
case 'M' : strcat(b,"32");break;
case 'N' : strcat(b,"33");break;
case 'O' : strcat(b,"34");break;
case 'P' : strcat(b,"35");break;
case 'Q' : strcat(b,"41");break;
case 'R' : strcat(b,"42");break;
case 'S' : strcat(b,"43");break;
case 'T' : strcat(b,"44");break;
case 'U' : strcat(b,"45");break;
case 'V' : strcat(b,"51");break;
case 'W' : strcat(b,"52");break;
case 'X' : strcat(b,"53");break;
case 'Y' : strcat(b,"54");break;
case 'Z' : strcat(b,"55");break;}
cout<<b;
}
Varianta cu o matrice de 26 de linii
#include<iostream>
using namespace std;
int main()
{char t[26][3]={"11","12","13","14","15","21","22","23","24","24","25","31","32","33","34","35","41","42","43","44","45","51","52","53","54","55"};
char b[100],a[100],*p;
cin>>a;
for(p=a;*p;p++)
    strcat(b,t[*p-'A']);
cout<<b;
}
Varianta mai elegantă(provided by Boss)
#include<iostream>
using namespace std;
int main()
{char l[][10]={"aa","aABCDE","aFGHiK","aLMNOP","aQRSTU","aVWXYZ"},c[100];
int x[100]={0},i,j=0,k1,k2;
cin>>c;
for(i=0;i<strlen(c);i++)
{
    if(strchr("IJ",c[i]))
    {    x[j]=2;
        j++;
        x[j]=4;
        j++;
    }
  
    for(k1=1;k1<=5;k1++)
    {
        for(k2=1;k2<=5;k2++)
        {
            if(c[i]==l[k1][k2])
            {
                x[j]=k1;
                j++;
                x[j]=k2;
                j++;
            }
        }
    }
}
for(i=0;i<j;i++)
    cout<<x[i];
}
Varianta şi mai elegantă(provided by DlMureşan)
#include<iostream>
using namespace std;
int main()
{char a[100],*p;
int i=0,b[100]={0},j;
cin.get(a,100);
strupr(a);
for(p=a;*p;p++)
{    if(*p<='I')
    {    b[i]=(*p-'A')/5+1;i++;
        b[i]=(*p-'A')%5+1;i++;
    }
    if(*p>'I')
    {    b[i]=(*p-'A'-1)/5+1;i++;
        b[i]=(*p-'A'-1)%5+1;i++;
    }
}
for(j=0;j<i;j++)
    cout<<b[j];
}

vineri, 3 decembrie 2010 by DlMuresan
Categories: , , , , , , , | Leave a comment

3 decembrie

Se citeste un cuvant de maxim 20 de litere mici. Sa se afiseze cuvantul dupa eliminarea primei si ultimei vocale

#include<iostream>
using namespace std;
int main()
{int i,j;
char *p,a[100],b[100];
cin>>a;
for(p=a;*p;p++)
    if(strchr("aeiou",*p))
    {    strcpy(p,p+1);
        break;
    }
   
for(p=a+strlen(a)-1;*p;p--)
    if(strchr("aeiou",*p))
    {strcpy(p,p+1);
    break;}
cout<<a;
}
Se citesc de la tastatura n cuvinte de maxim 30 de caractere. Sa se afiseze numarul de cuvinte care contine decat vocale.
#include<iostream>
using namespace std;
int main()
{int j=0,i,n,ok;
char *p,a[30];
cin>>n;
for(i=0;i<n;i++)
{    cin>>a;
ok=1;
for(p=a;*p;p++)
    if(strchr("aeiou",*p)==0)
        ok=0;
if(ok==1)
    j++;}
cout<<endl<<j;
}

by DlMuresan
Categories: , , , | Leave a comment

2 decembrie - funcţiile atoi, atof, itoa

Funcţii de conversie între şiruri de caractere şi numere

1) Fie declaraţia char a[100];
atoi(a); - converteşte şirul de caractere în număr întreg(returnează o valoare întreagă);
ex: char a[]="123";
int nr;
nr=atoi(a)*2;
cout<<nr; // se va afişa 246
Dacă a[]="123mmm" se va afişa 246
Daca a[]="aaa" se va fişa 0

2) Se citesc de la tastatură 2 numere, în două variabile de tip şir de caractere. Să se afişeze suma acestora, dacă lungimea fiecărui număr este de maxim 9 caractere. În cazul în care unul din numere are mai mult de 9 caractere, să se afişeze un mesaj.
#include<iostream>
using namespace std;
int main()
{int s;
char a[100],b[100];
cin>>a;
cin>>b;
if(strlen(a)>9 || strlen(b)>9)
    {cout<<"Mesaj";return 0;}
s=atoi(a)+atoi(b);
cout<<s;
}
3) Fie declaraţia float n; char a[100];
atof(a); - converteşte şirul de caractere la număr real(returnează o valoare de tip real)
ex: floar n; char a[100];
cin>>a; // 123.221abc
n=atof(a);
cout<<n; // se afişează 123.221

4) Fie declaraţia int x, baza; char a[100];
itoa(x,a,baza); - converteşte un întreg la şir de caractere. Conversia se face în baza precizată. Returnează pointer la şir(deci o valoare de tip şir de caractere).
ex: int x=1234;char a[10];
itoa(x,a,10);
cout<<a<<" "<<strlen(a); / se afişează 1235 4
sau
int y=7; char a[100];
itoa(y,a,2);
cout<<a; // se afişează 111
Se citeşte un număr întreg. Să se transforme în baza 2 şi să se afişeze.
#include<iostream>
using namespace std;
int main()
{int n;
char a[100];
cin>>n;
itoa(n,a,2);
cout<<a;
}

5) Primele n numere naturale se lipesc şi formează un număr foarte mare. Pentru n citit de la tastatură, să se afişeze: a) lungimea numărului obţinut; b) cifra sau cifrele din mijloc.
#include<iostream>
using namespace std;
int main()
{char a[100]={0},b[100];
int i,n;
cin>>n;
for(i=1;i<=n;i++)
{   itoa(i,b,10);
    strcat(a,b);
}
cout<<"Numarul foarte mare "<<a<<endl;
cout<<"Lungimea "<<strlen(a)<<endl;
if(strlen(a)%2==0)
cout<<"Mijloc "<<a[strlen(a)/2-1]<<a[strlen(a)/2]<<endl;
else cout<<"Mijloc "<<a[strlen(a)/2];
}
6) Se citeşte de la tastatură o propoziţie. Să se codifice, înlocuind fiecare literă cu numărul liniei şi coloanei corespunzătoare.(Litera A se înlocuieşte cu caractere 11, B cu 12. Şirul MARTI devine codificat 3211424424)

joi, 2 decembrie 2010 by DlMuresan
Categories: , , , | 1 comment