infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Pavel Andrei din Decembrie 09, 2013, 00:03:17



Titlul: Verificare existenta nr in sir.
Scris de: Pavel Andrei din Decembrie 09, 2013, 00:03:17
Salutare!
Am incercat dar nu imi iese,se da sirul : 1,3,5,11,21,43.

In pseudocod sirul arata cam asa:
Cod:
n.A,B,C naturale
citeste n.
A<-1
B<-3
pentru i<-1,n-2 executa
C<-A*2+B
A<-B
B<-C
sfarsit_pentru

--------
Se citeste numerele x,y . Afisati "DA" daca ele se gasesc in sirul dat altfel "NU".

Multumesc!


Titlul: Răspuns: Verificare existenta nr in sir.
Scris de: George Alexandru din Decembrie 09, 2013, 11:15:35
Salut nu ai dat toata cerinta pentru ca nu inteleg complet dar sper sa sune asa:Se da un sir de numere de la tastatura si sa se afiseze daca 2 numere x,y date si ele de la tastatura apar in sir.Pai daca cerinta este asa atunci trebuie sa creezi un vector in care sa pui elementele tale din sir si dupa sa faci o parcurgere.O sa iti dau si codul de la ce am zis eu.
#include<iostream.h>
int main()
{
int v[100],i,x,y,n,okx=0,oky=1;
cout<<"\n Dati numarul de elemente din sir";
cin>>n;
for(i=0;i<n;i++)      //Citim elementele din sir si le punem in vector
     cin>>v;
for(i=0;i<n;i++)
{
    if(v==x) okx=1;    //Daca gasim in sir ca macar o data exista x atunci okx=1(adica exista x in sir)
    if(v==y) oky=1;   //La fel ca la x dar pentru y.
}
if(okx==1 && oky==1) cout<<"\Da";
  else cout<<"\n Nu";


Titlul: Răspuns: Verificare existenta nr in sir.
Scris de: George Alexandru din Decembrie 09, 2013, 11:20:10
In pseudocod l-ai gresit pentru ca in memoria calculatorului o variabila nu poate lua la un moment dat decat o singura valoare,de aceea programul tau nu merge pentru ca A,B se schimba de fiecare data iar la final o sa ramana in memorie ultimile doua valori de aceea se foloseste un vector.


Titlul: Răspuns: Verificare existenta nr in sir.
Scris de: Prehari Romica din Decembrie 09, 2013, 14:10:22
Pseudocodul genereaza sirul 1,3,5,11,21,43,... , deci de la tastatura se citeste doar n, care ii lungimea sirului, x si y, numerele care trebuie cautate in sir. Se poate verifica si fara a memora sirul intr-un vector.
Cod:
int main()
{
    int n,A,B,C,x,y,i;
    int ok=0;
    cin>>n;
    cin>>x>>y;
    A=1;
    B=3;
    if(x==A||x==B)
       ok++;
    if(y==A||y==B)
       ok++;
    for(i=1;i<=n-2;i++){
       C=A*2+B;
       A=B;
       B=C;
       if(x==B)
         ok++;
       if(y==B)
        ok++;
   }
   if(ok==2)
    cout<<"DA";
   else
    cout<<"NU";

    return 0;
}


Titlul: Răspuns: Verificare existenta nr in sir.
Scris de: George Alexandru din Decembrie 09, 2013, 15:00:17
Am inteles acum pai trebuia sa explici mai bine cerinta


Titlul: Răspuns: Răspuns: Verificare existenta nr in sir.
Scris de: Pavel Andrei din Decembrie 09, 2013, 20:35:24
Pseudocodul genereaza sirul 1,3,5,11,21,43,... , deci de la tastatura se citeste doar n, care ii lungimea sirului, x si y, numerele care trebuie cautate in sir. Se poate verifica si fara a memora sirul intr-un vector.
Cod:
int main()
{
    int n,A,B,C,x,y,i;
    int ok=0;
    cin>>n;
    cin>>x>>y;
    A=1;
    B=3;
    if(x==A||x==B)
       ok++;
    if(y==A||y==B)
       ok++;
    for(i=1;i<=n-2;i++){
       C=A*2+B;
       A=B;
       B=C;
       if(x==B)
         ok++;
       if(y==B)
        ok++;
   }
   if(ok==2)
    cout<<"DA";
   else
    cout<<"NU";

    return 0;
}

Iti multumesc! Am adaptat algoritmul astfel incat sa nu necesite numarul de elemente din sirul acela!