Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Siruri de caractere

Rândul 1

Se acordă 2 puncte din oficiu

1. (3 puncte) Se introduce de la tastatură un text în care separarea cuvintelor se face prin cel puţin un spaţiu. Să se afişeze cuvântul cel mai scurt şi cuvântul cel mai lung precum şi numerele de ordine ale acestor cuvinte.

2. (3 puncte) Se citeşte de la tastatură un şir de caractere. Să se obţină un al doilea şir de caractere care să conţină numai caracterele distincte din primul şir.

3. (2 puncte) Se citesc de la tastatură două şiruri de caractere care conţin două numere reprezentate în baza 20 (cifrele sunt deci 0..9 şi a,b,c,d,e,f,g,h,i,j; deci cifra 10 este a, cifra 11 este b, ..., cifra 19 este j). Să se afişeze suma (sau diferenţa, la alegere!) dintre cele două numere.

 

Rândul 2

Se acordă 2 puncte din oficiu

1. (3 puncte) Se introduce de la tastatură un text în care separarea cuvintelor se face prin cel puţin un spaţiu. Să se afişeze cuvintele care conţin o singură consoană şi în rest numai vocale (de exemplu: apa, oaza, roua etc.)

2. (3 puncte) Se citesc de la tastatură două şiruri de caractere. Să se elimine din fiecare şir caracterele care sunt comune celor două şiruri.

3. (2 puncte) Se citesc de la tastatură două şiruri de caractere care conţin două numere reprezentate în baza 20 (cifrele sunt deci 0..9 şi a,b,c,d,e,f,g,h,i,j; deci cifra 10 este a, cifra 11 este b, ..., cifra 19 este j). Să se afişeze suma (sau diferenţa, la alegere!) dintre cele două numere.

 

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Comentarii (14)
  • Avatar

    gicu 16-12-2011 10:14:24

    care stie cum se rezolva 1 de la randul 2? multumesc anticipat:X

  • Avatar

    String 16-12-2011 16:43:8

    Descompui textul in cuvinte (cel mai bine e sa folosesti strtok). Apoi scrii o functie care numara vocalele dintr-un cuvant. Asta nu e greu, pentru ca sunt doar 5 vocale: a,e,i,o,u.

  • Avatar

    ioana 19-12-2011 21:42:47

    imi poate da cineva rezolvarea la ex 1 randul 1?

  • Avatar

    Dan Pracsiu 19-12-2011 22:14:48

    #include<fstream>
    #include<iostream>
    #include<cstring>

    using namespace std;

    char text[1000], cuv[100][30];
    int n;

    int main()
    {
    int i;
    char *p;
    ifstream fin("text.in");
    fin.getline(text, 1000);
    fin.close();

    p = strtok(text," ");
    while (p)
    {
    strcpy(cuv[n],p);
    n++;
    p = strtok(NULL," ");
    }
    int lung = 0, poz = 0;
    for (i=0 ; i if (lung < strlen(cuv[i]))
    {
    poz = i;
    lung = strlen(cuv[i]);
    }
    cout << "Lungimea maxima o are al " << poz+1 << "-lea cuvant";
    return 0;
    }

  • Avatar

    iulia 23-10-2012 20:30:7

    imi poate da cineva rezolvarea de la problema 2, rand 1 facuta in c++ cu pointeri?? va rog frumos! multumesc!!

  • Avatar

    cminus 24-10-2012 15:56:56

    @iulia: Nici n-am nevoie de alt string. Caut dupa un caracter curent pe unul asemanator cu el. Si e cu pointeri. Uite sursa:
    #include<iostream>
    #include<cstring>
    using namespace std;
    int main()
    {
    char s[100], *p, *q;
    cin >> s;
    for (p = s; *p != 0; p++)
    {
    while ((q = strchr(p+1, *p)) != NULL)
    strcpy(q, q+1);
    }
    cout << s;
    }

  • Avatar

    iulia 24-10-2012 16:48:37

    multumesc mult!!!

  • Avatar

    anca 24-10-2012 17:21:26

    Imi poate da si mie cineva rezolvarea de la problema 2 randul 2 cu pointeri in c++?multumesc anticipat

  • Avatar

    cminus 25-10-2012 9:11:33

    @anca:
    Nush daca-i cel mai rapid, dar cu pointeri e mai urat:
    #include <iostream>
    #include <cstring>
    using namespace std;
    int main()
    {
    char a[100], b[100], *p, *q, ch;
    cout << "Primul sir : "; cin >> a;
    cout << "Al doilea sir : "; cin >> b;
    for (p = a; *p != 0; )
    {
    ch = *p;
    q = strchr(b, ch);
    if (q != NULL) // caracterul din a apare in b
    {
    // elimin din b
    strcpy(q, q+1);
    while ((q = strchr(b, ch)) != NULL)
    strcpy(q, q+1);
    // elimin acum si din a
    while ((q = strchr(a, ch)) != NULL)
    strcpy(q, q+1);
    }
    else p++;
    }
    cout << a << " --- " << b;
    return 0;
    }

  • Avatar

    anca 27-10-2012 19:10:12

    multumesc mult.

  • Avatar

    Liviu 7-11-2012 22:2:14

    imi poate rezolva cineva problema urmatoare de programare orientata pe obiecte?
    cu constructori, destructori, cu fisiere cpp, header etc.

    Sa se proiecteze si sa se implementeze o clasa pentru secvente ordonate de siruri de caractere. Clasa trebuie sa permita rezolvarea urmatoarelor probleme:
    - Crearea secventei de siruri;
    - Afisarea secventei de siruri;
    - Determinarea numarului de siruri din secventa;
    - Inserearea un nou sir in secventa, astfel incat ea sa ramana ordonata;
    - Eliminarea un sir din secventa;
    - Cautarea un sir in secventa;
    - Concatenarea a doua secvente de siruri intr-una singura (tot ordonata);
    - Compararea lexicografica a doua secvente de siruri.

  • Avatar

    nykoll 17-11-2012 20:37:27

    aceeasi prb o am si eu la oop :-s

  • Avatar

    Paula 6-12-2012 10:1:45

    Buna! As dori sa stiu cum se rezolva problema 1 de la randul 2. Va multumesc!

  • Avatar

    Doru 6-1-2015 20:53:36

    Buna! As dori sa stiu cum se rezolva problema 1 de la randul 2. Va multumesc!
    am incercat dar nu am reusit

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =