Microsoft Word - Raspunsul la niste provocari. Partea III..doc

Documente similare
Microsoft Word - O problema cu bits.doc

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

Slide 1

Tablouri unidimensionale Problema 1 Să se determine mulţimea cifrelor unui număr natural n > 0, dat. Exemplu: n= Cifre = {1,2,3,7} Se cere să s

Programarea şi utilizarea calculatoarelor

Programarea şi utilizarea calculatoarelor

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

E_d_Informatica_sp_MI_2015_bar_02_LRO

Top

O NOUA PROBLEMA DE CONCURS OLIMPIADA MUNICIPALA DE INFORMATICA, IASI 2019 V-am promis într-un articol mai vechi ca vom prezenta pe acest blog câteva p

/*

20 SUBIECTE DE EXAMEN - De fapt, în pofida acestor probleme, până la urmă tot vom logaritma, căci aceasta este tehnica naturală în context. Trebuie do

SUBPROGRAME

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

PROGRAMARE OBIECT-ORIENTATA LABORATOR 1 INTRODUCERE IN CLASE SI OBIECTE Introducere teoretica Prin intermediul unei Clase ne dorim sa construim tipuri

Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

-

Slide 1

4. Detectarea cantelor Calculul gradientului într-o imagine Detectorul de cante Canny Transformata Hough În această lucrare vor fi studiate metode de

/*

Paradigme de programare

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Slide 1

7. Alinierea robustă a densităţilor de puncte 3D Măsurarea distanţei dintre diferite forme geometrice 3D Estimarea rotaţiei şi a translaţiei optime în

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XI 1.Fişierul text bac.in conţine cel mult 1000 de

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Scrieţi pe foaia de examen răspunsul pentru fiecare dintre cerinţele următoare

Metode de sortare - pregătire admitere - Conf.dr. Alexandru Popa Lect. dr. Andrei Pătraşcu Universitatea din Bucureşti 1

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

MINISTERUL EDUCAŢIEI, CULTURII ŞI CERCETĂRII AL REPUBLICII MOLDOVA UNIVERSITATEA DE STAT ALECU RUSSO DIN BĂLŢI FACULTATEA DE ŞTIINŢE REALE, ECONOMICE

Preprocesorul C Funcţii cu numǎr variabil de argumente 6 decembrie 2005 Programarea calculatoarelor 2. Curs 10 Marius Minea

Lecţia 2 Structura liniară, alternativă şi repetitivă Clasa a V-a Structuri de bază(liniară, alternativă şi repetitivă) Programarea structurată este o

Logică și structuri discrete Logică propozițională Marius Minea marius/curs/lsd/ 3 noiembrie 2014

1

Curs 3 Permutari cu repetitie. Combinari. Algoritmi de ordonare si generare

Microsoft Word - Rezolvarea Test nr. 11.doc

ALGORITMICĂ. Seminar 3: Analiza eficienţei algoritmilor - estimarea timpului de execuţie şi notaţii asimptotice. Problema 1 (L) Să se determine număru

Structuri de date pentru partiţii de mulţimi O partiţie finită a unei mulţimi nevide S este o mulţime finită de submulţimi ale lui S: {S 1, S 2,..., S

Cursul 12 (plan de curs) Integrale prime 1 Sisteme diferenţiale autonome. Spaţiul fazelor. Fie Ω R n o mulţime deschisă şi f : Ω R n R n o funcţie de

L7

Backtracking_2018

Microsoft PowerPoint - Curs_SDA_10_RO_2019_v1.pptx

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

Laborator 3

Microsoft Word - CarteC.doc

LUCRAREA 8 PROGRAMAREA NELINIARĂ ÎN REZOLVAREA PROBLEMELOR DIN ENERGETICĂ. METODE DE ORDINUL Aspecte generale Programarea neliniară are o foart

Ministerul Educatiei, Cercetarii si Tineretului Grup Scolar Gh. Asachi Galati Proiect pentru obtinerea certificatului de competente profesionale Speci

Universitatea Politehnica din Bucureşti 2019 Disciplina: Geometrie şi Trigonometrie G1 * Varianta A 1. Ştiind cos x = 3 2, atunci sin2 x

Capitole Speciale de Informatica - Curs 5: Extragerea informatiilor prin feedback de relevanta. Metode probabiliste de extragere a informatiilor

E_d_Informatica_sp_SN_2014_bar_10_LRO

Analiză statică Analiza fluxului de date 23 octombrie 2014

Curs 8: Tehnica divizării (I) Algoritmi si structuri de date - Curs 8 1

I. Partea introductivă Proiectul unității de învățare CONCEPTUL DE MATRICE ŞCOALA: Colegiul Național Petru Rareș Suceava CLASA: a XI a- matematică / a

LUCRAREA NR

Facultatea de Automatică și Calculatoare

Probleme proiect TP BITPERM Implementați un algoritm care citește de la intrarea standard două numere naturale și scrie la ieșirea standard da

PCLPII-C16(9)

Declararea variabilelor

Declaraţii. Instrucţiuni 19 octombrie 2005 Programarea calculatoarelor 2. Curs 3b Marius Minea

Ecuatii si sisteme de ecuatii neliniare 1 Metoda lui Newton Algorithm 1 Metoda lui Newton pentru ecuaţia f(x) = 0. Date de intrare: - Funcţia f - Apro

PROIECT DIDACTIC DATE DE IDENTIFICARE Data: Școala : Școala Gimnazială Grigore Moisil Ploiești Clasa: a VI-a Profesor: Ilie Oana Magdalena Disciplina:

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

ALGORITHMICS

Microsoft Word - CarteC.doc

CURS

Microsoft Word - TIC5

CURBE BÉZIER În CAGD se utilizează adesea curbele polinomiale, adică acele curbe definite de o parametrizare polinomială: C : [a, b] R 3 C(t) = (x(t),

gaussx.dvi

Slide 1

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Diapositive 1

Probleme date la examenul de logică matematică şi computaţională. Partea a II-a Claudia MUREŞAN Universitatea din Bucureşti Facultatea de Matematică ş

Logică și structuri discrete Relații. Funcții parțiale Marius Minea marius/curs/lsd/ 20 octombrie 2014

MergedFile

Calcul Numeric

Spatii vectoriale

Algebra si Geometri pentru Computer Science

Distanţa euclidiană (indusă de norma euclidiană) (în R k ). Introducem în continuare o altă aplicaţie, de această dată pe produsul cartezian R k XR k,

Algoritmi elementari Metode de căutare secvenţială binară Metode de ordonare metoda bulelor metoda inserţiei metoda selecţiei metoda numărării Intercl

Lucrarea 7 Filtrarea imaginilor BREVIAR TEORETIC Filtrarea imaginilor se înscrie în clasa operaţiilor de îmbunătăţire, principalul scop al acesteia fi

Cursul 8 Funcţii analitice Vom studia acum comportarea şirurilor şi seriilor de funcţii olomorfe, cu scopul de a dezvălui o proprietate esenţială a ac

Microsoft Word - Software pentru ordonarea multirang a componentelor unei colectivitati.doc

tehnologii web

PHP (II)

Microsoft Word - PCLP2_Curs_4_2019.doc

Microsoft Word - Ivan, Boja.doc

Paradigme de Programare

Finanțe Publice PROF.UNIV.DR. ANDREEA STOIAN CURS 1

Grile si probleme siruri de caractere in C++ ŞIRURI DE CARACTERE Itemii următori sunt preluaţi din variantele de bacalaureat În secvenţa de i

Metode de programare Proiectarea algoritmilor

Curs 6 Gestiunea memoriei in C++ Alocare dinamica. Destructor. RAII. Rule of three. Tratarea excepțiilor exception safe code Moștenire Curs 5 Template

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Transcriere:

Răspunsul la niște provocări. Partea a III-a. Re-citirea problemei cu alți ochelari Tiberiu Socaciu Preambulul Ca urmare a unei provocări primite pe pagina Proful de Mate de pe Facebook 1, de la un elev de clasa a IX-a 2 : am oferit în [3] trei soluții pentru problemă, așa cum am înțeles-o eu, adică: Fie vectorul u = (u1, u2,, un) cu ui = (3i-1) -1 (3i) -1 (3i+1) -1. Să se construiasca vectorul v = (v1, v2,, vn) ştiind că vi = S20+Si, i=1, 2,, n, unde Sk = u1 + u2 + + uk. Observatie. Se va citi de la tastatura doar valoarea lui n. Exemplu. Pentru n=5 se va obţine vectorul v = (0.1787513, 01787764, 0.1787818, 0.1787877)., iar pe final am lansat 3 provocări: 1. Economie de variabile: în varianta cu scalar se poate renunţa la variabila u, iar variabilele S20 şi S pot fi comasate într-o singură variabilă, dat fiind că duratele lor de viaţă sunt disjuncte. 2. Cele 3 aplicaţii se pot asambla într-o singură aplicaţie, folosind directivele de compilare # define, # ifdef şi # endif 3. Reinterpretând enunţul prost scanat se pot obţine noi probleme, cum ar fi vi = S20+I sau vi = S20+7i sau altă formula de acelaşi tip., din care am rezolvat-o deja pe prima 3 și pe a doua 4. A treia provocare cerea ca reinterpretând enunțul (prost scanat), observînd că se pot obține noi probleme, cum ar fi vi = S20+i sau vi = S20+7i sau altă formulă de același tip. Vom rezolva problema pe cazul 1 Vezi [2]. 2 Vezi [1], pagina 52, problema 50, pentru problema originală. 3 Vezi [4]. 4 Vezi [5]. 1

mai general, care acoperă și problema inițială și cele doua propuse, și anume în cazul în care vi = SA+Bi, unde A și B sunt două constante naturale, date 5. Soluția cu funcții Tot ce avem de făcut este să adăugăm macrodefiniția parametrizată pentru formula indicelui: și să ajustăm corespunzător funcția v(). Astfel, programul devine: # include <iostream> using namespace std; float u(int i) return 1./(3*i-2)/(3*i)/(3*i+1); float S(int k) float suma = 0; for (int i=1; i<=k; i++) suma += u(i); return suma; float v(int i) return S(M(i)); int main() int n; cout << "n = "; cin >> n; cout << "v = ("; for(int i=1; i<=n-1; i++) cout << v(i) << ", "; cout << v(n) << ")" << endl; return 0; 5 Eventual la compilare, ca in [4]. 2

Soluția cu vectori Folosind aceași macrodefiniție: programul este: # include <iostream> using namespace std; int main() # ifdef MAXN float S[MAXN+1], u[m(maxn)+1], v[maxn+1]; # else float S[101], u[m(100)+1], v[101]; # endif int m, n; cout << "n = "; cin >> n; m = M(n); for(int i=1; i<=m; i++) u[i]=1./(3*i-2)/(3*i)/(3*i+1); S[1]=u[1]; for(int i=2; i<=m; i++) S[i]=S[i-1]+u[i]; for(int i=1; i<=n; i++) v[i]=s[m(i)]; cout << "v = ("; for(int i=1; i<=n-1; i++) cout << v[i] << ", "; cout << v[n] << ")" << endl; return 0; cu observația că macrodefiniția am folosit-o de două ori: 1) o dată la calculul valorii lui v[i]; 2) a doua oară ca dimensiune maximă a indicelui până la care avem de calculat valorile din vectorul u. De asemenea, de remarcat alocarea vectorilor folosind compilare condițională bazată pe: 3

1) existența definiției lui MAXN; 2) existența macrodefiniției parametrizate a lui M. Soluția cu scalari Folosind aceeasi macrodefiniție transformată: # define A 20 # define B 7 # define M(i) (A + B * i) și adăugînd o macrodefiniție pentru termenul ui care se repetă de două ori: # define U(i) (1./(3*i-2)/(3*i)/(3*i+1)) programul este: # define A 20 # define B 7 # define M(i) (A + B * i) # define U(i) (1./(3*i-2)/(3*i)/(3*i+1)) # include <iostream> using namespace std; int main() float S; int i, j, n, m; cout << "n = "; cin >> n; m = M(n); S = 0; for(i=1; i<=a; i++) S += U(i); cout << "v = ("; for(; i<=m;) for (j=1; j<=b; j++, i++) S += U(i); cout << S; if (i!=m+1) cout << ", "; cout << ")"; 4

Cu mențiunea că se calculează într-o primă etapă suma u1+ +ua în variabila S, iar apoi se adună calupuri de B elemente succesive din șirul u 6 la variabila S care va lua succesiv valorile pentru S1,, Sn. Ultima valoare din șirul u calculată va fi UM(n), adică Um. Întrebări 1. Care este rostul testului if (i!=m+1)? 2. Cum ați rescrie cu un while instrucțiunea for(; i<=m;)? 3. De ce se incrementează variabila i în instrucțiunea for (j=1; j<=b; j++, i++)? Referinţe [1] Carmen Popescu, Culegere de probleme de informatică, accesibilă online la adresa https://www.scribd.com/document/282238460/culegere-de-probleme-informatica- Carmen-Popescu. [2] Proful de Mate, pagina pe Facebook, accesibilă online la adresa https://www.facebook.com/pg/proful-de-info- 1586589874777502/about/?ref=page_internal [3] Tiberiu Socaciu, O problemă care nu este ceea ce pare a fi, in InformaGica, accesibila online la adresa http://www.informagica.ro/2019/02/26/o-problema-care-nueste-ceea-ce-pare-a-fi/. [4] Tiberiu Socaciu, Răspunsul la niște provocări. Partea I. Economia de variabile, în InformaGica, accesibilă online la adresa http://www.informagica.ro/2019/02/26/raspunsul-la-niste-provocari-partea-i-economiade-variabile/. [5] Tiberiu Socaciu, Răspunsul la niște provocări. Partea a II-a. Directive de compilare, în InformaGica, accesibilă online la adresa http://www.informagica.ro/2019/02/27/raspunsul-la-niste-provocari-partea-a-ii-adirective-de-compilare/. Cuprins Preambulul... 1 Soluția cu funcții... 2 Soluția cu vectori... 3 Soluția cu scalari... 4 Întrebări... 5 Referinţe... 5 Cuprins... 5 6 Vezi for-ul bazat pe j. 5

Tiberiu Socaciu este licenţiat în informatică şi doctor în cibernetică. Este cadru didactic la CN Petru Rareş din Suceava şi la Universitatea Ştefan cel Mare din Suceava. 6