Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
O smecherie pe care nu o inteleg

Balcon parter fara acte

unde gasesc un speed bag in bucur...

Programe TV cu altfel de sporturi
 Laptop "bun la toate" max...

ctfmon.exe - System Error (in Saf...

Ați prins vremurile cand 120 Volț...

Whatsapp nu afișeaza numele ...
 Medii admitere Politehnica Bucure...

Se extinde Baza de la Kogalniceanu

Politist mutilat de caine in curt...

Trotineta- cat rezista?
 Windows 11 si inregistrare de pe ...

Cont Facebook spart

Accesare Plex prin webstation

Reziliere contract Digi Mobil?
 

[TEMA] Subsir crescator/descrescator

- - - - -
  • Please log in to reply
10 replies to this topic

#1
aLexCM

aLexCM

    Active Member

  • Grup: Members
  • Posts: 1,079
  • Înscris: 26.01.2014
Am problema de aici.

[ http://editor.365plus.ro/poze/poza-1b70aa03d58e5be823acf6d1a262320af5669b97.jpg - Pentru incarcare in pagina (embed) Click aici ]


Si codul:
Spoiler

Problema e ca, codul verifica numai un subsir in functie de primul numar citit. Daca este par, verifica subsirul de elemente pare iar cel de numere impare ramane neverificat. Si viceversa. Stiu ca buba (printre altele)  e la primul if.

M-am gandit sa salvez elementele pare intr-un vector si pe cele impare in alt vector. Apoi sa-l parcurg pe fiecare si sa vad daca-i monoton sau nu. Dar cica sunt cel mult un milion de numere in fisier si n-as aloca atata memorie.

Edited by aLexCM, 13 February 2016 - 22:57.


#2
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,640
  • Înscris: 29.08.2013

Quote

M-am gandit sa salvez elementele pare intr-un vector si pe cele impare in alt vector. Apoi sa-l parcurg pe fiecare si sa vad daca-i monoton sau nu. Dar cica sunt cel mult un milion de numere in fisier si n-as aloca atata memorie.

Trebuie doar să le compari două câte două. N-ai nevoie de vectori.

Eu aş lua 4 variabile
int par_anterior, impar_anterior, par_actual, impar_actual;


unde verifici dacă elementul par actual este mai pare decât elementul par citit anterior, sau mai mic faţă de cel impar citit anterior, în caz contrar.
Enunţul zice că sunt numere naturale . par_anterior şi impar_anterior le poţi inizializa cu -1 (de exemplu), ca să ştii dacă elementul citit este primul par sau impar.

Edited by sftpdt, 13 February 2016 - 23:53.


#3
danutz96

danutz96

    Iritabil

  • Grup: Senior Members
  • Posts: 5,713
  • Înscris: 17.12.2009
Tu faci mereu comparatia cu primul numar din sir citit ( adica x) ?

#4
aLexCM

aLexCM

    Active Member

  • Grup: Members
  • Posts: 1,079
  • Înscris: 26.01.2014
L-am rezolvat. Mersi mult sftpdt! Posted Image

Codul complet:

Spoiler

Edited by aLexCM, 14 February 2016 - 01:34.


#5
aLexCM

aLexCM

    Active Member

  • Grup: Members
  • Posts: 1,079
  • Înscris: 26.01.2014
Ce complexitate are algoritmul? O(1)?

Edited by aLexCM, 14 February 2016 - 03:28.


#6
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,640
  • Înscris: 29.08.2013
De ce citeşti câte 2 variabile din şir?

#7
aLexCM

aLexCM

    Active Member

  • Grup: Members
  • Posts: 1,079
  • Înscris: 26.01.2014

View Postsftpdt, on 13 februarie 2016 - 23:51, said:

Trebuie doar să le compari două câte două. N-ai nevoie de vectori.
Eu am inteles se la citesc doua cate doua. Posted ImageM-am complicat.
L-am modificat.

Spoiler


#8
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Am de făcut 4 observații:

1. Dacă un număr nu este par atunci este în mod obligatoriu impar.
2. Dacă inițializezi par_anterior și impar_anterior cu valori corespunzătoare nu mai e nevoie să verifici dacă valoarea anterioară e pară sau impară atunci când verifici dacă e crescător sau descrescător.
3. Dacă tot ai o variabilă ok, poți să te folosești de ea ca să ieși din while atunci când ai detectat că nu sunt respectate condițiile.
4. Pentru fiecare număr din fișier faci un număr constant de operații deci este O(N).

#9
aLexCM

aLexCM

    Active Member

  • Grup: Members
  • Posts: 1,079
  • Înscris: 26.01.2014
Spoiler

Lui par_anterior i-am dat valoarea maxima ca sa nu intre in primul if la prima verificare. Daca era negativ, x era evident mai mare decat el si ok devenea 0. Asa i-am dat LONG_MAX si trece de prima verificare.

Edited by aLexCM, 14 February 2016 - 10:53.


#10
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,640
  • Înscris: 29.08.2013
Eu verificam la început dacă par_anterior=-1, caz în care îi atribuiam numărul citit; altfel făceam comparaţiile necesare. La fel şi dacă numărul era impar.

#11
VladBtz

VladBtz

    Active Member

  • Grup: Members
  • Posts: 1,702
  • Înscris: 24.09.2014
in loc de atatea if si else invata sa folosesti switch

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate