Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Structura ciclica cu test final - Instructiunea do - while

c



+ Font mai mare | - Font mai mic



Structura ciclica cu test final

Instructiunea do - while

Pentru un pseudocod de forma:



<instructiune 1>

cat timp (<conditie>) executa <instructiune 1>

instructiunile C++ sunt:

<instructiune 1>; while (<conditie>) <instructiune 1>;

Dar aceste instructiuni se pot inlocui cu o singura instructiune do-while astfel:

do <instructiune 1> while (<conditie>);

Aceasta nu reprezinta decat structura iterativa cu test final, 'repeta instructiune cat timp conditie'

Exemple do - while

Calculul sumei unor numere citite de la tastatura pana la introducerea numarului zero.

Pseudocodul

1.s=0

2.repeta

2.1. citeste x

2.2. s=s+x

cat timp (x!=0)

Programul

#include<iostream.h>

void main()

while (x!=0);

cout<<s;

Problema 1:Prisecaru

Sa se alcatuiasca un program in care sa fie implementate o functie pentru ridicarea lui 2 la o putere intreaga si una pentru calculul radicalului de ordinul doi pe baza sirului lui Newton.

Strategia de rezolvare:

Functia care va calcula puterea intreaga a lui 2 se bazeaza pe efectul de deplasare a bitilor din reprezentarea binara a unui numar. Astfel, o deplasare la stanga a lui a de b ori (a<<b) presupune o inmultire a lui a cu 2 de b ori: a<<b este echivalenta cu a 2b. La fel, o deplasare la dreapta la nivel de bit, a lui a cu b pozitii (a>>b) presupune o impartire a lui a cu 2 de b ori (a 2-b

Constructia functiei ce calculeaza radacina patrata a unui numar x are la baza sirul lui Newton, dat prin relatia de recurenta an+1 = 0.5, unde primul element a1 = 1, iar n>2. Functia calculeaza termenii succesivi ai sirului pana cand diferenta, in valoare absoluta, dintre doi termeni succesivi este mai mica decat eroarea acceptata pentru calcul.

Programul

/*Program 8.

Calculul ridicarii lui 2 la o putere intreaga si

calculul radacinii patrate fara utilizarea functiei sqrt*/

#include<iostream.h>

#include<conio.h>

#include<math.h>

int pow2(int x)

float rad2(float x)

while(fabs(q-p)>err);

return q;

void main()

while(Exit!='e');

Calculul unei sume cu o precizie impusa

Sa se calculeze suma S = pana cand |T/S| < e

Observatie: T[k] = -T[k-1]x/k, iar S[k] = S[k-1] + T[k]

Pseudocodul

1. Citeste x, eps,

2. T = S = k = 1,

3. Repeta

3.1. T = -Tx/k,

3.2. S = S + T,

3.3. k = k + 1

cat timp |T/S| e

4. Scrie S

Programul

//Calculul unei sume

#include<conio.h>

#include<math.h>

#include<stdio.h>

void main()

while(fabs(T/S)>=eps);

getch();

Prelucrarea numerelor

Programele urmatoare se bazeaza pe urmatoarele instructiuni:

impartire intreaga (modulo) a unui numar intreg la 10 prin care se obtine cifra unitatilor numarului. Ex: 1234%10

impartire propriu-zisa a unui numar intreg la 10 prin care se obtine tot un intreg. Ex: 1234/10 123 si nu 123.4

Secventele urmatoare descriu strict metoda prezentata si nu intreg programul !

Suma cifrelor unui numar 'n'

s=0;nl=n;

do

while(nl);

cout<<'nSuma cifrelor nr. '<<n<<' = '<<s;

Stergerea unei cifre 'a' dintr-un numar 'n'

nl=0;

do

while(n);

do

while(nl);

cout<<'nNoul numar: '<<n;

Oglindirea unui numar 'n'

n_o=0;nl=n;

do

while(nl);

cout<<'nOglinditul lui '<<n<<' este '<<n_o;

Trecerea unui numar 'n' din baza 10 in baza bI

aux=n_b=0;

do

while(n);

do

while(aux);

cout<<'nNumarul in baza '<<b<<' este '<<n_b;

Aparitia unei cifre 'a' intr-un numar 'n'

nr=0;nl=n;

do

while(nl);

cout<<'nCifra '<<a<<' apare de '<<nr<<' ori';

Inserarea unei cifre 'a' pe o pozitie 'k' a unui numar 'n'

nl=0;i=0;//poz.se numara de la sfarsit

while(i++<k)

nl=nl*10+a;

do

while(nl);

cout<<'nNoul numar este: '<<n;

Cifra maxima 'cmax' a unui numar 'n'

cmax=0;nl=n;

do

while (nl) ;

cout<<'ncmax='<<cmax;

Trecerea unui numar 'n' din baza bI[2..9] in baza 10

n_10=0;p=l;

do

while(n);

cout<<n_10;

Probleme practice

Sa se alcatuiasca programe care sa rezolve urmatoarele probleme:

Descompunerea unui numar in factori primi

Pseudocodul

1.citeste n

2.n=abs(n)

3.f=2    //factorul prim de testat

4.cat timp (f<=n)

4.1.e=0 //exponentul la care apare factorul in descompunere

4.2.cat timp (n%f==0) //n se divide la f

4.2.1.n=n/f

4.2.2.e=e+1

4.3.daca (e<>0) scrie f,' la ',e

4.4.daca (f==2) f=f+1 altfel f=f+2

Facilitati de intrerupere a unei secvente

Instructiunea break

Utilizata in cadrul instructiunilor ciclice, instructiunea break 'forteaza' iesirea din acestea. Fara a se mai testa valoarea expresiei (conditia) care determina repetarea corpului instructiunii ciclice, se continua executia cu instructiunea care urmeaza instructiunii ciclice. Astfel, se intrerupe repetarea corpului instructiunii ciclice, indiferent de valoarea conditiei de test.

Utilizarea in cadrul instructiunii switch: In situatia in care s-a ajuns la o valoare a unei expresiei constante egala cu cea a expresiei aritmetice, se executa instructiunea corespunzatoare acelei ramuri. Daca se intalneste instructiunea break, parcurgerea este intrerupta (nu se mai compara valoarea expresiei aritmetice cu urmatoarele constante), deci se va trece la executia primei instructiuni de dupa switch. Daca nu este intalnit break, parcurgerea continua. Instructiunea break cauzeaza deci, iesirea imediata din switch.

Instructiunea continue

Intalnirea instructiunii continue determina ignorarea instructiunilor care o urmeaza in corpul instructiunii ciclice si reluarea executiei cu testarea valorii expresiei care determina repetarea sau nu a corpului ciclului.

Modul de utilizare a instructiunilor break si continue

do

while (expresie1);

while(expresie1)

for(expr1; expr2; expr3)

Exemple break, continue

break - ziua din saptamana

Negrescu BIV25 Sa se scrie un program care citeste o cifra din intervalul [1,7] si afiseaza denumirea zilei din saptamana corespunzatoare cifrei respective (1-luni, 2-marti etc).

#include <stdio.h>

#include <stdlib.h>

void main( )

Probleme teoretice

Care sunt instructiunile care implementeaza in limbajul C structura conditionala ?

Care sunt instructiunile care implementeaza in limbajul C structura secventiala ?

Care sunt instructiunile care implementeaza in limbajul C structura repetitiva cu test initial ?

Care sunt instructiunile care implementeaza in limbajul C structura repetitiva cu test final ?

Ce deosebiri sunt intre instructiunea while si instructiunea do-while ?

Pornind de la sintaxa instructiunii for, stabiliti echivalenta intre aceasta si instructiunile while si do-while.

Probleme practice

Sa se calculeze aria unui triunghi, cunoscandu-se marimea laturilor sale. Numerele care reprezinta marimile laturilor vor fi introduse de utilizator. Se va testa mai intai daca cele 3 numere reprezentand marimea laturilor pot forma un triunghi (a <= b+c, b <= c+d, c <= a+b).

Sa se rescrie urmatoarea secventa, folosind o singura instructiune if.

if (n<0)

if (n>=90)

if (x!=0)

int b= n/x;

Sa se gaseasca toate numerele de doua cifre care satisfac relatia: = (x+y)2

Sa se citeasca un sir de numere reale, pana la intalnirea numarului 800 si sa se afiseze valoarea minima introdusa, suma si produsul elementelor sirului.

Scrieti un program care sa verifice inegalitatea 1/(n+1) < ln[(n+1)/n] < 1/n, unde n este un numar natural pozitiv, introdus de la tastatura.

Fie functia

ex-3 , x I

f(x)= sinx+cosx , x I

0,9ln(x+3) , x I

Sa se calculeze f(x), unde x e citit de la tastatura.

Sa se scrie un program care calculeaza si afiseaza maximul a 3 numere reale (a, b si c) citite de la tastatura.

Sa se scrie un program care calculeaza si afiseaza minimul a 3 numere reale (a, b si c) citite de la tastatura.

Sa se citeasca 2 caractere care reprezinta 2 litere mari. Sa se afiseze caracterele citite in ordine alfabetica.

Sa se citeasca 3 caractere care reprezinta 3 litere mici. Sa se afiseze caracterele citite in ordine alfabetica.

Sa se scrie un program care citeste o cifra. In functie de valoarea ei, sa se faca urmatorul calcul: daca cifra este 3, 5 sau 7 sa se afiseze patratul valorii numerice a cifrei; daca cifra este 2, 4 sau 6 sa se afiseze cubul valorii numerice a cifrei; daca cifra este 0 sau 1 sa se afiseze mesajul 'Valori mici'; altfel., sa se afiseze mesajul 'Caz ignorat!'.

Sa se calculeze valoarea polinomului Cebisev de ordin n intr-un punct x dat, cunoscand relatia:

T0(x)=1, T1(x)=x    si Tk+1 (x) - 2xTk (x) + Tk -1(x) = 0

Sa se citeasca cate 2 numere intregi, pana la intalnirea perechii (0, 0). Pentru fiecare pereche de numere, sa se calculeze si sa se afiseze cel mai mare divizor comun.

Se citesc cate 3 numere reale, pana la intalnirea numerelor 9, 9, 9. Pentru fiecare triplet de numere citit, sa se afiseze maximul.

Se citeste cate un caracter pana la intalnirea caracterului @. Sa se afiseze numarul literelor mari, numarul literelor mici si numarul cifrelor citite; care este cea mai mare (lexicografic) litera mare, litera mica si cifra introdusa.

Se citesc cate 2 numere intregi, pana la intalnirea perechii de numere 9, 9. Pentru fiecare pereche de numere citite, sa se afiseze cel mai mare divizor comun al acestora.

Sa se calculeze suma seriei 1 + x3/3 - x5/5 + x7/7 - . cu o eroare mai mica decat e (citit de la tastatura). Sa se afiseze si numarul de termeni ai sumei.

Sa se citeasca un numar intreg format din 4 cifre (abcd). Sa se calculeze si sa se afiseze valoarea expresiei reale: 4*a + b/20 -c + 1/d.

Sa se scrie un program care afiseaza literele mari ale alfabetului in ordine crescatoare, iar literele mici - in ordine descrescatoare.

Sa se scrie un program care genereaza toate numerele perfecte pana la o limita data, LIM. Un numar perfect este egal cu suma divizorilor lui, inclusiv 1 (exemplu: 6=1+2+3).

Sa se calculeze valoarea sumei urmatoare, cu o eroare e mai mica de 0.0001:

S=1+(x+1)/ 2! + (x+2)/ 3! + (x+3)/ 3! + ,

unde 0<=x<=1, x citit de la tastatura.

Sa se genereze toate numerele naturale de 3 cifre pentru care cifra sutelor este egala cu suma cifrelor zecilor si unitatilor.

Sa se citeasca cate un numar intreg, pana la intalnirea numarului 90. Pentru fiecare numar sa se afiseze un mesaj care indica daca numarul este pozitiv sau negativ. Sa se afiseze cel mai mic numar din sir.

Sa se genereze toate numerele naturale de 3 cifre pentru care cifra zecilor este egala cu diferenta cifrelor sutelor si unitatilor.

Sa se calculeze suma:



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2371
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved