Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Interschimbare valori

Interschimbati continutul a doua numere de tip intreg citite de la tastatura

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a, b, aux; 
            Console.Write("Introduceti primul numar a = "); 
            a = int.Parse(Console.ReadLine()); 
            Console.Write("Introduceti al doilea numar b = "); 
            b = int.Parse(Console.ReadLine()); 
            Console.WriteLine("a={0}, b={1}", a, b); 
            aux = a; a = b; b = aux; 
            Console.Write("Dupa interschimbare a={0}, b={1}", a, b); 
            Console.ReadKey();
        }
    }
}

Analiza programului

Citeste in continuare analiza programului si variante alternative de rezolvare

Ghiceste numarul

Sa se ghiceasca un numar intreg din intervalul 1 – 100

Analiza Programului

Acesta este un exemplu de utilizare a instructiuni repetitive do-while cu numar nedeterminat de pasi. Se seteaza din programo vaoare din intervalul 0 – 100 (in variabila solutie) care urmeaza sa fie ghicita de catre utilizator pe baza indicatiilor mai mare sau mai mic pe care le va primi. Pentru generarea numerelor aleatore s-a creat un obiect sol din clasa Random dupa care s-a generat un numar aleator din intervalul 0 – 100 cu ajutorul metodei Next, valoarea care a fost atribuita variabilei solutie,
Atata timp cat solutia nu este ghicita, daca se introduce de la tastatura o valoare mai mica decat solutia se va afisa mesajul “Numarul e prea mic”,altfel se va afisa mesajul “Numarul e prea mare”, iar daca se ghiceste se va afisa mesajul “BRAVO! Ati ghicit !” si programul se incheie.

Rezolvarea in C# si C++

de weekend – glume de pe YM

  • Daca razi de greselile pe care le faci s-ar putea sa iti lungesti viata. Daca razi de greselile altuia s-ar putea sa ti-o scurtezi. (Cullen Hightower)
  • O familie a gasit in cutia postala 2 bilete la un concert si o scrisoare: “Ghici de la cine?” Intorcandu-se seara tarziu de la concert, si-au gasit apartamentul gol, iar de dulap era agatata o alta scrisoare cu continutul: “Ei, ati ghicit?”
  • Burlac – barbat care vine in fiecare dimineata la serviciu din directii diferite.
  • Ochiul nevestei vede un fir de păr de altă culoare pe umărul soţului, dar nu vede bine uşa de la garaj. (Carlo Nell)
  • Când un băiat vine şi-ţi ia fata la plimbare, te simţi ca un om care dă un Stradivarius pe mâna unei gorile. (Jim Bishop)

Constante

O constanta reprezinta o valoare care nu se schimba (immutable). Folosim o constanta pentru cazul in care avem o valoare care trebuie repetata in codul aplicatiei. Astfel, ii putem da o denumire care sa ajute la intelegerea scopului ei si ii putem modifica valoarea doar intr-un singur loc.
La fel ca o variabila, o constanta are un tip, un nume si o valoare. Constantele trebuie initializate chiar in momentul declararii.
Continue reading

Factorial

Sa se calculeze n!=1*2*3*…*n (factorialul lui n), pentru un n natural citit de la tastatura

Analiza Programului

n! inseamna inmultirea tuturor numerelor naturale de la 1 pana la n.
Aceasta inseamna ca trebuie parcurse toate valorile de la 1 la n si trebuiesc inmultite. Pentru aceasta este potrivita instructiunea for cu limitele 1 si n. La fiecare pas a lui for o valoare i din intervalul [1,n] va fi inmultita la fact.

Variabila fact este initializata cu 1 si la final, in urma inmultirilor repetate va contine voaloarea factorialului lui n. Deoarece factorialul are o crestere foarte rapida, variabila fact a fost declarata de tip long.

Rezolvarea in C# si C++

Inmultire prin adunare

Înmultirea a doua numere naturale prin adunari repetate.

Analiza Programului

Deoarece se stie ca a trebuie adunat de exact b ori pentru a se obtine rezultatul dorit, se utilizeaza instructiunea for care are un numar determinat de pasi (de cate ori repeta un set de instructiuni). Valoarea a se aduna de b ri in variabila p, care la final ca contine rezultatul cautat (a*b). Variabila produs este initializata cu 0 dupa care i se va adauga in cadrul instructiunii for cate un a.

Rezolvarea in c# si c++

Impartire prin scadere

Impartirea a doua numere prin scaderi repetate

Analiza Programului

Se stie din clasele elementare ca impartirea inseamna de fapt niste scaderi repetate. Astfel, a:b inseamna b scazut de c ori si este posibil sa existe si un rest apartine [0, b-1]. nu se stie de cate ori se va scadea b din a, acest lucru se va afla doar la final, de asemenea si eventualul rest. in acest sens, pentru a repeta scaderea se va utiliza instructiunea repetitiva cu numar necunoscut de pasi si anume while. Conditia ca scaderea sa se mai repete esta ca a>=b. De fiecare data cand se mai face o scadere se va incrementa variabila c, care in final va reprezenta catul. Valoarea care ramane in final in a reprezinta restul.
Variabilele c si r se initializeaza cu 0, urmand ca la final sa contina catul (obtinut in cadrul ciclului while) si restul impartirii. Deoarece valoarea lui a se alterneaza in timpul calculului, daca se doreste se poate face o copie a sa inainte de a intra in ciclul while

Rezolvarea in c# si c++

Ecuatie de gradul II

Să se rezolve o ecuaţie de gradul II de forma ax2+bx+c=0, cu coeficienţi numere reale.

Analiza Programului

In vederea realizarii unei rezolvari riguroase, trebuiesc facute niste teste asupra valorilor a, b, c.
Se detecteaza urmatoarele situatii:
– daca a=0, b=0, c=0 avem de-a face cu o ecuatie nedeterminata
– daca a=0, b=0, c diferit de 0 avem de-a face cu o ecuatie imposibila
– daca a=0, b diferit de 0 iar c are orice valoare, avem de-a face cu o ecuatie de gradul I, situatie in care exista o singura solutie x=-c/b
Acestea sunt cazuri particulare care trebuiesc tratate.
– daca a diferit de 0 iar b si c au orice valoare, avem de-a face cu o ecuatie de gradul II, situatie in care se poate trece la calculul lui delta. Urmeaza acum o alta discutie dupa valoarea lui Δ.
Astfel:
– daca delta<0 avem de-a face cu solutii complexe (pe care in aceasta rezolvare nu le vom mai calcula ci vom afisa doar un mesaj)
– daca delta=0 ecuatia are doua solutii egale x1,x2=-b/(2*a)
– daca delta>0 ecuatia are doua solutii diferite:
x1=(-b+radical din delta)/(2*a)
x2=(-b-radical din delta)/(2*a)
Se observa ca pentru rationamentul enuntat mai sus, au fost folosite in program trei instructiuni if-else imbricate (if inclus in alt if) cu ajutorul carora se testeaza valorile lui a, b si c.

Rezolvarea in c# si c++

Ecuatia de gradul I

Sa se rezolve ecuatia de gradul I de forma ax+b=0, cu coeficienti numere reale.

Analiza Programului

In vederea realizari unei rezolvari riguroase, inainte de a afla solutia x=-b/a, trebuiesc facute niste teste asupra valorilor a si b. astfel daca a=0 si b=0 avem de a face cu o ecuatie nedeterminata, iar daca a=0 si b diferit de 0 avem de a face cu o ecuatie imposibila. Acestea sunt cazuri particulare care trebuiesc tratate.
In cazul in care a diferit de 0 se poate extrage solutia dupa formula cunoscuta x=-b/a, iar aceasta solutie este tiparita si pe ecran cu ajutorul functiei Console.WriteLine().
Pentru a avea instrumentele necesare calculului, in prima faza se vor citi de la tastature valorile reale a si b, dupa care se trece la gasirea solutiei. Se observa ca pentru rationamentul enuntat mai sus, au fost folosite in program doua instructiuni if-else cu ajutorul carora se testeaza valorile lui a si b.

Rezolvarea in c# si c++