Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
[TEMA] Identificarea numerelor consecutive dintr-un sir si determinarea maximului lor.
Last Updated: Oct 15 2014 18:35, Started by
skywallkee
, Sep 30 2014 16:50
·
0
#1
Posted 30 September 2014 - 16:50
Buna ziua, tocmai ce am intrat in clasa a IX-a si am intalnit o problema (data de profesoara pentru cei ce vor sa mearga la olimpiada).
As dori sa stiu cum ar fi solutia (verbala, pseudocod) al acestei probleme. Se dau numerele: v1, v2, v3, ... , vn aleatorii, unde "n" este nedefinit. Sa se determine maximul a cel putin doua numere consecutive din sir. Ca sa explic mai bine cerinta: Se dau numerele: -100 , 60 , 1 , 2 , 3 , 61 , 67 , 62. Programul trebuie sa imi identifice cele mai mari numere consecutive si suma lor. In exemplul dat numerele sunt: 60,61,62 cu suma: 183. Putin ajutor? Cum as putea afla numerele consecutive dintr-un sir complet aleatoriu? |
#2
Posted 30 September 2014 - 18:03
Faci o lista cu secvente consecutive - inceput si sfarsit. Initial e goala.
Parcuri lista de numere, la fiecare te uiti daca e in inceputul sau sfarsitul unei secvente deja incepute. Daca numerele initiale nu sunt garantat distincte, te uiti si daca e in mijlocul unei secvente - in care caz ignori numarul. Daca e la inceput/sfarsit, actualizezi corespunzator secventa. Daca nu e in nici o secventa, creezi o secventa noua care are doar numarul respective. La sfarsit vei avea o lista cu toate secventele consecutive, si de acolo e simplu de aflat care e cea mai lunga sau cea cu suma cea mai mare. |
#3
Posted 30 September 2014 - 18:10
Da, dar eu ar trebui sa nu stiu care vor fi numerele sau cate vor fi. Acesta ar fi un algoritm pentru numere care le stiu deja, dar generalizat?
|
#4
Posted 30 September 2014 - 18:31
Raspunde la fiecare dintre aceste intrebari, apoi mai vedem. |
#5
Posted 30 September 2014 - 20:27
_bcristian_, momentan abia ce am dat de informatica. Am spus ca sunt in a IX-a.
Sa mai explic o data. Se da un sir v1, v2, v3, ... , vn (la acestea ii da utilizatorul programului valori, nestiute de mine, pot fi oricare si oricate). Fara a sti numerele din sir, trebuie sa se afle maximul celui mai mare (ca suma) sir de numere consecutive. Efectiv trebuie sa gaseasca cel mai mare ca valoare subsir de numere consecutive. |
#6
Posted 30 September 2014 - 20:51
skywallkee, on 30 septembrie 2014 - 20:27, said:
_bcristian_, momentan abia ce am dat de informatica. Am spus ca sunt in a IX-a. Sa mai explic o data. Se da un sir v1, v2, v3, ... , vn (la acestea ii da utilizatorul programului valori, nestiute de mine, pot fi oricare si oricate). Fara a sti numerele din sir, trebuie sa se afle maximul celui mai mare (ca suma) sir de numere consecutive. Efectiv trebuie sa gaseasca cel mai mare ca valoare subsir de numere consecutive. Scrie pentru inceput algoritmul care sorteaza numerele pe masura ce le citeste, unul cate unul. Imagineaza-ti ca joci razboi si ca numerele sunt cartile pe care le primesti, una cate una. Ca sa iti fie usor in timpul jocului, vei sorta cartile inca de cand se impart cartile. Ti se da o carte, o iei in mana. Ti se da a doua carte, ce faci cu ea? Ti se da a treia carte, cu ea ce faci? Incearca sa descrii cat mai exact ceea ce faci, cu cuvintele tale. |
#7
Posted 30 September 2014 - 21:51
Eu m-am gandit cumva cu teorema lui gauss.
Fac ceva de genul: Sa citeasca numerele Daca x (un numar) = y - 1 (sa respecte consecutivitatea) atunci max <- x + y ? Iar daca a (alt numar) > x and a > y and a = b - 1 atunci max <- a + b Si tot asa?.. Ce ma nedumereste, este cum pot afla daca sunt consecutive, cum se pot citi pe rand fiecare numar si cum pot citi un "n" numar de numere prin pseudocod. Edited by skywallkee, 30 September 2014 - 21:52. |
#8
Posted 01 October 2014 - 01:08
Le compari la citire intr-o bucla care se repeta de n ori
Edited by MarianG, 01 October 2014 - 01:11. |
#9
Posted 01 October 2014 - 05:17
skywallkee, on 30 septembrie 2014 - 21:51, said:
Eu m-am gandit cumva cu teorema lui gauss. Fac ceva de genul: Sa citeasca numerele Daca x (un numar) = y - 1 (sa respecte consecutivitatea) atunci max <- x + y ? Iar daca a (alt numar) > x and a > y and a = b - 1 atunci max <- a + b Si tot asa?.. Ce ma nedumereste, este cum pot afla daca sunt consecutive, cum se pot citi pe rand fiecare numar si cum pot citi un "n" numar de numere prin pseudocod. Esti neajutabil. Sa fii sanatos. |
#10
Posted 02 October 2014 - 20:41
skywallkee, on 30 septembrie 2014 - 20:27, said:
Sa mai explic o data. Se da un sir v1, v2, v3, ... , vn (la acestea ii da utilizatorul programului valori, nestiute de mine, pot fi oricare si oricate). Edited by cumva, 02 October 2014 - 20:42. |
|
#11
Posted 12 October 2014 - 14:08
Poate e cam tarziu...E bine asa ? (nu ma pricep foarte bine,deci daca e gresit nu ma injurati)
#include<stdio.h> int maxConsecutive(int*,int); int main() { int n,v,i; int *a; printf("\nNr de valori:"); scanf("%d",&n); a=(int*)malloc(n*sizeof(int)); for(i=0;i<n;i++) { printf("Nr %d :",i); scanf("%d",a+i); } v=maxConsecutive(a,n); printf("\n\n\nSuma maxima de numere consecutive:%d",v); free(a); printf("\n\n\n"); system("PAUSE"); return 0; } int maxConsecutive(int *a,int n ) { int max=0,s=0,i,count=0; for(i=0;i<n-1;i++) { if(count==0) s=a[i]; if((a[i]+1)==a[i+1]) { s=s+a[i+1]; count++; } else { count=0; } if(s>max) max=s; } return max; } |
#12
Posted 12 October 2014 - 20:09
Pai, si eu sunt incepator, dar sa incepem...
1. Din cate stiu eu, nu e nevoie de cast pentru malloc (nu ai inclus stdlib.h , malloc face parte din ea) 2. scanf("%d", a+i); ar trebui sa fie scanf("%d", a + i * sizeof(int)); 3. Codul asta imi da dureri de cap... indentat prost, spatire proasta... pune si tu la variabilele alea nume mai specifice... Nu a,b,c,d,e,f.... In programe mai mari o sa ramai fara litere 4. Intrebi daca e bine?? Pai ai testat, merge?? Ca la mine nu... La sirul 1 2 3 4 67 45 2 3 4 56 , returneaza 67 5. Nu am idee ce ai facut in functia aia maxConsecutive. poate inteleg dupa ce "halesc" ceva. |
#13
Posted 12 October 2014 - 20:39
1) In C nu trebuie acel cast dar in C++ da
2) E corect a + i in acel scanf daca a e int* |
#14
Posted 13 October 2014 - 13:27
#15
Posted 15 October 2014 - 18:35
Mda..acum am observat ca nu am citit prea bine enuntul.Ce am facut eu returneaza suma asta de valori consecutive care sunt una dupa alta si in sir.Nu citisem foarte bine enuntul,scuze,greseala mea.
|
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users