Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD
 Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android

Recomandare bicicleta e-bike 20&#...
 Bing-Content removal tool

Nu pot accesa monitorulsv.ro de l...

Cum sa elimini urmele de acnee?

Wc Geberit
 Routere detinute in trecut si in ...

Teii din fața casei

E-Mail in serie prin Excel si Out...

Modul alimentare rulou/jaluzea ex...
 

[TEMA] Identificarea numerelor consecutive dintr-un sir si determinarea maximului lor.

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

#1
skywallkee

skywallkee

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 20.08.2014
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
_bcristian_

_bcristian_

    Senior Member

  • Grup: Senior Members
  • Posts: 3,551
  • Înscris: 31.12.2006
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
skywallkee

skywallkee

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 20.08.2014
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
  • Cerinta e ambigua. Vrei suma maxima de nr consecutive, vrei sirul de consecutive care contine maximul, ce vrei de fapt?
  • 11, 1, 2, 2, 3, 3, 4 ce da?
  • Dar 1, 1, 1?
  • "n este nedefinit", dar sirul "1" si atat ce da, daca n e atat de nedefinit?
  • Te intereseaza doar suma, sau si sirul?

Raspunde la fiecare dintre aceste intrebari, apoi mai vedem.

#5
skywallkee

skywallkee

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 20.08.2014
_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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

 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.
Si tu la ce te-ai gandit? Ce schite ai facut?

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
skywallkee

skywallkee

    Junior Member

  • Grup: Members
  • Posts: 29
  • Înscris: 20.08.2014
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
Le compari la citire intr-o bucla care se repeta de n ori

Edited by MarianG, 01 October 2014 - 01:11.


#9
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

 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.
Ce numar, ce max? Eu ti-am dat problema cu cartile de joc si jocul razboi. Tu te apuci sa vorbesti despre cai verzi pe pereti :lol:

Esti neajutabil. Sa fii sanatos.

#10
cumva

cumva

    Junior Member

  • Grup: Members
  • Posts: 167
  • Înscris: 28.08.2010

 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).
Inca de aici imi dau seama ca esti paralel.Deci utilizatorul ii da programului valorile,dar tu nu le stii practic.Cum vine asta ?Posted Image Daca tu nu esti utilizator...esti moderator ? Posted Image

Edited by cumva, 02 October 2014 - 20:42.


#11
loser94190

loser94190

    New Member

  • Grup: Members
  • Posts: 7
  • Înscris: 05.10.2014
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
LittleWho

LittleWho

    Member

  • Grup: Members
  • Posts: 288
  • Înscris: 30.11.2013
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,189
  • Înscris: 24.02.2007
1) In C nu trebuie acel cast dar in C++ da
2) E corect a + i in acel scanf daca a e int*


#14
LittleWho

LittleWho

    Member

  • Grup: Members
  • Posts: 288
  • Înscris: 30.11.2013

 dani.user, on 12 octombrie 2014 - 20:39, said:

1) In C nu trebuie acel cast dar in C++ da
2) E corect a + i in acel scanf daca a e int*

1) OK. Da eu vad ca asta e C, nu C++.
2) Ai dreptate, greseala mea...

#15
loser94190

loser94190

    New Member

  • Grup: Members
  • Posts: 7
  • Înscris: 05.10.2014
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

Second Opinion 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

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