joi, 28 noiembrie 2013

Cate cuvinte sunt intr-un text

  • Se da un text s de maxim 100 caractere sa se afiseze cate cuvinte contine respectivul text.
Exemplu:
Text citit: Ana are mere
Se va afisa: 3.
Rezolvare
----------------------------------------------------
    char s[100],sep[]=" ,.?!;",*cuv;
    int nr;
    cin.get(s,100);
    nr=0;
    cuv=strtok(s,sep);
    while(cuv)
    {
        nr++;
        cuv=strtok(NULL,sep);
    }
    cout << "In text sunt: " <<nr << " cuvinte." << endl;

----------------------------------------------------
Descarca problema - DOWNLOAD

Se citeste de la tastatura un sir s sa se formeze un al doilea sir care sa contina primele litere din fiecare cuvant

  • Se citeste de la tastatura un text de maxim 100 caractere sa se formeze un al doilea sir alcatuit din primele litere ale fiecarui cuvant existent in primul sir.
Exemplu:
Text citit: "Ora de informatica"
Se va afisa: "Odi"


Rezolvare
----------------------------------------------------------
    char s[100],s2[50]="",*cuv,sep[]=" ,.!?";
    int k,n;
    cin.get(s,100);
    k=0;
    cuv=strtok(s,sep);
    while(cuv)
    {
        s2[k]=cuv[0]; //Se memoreaza pe pozitia k in sirul s2 prima litera a cuvantului.
        k++; // Se creste pozitia k, k-ul s-a folosit pt a sti pozitia pe care trebuie stocata litera in sirul s2.
        cuv=strtok(NULL,sep); //Se cauta urmatorul cuvant
    }
    s2[k+1]='\0'; //Se adauga caracterul final pe pozitia k+1.
    cout << s2 << endl; //Se afiseaza sirul.

----------------------------------------------------------
Descarca problema - DOWNLOAD

miercuri, 27 noiembrie 2013

Numarul de vocale dintr-un text

  • Se citeste de la tastatura un text/cuvant, sa se afiseze numarul vocalelor aflate in text/cuvant.
Exemplu:
Cuvant/Text citit: Informatica
Se va afisa:  5.


Rezolvare

............................
int main()
{
    char s[100], voc[]="aeiou";
    int nr,i,n;
    nr=0; //Initializam numarul vocalelor existente in text cu 0.
    cin.get(s,100); //Citirea textului.
   n = strlen(s); //Aflarea numarului de caractere al textului/cuvantului.
   for(i=0;i<=n-1;i++) //Parcurgerea textului de la primul caracter pana la penultimul. Ultimul este caracterul final "\0"!
   {
       if(strchr(voc,s[i])!=NULL) //Se cauta caracterul s[i] in sirul care contine toate vocalele (voc).
        nr++; //Daca caracterul s[i] este o vocala atunci se creste variabila nr care reprezinta numarul   de aparitii ale vocalelor in text.
   }
   cout<<nr;
............................

Descarca problema - DOWNLOAD

Despartirea unui text in cuvinte folosind functia STRTOK

  • Se citeste un text de la tastatura sa se afiseze cuvintele textului separat pe cate o linie.
Exemplu:
Text citit: Ana are mere
Se va afisa:
Ana
are
mere
 Rezolvare
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    char s[100], sep[]=" ,.!?;", *cuv;
    cin.get(s,100);
    cuv=strtok(s,sep); //Functia "gaseste" primul cuvant sa il memoreaza in pointerul cuv.
    while(cuv)
    {

        cout<<cuv<<endl; //Afisarea cuvantului pe ecran.
        cuv=strtok(NULL,sep); //Cautarea urmatorului cuvant in zona tampon si memorarea lui in cuv.
    }

    return 0;
}

Functia STRTOK gaseste cuvintele dintr-un sir folosindu-se de separatorii memorati intr-un sir separat.
Structura: strtok(sir_text,sir_separatori)
!In urma executarii functiei STRTOK sirul care contine textul va deveni identic cu rezultatul functiei, restul sirului initial urmand sa se retina intr-o zona de memorie numita zona tampon (BUFFER). 
Descarca problema - DOWNLOAD .

luni, 25 noiembrie 2013

STRING - Declararea,Citirea unui sir de caractere. Cum se citeste un sir de caractere.

Declarare:
char nume[nr. caractere];
Exemplu:
  1. char s[20]; - sir cu maxim 20 caractere.
  2. char s; - doar un caracter ex: "a" ,"b", etc.
  3. char s[]; - sir cu maxim 256 caractere.
Citirea unui sir de caractere:

Folosind fluxul de intrare: cin>>s; Citeste sirul s pana la intalnirea unui caracter alb (spatiu).

Folosind functia cin.get: cin.get(numesir,nrcaracteremaxim,caracterfinal): cin.get(s,100,!); EX: Functia va citi sirul s de maxim 100 de caractere pana la intalnirea caracterului: "!".

Citirea caracter cu caracter: 
for(i=0;i<=n-1;i++)
{
cin>>s[i];
}
s[n]="\0"; - La acest tip de citire se adauga caracterul "\0" pe pozitia finala care "termina" sirul.

Sa se afiseze suma elementelor din diag. principala a unei matrici.

  • Se citeste o matrice de la tastatura sa se afiseze suma elementelor din diagonala principala a matricii.
EXEMPLU:
n = 3
1   2   3
4   5   6
7   8   9
S=1+5+9=15.
REZOLVARE

#include <iostream>

using namespace std;

int main()
{
    int a[20][20],i,j,s,n;
    cout<<"N=";
    cin>>n;
    for(i=1;i<=n;i++) //Citire matrice.
    {
        for(j=1;j<=n;j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
    }

s=0; //Initializare suma cu 0.
    for(i=1;i<=n;i++)
    {

        for(j=1;j<=n;j++)
        {
            if(i==j) //Se verifica daca elementul face parte din diag. principala.
            s=s+a[i][j];//Daca face parte din diag. principala se adauga la suma.
        }

    }
    cout<<"Suma elementelor din diag principala: "<<s;

    return 0;
}
*Problema disponibila pt download in "MATRICI-PACK1".

Sa se construiasca o matrice patratica avand pe coloanele impare elementul 0 iar pe cele pare elementul 1

  • Sa se construiasca o matrice patratica avand pe coloanele pare elementul 1 iar pe cele impare elementul 0.
Exemplu:
n=4.
Se va afisa matricea:
0   1   0   1
0   1   0   1
0   1   0   1
0   1   0   1
REZOLVARE
#include <iostream>

using namespace std;

int main()
{
    int a[20][20],n,i,j;
    cout<<"N=";//Se citeste n (nr. linii si de coloane)
    cin>>n;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(j%2!=0) //Se verifica daca coloana este impara
            a[i][j]=0; //Daca coloana este impara i se atribuie valoarea 0 elementului.
            if(j%2==0)//Se verifica daca coloana este para
            a[i][j]=1;//Daca coloana este para i se atribuie valoarea 1 elementului.
        }
    }
        for(i=1;i<=n;i++) //Afisarea matricii
    {
        for(j=1;j<=n;j++)
        {
           cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }

    return 0;
}
*Problema disponibila pt download in "MATRICI-PACK1".

Se da o matrice patratica sa se afiseze elementul minim al fiecarei linii.

  • Se da o matrice patratica a cu n linii si n coloane. Sa se determine elementul minim de pe fiecare linie.
Exemplu:
Pentru matricea:
1   2   3
4   5   6
7   8   9
Se vor afisa urmatoarele valori: 1,4,7.
REZOLVARE
#include <iostream>

using namespace std;

int main()
{
    int a[20][20],i,j,min,n;
    cout<<"N="; //Citirea nr. de linii si de coloane.
    cin>>n; 
    for(i=1;i<=n;i++) //Citirea matricii.
    {
        for(j=1;j<=n;j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
    }


    for(i=1;i<=n;i++) //Parcurgerea matricii.
    {
        min=999999; //Se initializeaza minimul cu o valoare foarte mare.
        for(j=1;j<=n;j++)
        {
            if(a[i][j]<min) //Compararea elementelor matricii.
            min=a[i][j];
        }
        cout<<min<<endl; //Afisarea elementelor minime.
    }

    return 0;
}
*Problema disponibila pt download in "MATRICI-PACK1".

Se citeste un vector dintr-un fisier, sa se verifice daca este binar.

  • Se da un fisier "date.in" care contine pe prima linie nr. elementelor din vector iar pe urmatoarele n linii valorile elementelor vectorului, sa se verifice daca sirul este binar.
Sir binar = Sir alcatuit doar in elementele 0 si 1. Exemplu: 1 0 0 1 0 1 1.

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

int main()
{
    ifstream f("date.in");
    int i,n,j,ok;
    f>>n; //Citirea din fisier a lui n.
    ok=1; //Se considera ca vectorul este binar.
    int v[n+1];
    for(i=1;i<=n;i++)
    {
    f>>v[i];
    if ((v[i]>1) || v[i]<0) //Se verifica daca elementul v[i] este diferit de 0,1 in acest caz "ok" devine 0 iar sirul nu se mai considera binar.
    ok=0;
    }
    if(ok==1) // In caz ca ok este 1 (sirul este binar) se afiseaza un mesaj corespunzator.
    cout<<"Sirul este binar";
    else // In caz ca ok este diferit de 1 (sirul NU este binar) se afiseaza un mesaj corespunzator.
    cout<<"Sirul nu este binar";
    return 0;
}
*Problema disponibila pt download pe pagina "Download Probleme Rezolvate" in VECTORI-PACK 1.

Sa se determine elementul minim al unui vector

  • Se citeste de la tastatura un vector v, sa se determine elementul minim al vectorului.
#include <iostream>

using namespace std;
int main()
{
    int v[20],n,min,i;
    cout<<"N="; //Citirea nr. de elemente al vectorului.
    cin>>n;
    for(i=1;i<=n;i++) //Citirea vectorului de la tastatura.
    {
        cout<<"v["<<i<<"]=";
        cin>>v[i];
    }
        min=v[1]; //Initializarea minimului cu valoarea primului element al vectorului.
        for(i=1;i<=n;i++) //Determinarea elem. minim.
        {
            if(v[i]<min)
            min=v[i];
        }

    cout << min;
    return 0;
}
*Problema disponibila pt download in "VECTORI-PACK2".

miercuri, 29 mai 2013

Afisare elemente din diagonala principala.

 In imaginea de mai sus am reprezentat o matrice patratica cu n=3, iar in dreptul fiecarui element am scris coordonatele lui, de exemplu elementul 4 se afla pe linia 2 si pe coloana 1, fiind reprezentat in imagine ca 4(2,1) .
 Tot din imagine se observa faptul ca elementele care alcatuiesc diagonala principala sunt pe pozitii care au numarul liniei egal cu numarul coloanei (l = c). In cazul nostru diagonala principala este alcatuita din 1, 5 si 9.
  •  Program care citeste o matrice patratica si afiseaza elementele diagonalei principale:
#include <iostream>

using namespace std;

int main()
  
{
    int n,l,c;
    cout<<"N= ";
    cin>>n;  //Citirea variabilei n
    int a[n][n];
    for(l=1;l<=n;l++) //Citirea matricii de la tastatura
    {
        for(c=1;c<=n;c++)
        {
            cout<<"a["<<l<<"]["<<c<<"]= ";
            cin>>a[l][c];
        }
    }
    cout<<"Elementele diagonalei principale: "; //Afisarea elem. din diag. principala
    for(l=1;l<=n;l++)
    {
        for(c=1;c<=n;c++)
        {
            if(l==c) //Se verifica daca elementul face parte din diagonala principala
            {
                cout<<a[l][c]<<" ";//Daca face parte din diag. principala se afiseaza pe ecran.
            }
        }
    }
    return 0;
}
  • Executarea programului:

Ce este o matrice patratica, diagonala secundara si diagonala principala a unei matrici patratice.

O matrice patratica este doar o simpla matrice avand numarul de linii egal cu numarul de coloane (nl = nc). Pentru a citi o matrice patratica avem nevoie doar de valoarea variabilei n, unde n este egal cu numarul de linii si cu numarul de coloane ( n = nl = nc ) si de valoarea fiecarui element al matricii.
Cum arata o matrice patratica, care este diagonala secundara si cea principala ?
Avem drept exemplu o matrice patratica cu n = 3.
  • Diagonala principala este alcatuita din urmatoarele elemente: 1, 5 ,9.
  • Diagonala secundara este alcatuita din : 3, 5, 7.

Citirea unei matrici de la tastatura + afisare pe ecran.

#include <iostream>
using namespace std;
int main()
{
    int l,c,nl,nc;
//Citirea de la tastatura a numarului de linii
    cout << “Numar linii: “;
    cin>>nl;
//Citirea de la tastatura a numarului de coloane
    cout <<”Numar coloane: “;
    cin>>nc;
//Definirea matricii
    int a[nl][nc];
//Citirea matricii de la tastatura
    for(l=1;l<=nl;l++)
    {
        for(c=1;c<=nc;c++)
        {
            cout<<”a["<<l<<"]["<<c<<"]= “;
            cin>>a[l][c];
        }
    }
//Afisarea matricii citite
    for(l=1;l<=nl;l++)
    {
        for(c=1;c<=nc;c++)
        {
            cout<<a[l][c]<<” “;
        }
        cout<<endl;
    }
    return 0;
}
  • Executarea programului:

marți, 28 mai 2013

Citirea unei matrici din fisier si afisarea pe ecran

  

  • Cititi din fisier o matrice si afisati-o pe ecran.

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

int main()
{
    int l,c,nl,nc;
    ifstream f("data.in");

//Citirea numarului de randuri si coloane din fisierul data.in.
    f>>nl>>nc;

//Initializarea matricii
    int a[nl][nc];

//Completarea matricii.
    for(l=1;l<=nl;l++)
    {
        for(c=1;c<=nc;c++)
        {
        f>>a[l][c];
        }
    }

//Afisare Matrice
    for(l=1;l<=nl;l++)
    {
        for(c=1;c<=nc;c++)
        {
            cout<<a[l][c]<<" ";
        }
        cout<<endl;
    }

    return 0;
}

  • Executarea programului:
Continut fisier data.in :
3 3
1 2 3
4 5 6
7 8 9