Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Matematica


Index » educatie » Matematica
» Probleme suplimentare : siruri de numere si matrice


Probleme suplimentare : siruri de numere si matrice


Probleme suplimentare : siruri de numere

Fiind dat un vector v cu n elemente numere intregi , sa se afiseze de cate ori gasim doua elemente consecutive egale intre ele.

Sa se afiseze elementele prime ale unui sir de n numere intregi citite de la tastatura .



Se citeste de la tastatura un sir de n elemente numere intregi .

Sa se afiseze elementele cu proprietatea ca suma cifrelor lor este divizibila cu o valoare p data .Scrieti un program care verifica daca cele n elemente ale unui sir dat de numere intregi sunt in in ordine strict crescatoare de la stinga la dreapta .

Fiind date doua siruri de numere intregi cu cite m respective n elmente , sa se afiseze elementele primului sir care nu se gasesc si in cel de-al doilea ( elmente necomune celor doa siruri ) , precum si numarul acestora .

Se citeste de la tastatura un si de n numere intregi . Sa se afiseze maximul dintre elmentele pare ale sirului .

Se citesc de la tastura cele n elemente ale unui sir dat de numere intregi . Sa se afiseze toate perechile de elmente ale sirului ( nu neaparat consecutive ) cu proprietatea ca ambele elmentele ale perechii au aceeasi suma a cifrelor .

Se da un vector v cu n elemente numere intregi . Sa se copieze intr-un alt vector u elementele pozitive ale vectorului initial .

Fiind dat un vector v cu n elemente numere intregi , sa se construiasca alti doi vectori : primul va contine numai elementele pare , iar al doilea numai elementele impare ale vectorului initial .

Se dau doua multimi definite prin intermediul vectorilor u si v , cu m respectiv n elemente . Sa se memoreze in vectorul w si apoi sa se afiseze reuniunea celor doua multimi ( elemente comune si necomune luate o singura data ) .

Un polinom P(x) = a 0 + a1*x + a2* x 2  + . . + an*xn poate fi reprezentat sub forma unui vector a = ( a[0] , a[1] , a[2] , . . . . , a[n] ) care va memora coeficientii sai.

a) fiind dat un polinom P(x) si un intreg b , sa se calculeze P(b) ; (valoarea lui P pentru o valoare b a argumentului) ;

b) fiind date doua polinoame P(x) si Q(x) , ambele de gradul n , sa se determine suma celor doua polinoame , P(x)+Q(x) , tiparindu-se coeficientii polinomului suma .

Se da un vector v cu n elemente numere intregi . Fara a folosi un vector auxiliar , sa se mute la sfirsitul lui v elementele sale nule , pastrind ordinea celorlalte elemente . exemplu: daca initial v = ( 2 , 3 , 0 , 9 , 0 , 0 , 8 ) , in final va rezulta v

Indicatii. Parcurgem vectorul dat v si pentru fiecare element v[i] testam daca este ; in caz afirmativ , mutam toate componentele din dreapta lui v[i] cu o pozitie mai la stinga , micsoram dimensiunea lui v cu o unitate si incrementam un contor nr care numara elementele nule . In final adaugam nr elemente cu valoarea la sfirsitul lui v

Se da un sir cu n componente naturale ( 1< n < 100 ) . Sa se afiseze cel mai mic numar natural care se poate alcatui luind prima cifra a fiecarui element al sirului . exemplu : pentru n = 4 si elementele ( 234 , 7650 , 19 , 2 ) numarul este 1227 .

Indicatii . Se parcurge sirul memorat intr-un vector v , si pentru fiecare element v[i] retinem prima cifra , pe care o extragem cu algoritmul clasic de impartiri la 10 si o adaugam la sfirsitul unui "vector de cifre" c , initial gol . Sortam crescator vectorul , dupa care prin parcurgerea vectorului sortat de la stinga la dreapta obtinem numarul cerut .

Se citeste de la tastatura un sir cu n elemente numaere naturale , nu neaparat distincte . Sa se afiseze elementul care apare de cele mai multe ori in sir . Daca exista mai multe astfel de elmente , se vor afisa toate . exemplu : pentru n = 5 si elmentele ( 23 , 7 , 11 , 7 ,19 , 7 , 11 , 11 ) se vor afisa elementele si 11 care apar fiecare de trei ori .

Indicatii . Se ordoneaza crescator vectorul v in care memoram sirul . Dupa ordonare , elementele indicate vor fi succesive in vector . Folosim alti doi vectori u si f : fiecare u[i] va fi un element distinct al vectorului v , iar f[i] va reprezenta frecventa de aparitie a lui u[i] in vectorul v . Parcurgem vectorul sortat v si la fiecare pas comparam elementul curent v[i] cu cel urmator v[i+1] ; daca sunt diferite , am identificat un nou element distinct al lui v , "in persoana" lui v[i+1], pe care il adugam la sfirsitul lui u , initializind totodata cu 1 un element nou la sfirsitul vectorului f ; in caz contrar , incrementam componenta din f care indica frecventa elmentelor egale v[i] si v[i+1]

Se citesc de la tastatura doua numere naturale foarte mari , care pot avea pina la 70 de cifre fiecare . Sa se afiseze suma celor doua numere .

Indicatii . Evident ca numere atit de mari nu pot fi reprezentate in memorie nici macar cu ajutorul tipului longint . Singura solutie este sa memoram cifrele lor in vectori . Pentru adunarea celor doua numere vom opera asupra vectorilor . Se parcurg "in paralel" cei doi vectori de cifre de la dreapta la stinga . La fiecare pas , insumeaza elemntele aflate pe pozitii identice in cei doi vectori , cu memorarea rezultatului pe aceeasi pozitie intr-un al treilea vector . Daca o astfel de soma depaseste , inseamna ca elementul corespunzator din vectorul-suma va fi diferenta dintre suma obtinuta si , iar pe de alta parte vom avea un transport egal cu catre pozitia urmatoare . Daca suma nu depaseste , atunci ea se va memora ca atare in vectorul suma .

Se citeste un sir cu n elemente numere naturale . Sa se re-aranjeze numerele in sir , astfel incit cele pare sa ocupe primele pozitii in ordine crescatoare . exemplu : daca sirul initial este(7, 8, 5, 2, 10, 4), atunci dupa re-aranjare devine (2, 4, 8, 10, 7, 5).

Indicatii: Mentionam sirul intr-un vector . Proiectam un ciclu de interschimbari de elemente . La fiecare pas privim vectorul ca fiind alcatuit din doua parti : o parte deja aranjata  ( v[1] , . , v[k-1] ) si o parte ne-aranjata ( v[k] , . , v[n] ) si incercam sa marim partea aranjata cu inca un element . Pentru aceasta , determinam cel mai mic dintre elementele v[k] , . , v[n] ale partii nearanjate si il aducem pe pozitia k prin interschimbare cu v[k] . Initial partea aranjata este vida , iar in final ea va contine tot vectorul , deci pozitia k ce indica "bariera" intre cele doua parti evolueaza de la la n



 

Numim platou de lungime k intr-un sir de numere intregi , o secventa de k elemente identice ( cu aceeasi valoare ) . Scrieti un program care afiseaza toate platourile de lungime maxima existente intr-un sir dat cu n elemente . exemplu : in sirul ( 1 , 2 , 2 , 2 , 3 , 4 , 4 , 5 , 5 , 5 ) intilnim platourile ( 2 , 2 , 2 ) , ( 4 , 4 ) si ( 5 , 5 , 5 ) , iar cele de lungime maxima sunt primul si al treilea .

Indicatii . Retinem in doua variabile p si q pozitiile ce reprezinta capetele fiecarui platou identificat si lungimea maxima in variabila 1max initializata cu . Identificam platourile prin parcurgerea vectorului intr-un ciclu cit timp i <= n . La fiecare pas cautam un platou incepind cu pozitia i , avansind in vector cit timp intilnim elemente consecutive egale ( unde initial i = 1 ) , daca lungimea platoului astfel determinat , adica q-p-1 , este mai mare decit lung_max , atunci ea devine noua lungime maxima . In final printr-o noua parcurgere a vectorului , identificam toate platourile de lungime maxima si le afisam : pentru fiecare element v[i] , testam daca este egal cu v[i+lung_max]

Se citeste de la tastatura un sir de numere naturale . Sa se afiseze toate grupurile de numere din sir care au aceeasi divizori factori primi . exemplu :fie sirul 12 , 15 , 2 , 36 , 32 . Grupurile afisate vor fi : ( 12 , 36 ) cu divizorii primi 2 si 3 , ( 15 ) cu divizorii primi 3 si 5 , ( 2 , 32 ) cu divizorul prim 2 .

Indicatii . Daca sirul are n numere , vom creea doi vectori v si f , astfel : fiecare element v[i] va fi un numar din sirul dat , iar f[i] va reprezenta produsul factorilor primi ai lui v[i] , cu i = 1 , 2 , . , n . Evident ca daca doua elemente ale sirului cu acelasi produs de factori primi , atunci elementele in cauza vor avea aceeasi factori primi , deci in vectorul f se pot evidentia grupurile cerute . Ordonam crescator vectorul f folosind oricare dintre algoritmii de sortare studiati . In final se afiseaza grupurile cerute prin parcurgerea vectorului f , grupurile cerute nefiind altceva decit platourile din vector ( vezi problema anterioara ).
2. Probleme suplimentare: matrice

O matrice patratica a se numeste simetrica fata de diagonala principala , daca fiecare element

de deasupra diagonalei principale este egal cu simetricul sau de sub diagonala , adica a[i, j] =

a[j, i ] pentru orice i j . Scrieti un program care verifica daca o matrice patratica a cu n linii

si n coloane citita de la tastatura , este simetrica fata de diagonala principala.

Se citeste de la tastatura o matrice a cu m linii * n coloane si elemente numere intregi. Sa se

verifice daca doua linii date L1 si L2 sunt identice (contin aceleeasi elemente in aceeasi

dispunere pe coloane) , afisindu-se un mesaj corespunzator.

Sa se afiseze maximul dintre elementele pare ale liniei L a unei matrici cu m linii si n coloane.

Valorile lui n si L , precum si elementele matricii (numere intregi) , se citesc de la tastatura .

Se citeste de la tastatura o matrice a cu m linii * n coloane si elemente numere intregi . Sa se

memoreze intr-un vector b sumele elementelor de pe fiecare linie a matricii ( b[i] va

reprezenta suma elementelor de pe linia i in matrice) .

Se citeste de la tastatura o matrice a cu m linii * n coloane si elemente numere intregi . Sa se

copieze intr-un vector elementele pozitive aflate deasupra diagonalei principale in matrice ,

apoi sa se tipareasca vectorul .

Pentru o matrice data a cu m linii * n coloane si elemente numere intregi , sa se interschimbe

intre ele doua linii date L1 si L2 , fara a folosi alta matrice.

Se citeste de la tastatura o matrice a cu m linii * n coloane si elemente numere intregi . Sa se

determine linia (liniile) din matrice care contin cele mai multe elemente nenule .

Pentru o matrice data a cu m linii * n coloane si elemente numere intregi , sa se elimine o

coloana data C , fara a folosi alta matrice .

Se da o matrice patratica a cu m linii * n coloane si un vector v cu n componente . Ambele

tablouri sunt alcatuite din numere intregi . Scrieti un program care verifica daca vectorul v

apare ca linie in matricea a

Fiind data o matrice a cu m linii * n coloane si elemente numere intregi , sa se construiasca



transpusa acesteia (matricea care se obtine scriind liniile pe coloane si invers) . Exemplu :

Se citeste de la tastatura o matrice a cu m linii * n coloane si elemente numere intregi . realizati interschimbarile de linii / coloane necesare , astfel incit elementele de pe diagonala principala , citite de sus in jos , sa fie sortate crescator .

Indicatii . Aplicam ideea algoritmului de sortare pentru elementele a[1,1] , . , a[n,n] de pe diagonala principala . Fiecare dintre acestea vor juca pe rind rolul unui pivot ; pentru fiecare pivot a[i,i] , parcurgem intr-un alt ciclu cu j = i+1 , . , n elmente a[j,j] de pe diagonala principala aflate sub pivot . La fiecare pas , daca a[j,j] < a[i,i] atunci trebuie interschimbate cele doua elemente intre ele , dar vom interschimba cu totul liniile si coloanele pe care se afla : mai intii linia i, cu linia j , apoi coloana i cu coloana j

Se da un tablou bidimensional cu m linii si n coloane ( m ,n I , avind ca elemente numai cifre de si . Doua linii se numesc complementare , daca , pentru orice coloana , suma elementelor aflate pe aceeasi coloana este 1 . Sa se identifice perechile de linii complementare si sa se determine numarul acestora . Pentru fiecare astfel de pereche se vor afisa pe un rind al ecranului indicii liniilor ce o compun , separate prin spatii , iar pe ultimul rind se va tiparii numarul perechilor de linii complementare din tablou .

Indicatii . Identificam liniile matricii prin indicii lor . Astfel perechiile de linii vor fi date de perechile de indici de forma ( i1 , i2 ) , cu i1 = 1 , 2 , . , m-1 si i2 = i+1 , . , m . Formam aceste perechi in doua cicluri , si pe fiecare pereche ( i1 , i2 ) testam prin parcurgerea coloanelor "in paralel" daca liniile ce alcatuiesc perechea sunt complementare ( a[i1,j]+a[i2,j]   = 1 pentru orice j = 1 , 2 , . , n ) .

Se citeste de la tastatura un numar natural n ( 1 < n < 6 ) . Sa se construiasca un tablou patratic cu n linii * n coloane avind ca elemente primii n * n termeni ai sirului lui Fibonacci . Ordinea de construire a matricii va fi : a[1,1], . ,a[1,n],a[2,1], . ,a[2,n], . ,a[n,1], . ,a[n,n]

Indicatii . Se copleteaza separat prima linie a matricii , pentru a putea memora primii doi termeni egali cu in elementele a[1,1] si a[1,2] . Celelalte elemente de pe prima linie se completeaza intr-un ciclu in care parcurgem coloanele j de la la n si la fiecare pas , memoram un termen al sirului in elementul a[1,j] . Apoi , completam analog restul matricii in doua cicluri cu i de la la n ( liniile ) si j de la la n ( coloanele ) .

Se citeste o matrice patratica a cu n linii * n coloane si elemente numere intregi sa se afiseze sirul obtinut prin parcurgerea matricii in spirala , pornind din coltul din stinga sus si deplasindu-ne circular pina in centrul matricii .

Exemplu : pentru matricea

se va afisa sirul 1 2 3 4 8 12 16 15 14 13 9 5 7 11 10 .

Indicatii . Din desen se poate observa ca se formeaza niste "inele" concentrice care trebuie parcurse pe rind . Pentru parcurgerea fiecarui inel avem nevoie de patru cicluri for care sa strabata cele patru laturi ale inelului : sus , dreapta , jos, stinga . Odata stabilita modalitatea de parcurgere a unui inel , trebuie sa generalizam formula pentru toate cele (n+1) div 2 inele .

Se citeste de la tastatura o matrice a cu m linii * n coloane . Sa se elimine atitea linii cite sunt necesare , asa incit elementele coloanei C parcurse de sus in jos sa fie in ordine crescatoare (unde C este cunoscut) .

Indicatii . Se parcurg intr-un ciclu liniile i ale coloanei C , cu i de la la m . Pentru fiecare element a[i,C] , daca este mai mic decit elementul a[i-1,C] aflat pe aceeasi coloana si in linia anterioara , inseamna ca a[i,C] "strica" ordinea crescatoare a coloanei C . In aceasta situatie , trebuie eliminata integral lina i pe care se afla acest element folosind algoritmul dat in capitolul de fata .







Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate