Lista....

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
costi
Junior
Junior
Posts: 8
Joined: 04 Mar 2011, 15:26
Judet: Bacău

Lista....

Post by costi » 14 Mar 2011, 02:24

Salut din nou.
Problema: "Se citesc numere din fisierul Numere.in.Sa se insereze intre o valoare data "x" si predecesorul ei , media lor aritmetica , iar intre "x" si succesor, media lor geometrica;Se va folosi o lista simplu inlantuita........etc.....;"

Problema mea:Dupa ce am calculat mediile si le-am legat de nodurile respective, la afisare algoritmul intra intr-o bucla, afisand valoarea cautata & predecesorul.De ce >=[?

Code: Select all

#include<iostream.h>
#include<fstream.h>
const int max=100;
int p,i,prim,last,map[10],n,x,gasit;
int main()
{
ifstream f("D:\\test.in");
prim=last=-1;
typedef struct nod {
	int val;
	int link;
};
nod list[max];
p=prim=0;
map[p]=1;
f>>list[p].val;
list[p].link=-1;
while(!f.eof())
{
	while(map[p])
	p++;
	map[p]=1;
	f>>x;list[p].val=x;
	list[p].link=-1;
	list[p-1].link=p;
	}
cout<<"Citirea elementelor s-a efectuat cu succes.\nAcum afisez in ordinea citirii:\n";
p=0;
while(p!=-1)
{
	cout<<list[p].val<<" ";
	p=list[p].link;
}
cout<<"Dati valoarea cautata:";cin>>x;
p=0;
while(p!=-1 && list[p].val!=x)
{
	gasit=p;
	p=list[p].link;}
gasit++;
cout<<list[gasit].val<<" este valoarea cautata;\nInserez intre predecesor si valoare media lor aritmetica.\nInserez intre vaolare si succesor media lor geometrica"<<endl;
x=(list[gasit].val+list[gasit-1].val)/2;
while(map[p])
	p++;
list[p].val=x;
list[p].link=gasit;
list[gasit-1].link=p;
while(map[p])
	p++;
list[p].val=sqrt(list[gasit].val*list[gasit+1].val);
list[p].link=gasit++;
list[gasit].link=p;
p=0;
while(p!=-1)
{
	cout<<list[p].val<<" ";
	p=list[p].link;
}
return 5;
}
map=vectorul harta al nodurilor;



User avatar
zlatomir
Membru++
Membru++
Posts: 282
Joined: 04 Jul 2009, 23:59
Location: Arad
Contact:

Re: Lista....

Post by zlatomir » 14 Mar 2011, 09:30

Intra intr-o bucla pentru ca trebuie sa afisezi rezultatul si anume trei noduri ale listei.

Nu am citit tot codul, m-am oprit cand am vazut ca nu faci lista, ai declarat nod care are doi membrii o valoare (int) si link (alt int), aici link ar trebui sa fie nod* adica pointer catre urmatorul element stocat in lista (urmatorul nod) si apoi ai declarat un array de acele noduri si il folosesti pe acela, asta nu e bine, tu va trebui sa construiesti o lista simplu inlantuita nu sa folosesti un array.
La array nu ai nevoie de link elementele sunt in zona continua de memorie si le poti accesa direct scriind numeArray[x];
In schimb o lista nu are acest avantaj (are altele), elementele pot fi oriunde in memorie si accesul la elementul urmator se face cu ajutorul acelui pointer catre urmatorul nod (link-ul tau sau next prin alte implementari), asa e lista simplu inlantuita iar daca nod-ul are pointer si catre elementul din fata sa atunci lista e dublu inlantuita (aici ai un exemplu de lista simplu inlantuita)

User avatar
pmarian
Junior
Junior
Posts: 25
Joined: 26 Dec 2010, 19:36
Judet: Maramureş
Location: Ocna Șugatag
Contact:

Re: Lista....

Post by pmarian » 14 Mar 2011, 21:23

@costi, un sfat daca imi permiti:

Studieaza-ti codul si spune-ne exact problema ta. Publicand (copy/paste) cod nu cred ca vei avea un feedback constructiv. Incearca sa intelegi problema si nu astepta cod scris de utilizatorii forumului ca rezolvare la problemele tale. Asa, niciodata nu vei intelege ce ai facut.

Referitor la problema ta, nu inteleg cum de intrebi in ce bucla iti intra tie "algoritmul". Teoretic e cod scris de tine si tu trebuie sa stii (ma gandesc..) ce face fiecare linie de cod. Analizeaza-ti codul si intreaba exact ce nu intelegi.

Just my opinion. Poate gresesc eu...
controlling complexity is the essence of computer programming

costi
Junior
Junior
Posts: 8
Joined: 04 Mar 2011, 15:26
Judet: Bacău

Re: Lista....

Post by costi » 15 Mar 2011, 00:00

@zlatomir, eu am implementat static lista [prin vector];Implementarea dinamica[prin pointeri] nu am invatat-o, si nici accesul la elementele structurii prin pointer [operatorul "->" cred];
@pmarian mi-am dat seama care e problema algoritmului meu.mersi de sfat

Mercedes
Junior
Junior
Posts: 1
Joined: 23 Jan 2015, 07:15
Judet: Bihor

Re: Lista....

Post by Mercedes » 23 Jan 2015, 07:18

Acest lucru este extrem de placuta si post medie .... tu scutură posta .... multumesc o tonă de a posta ea .... !!

Post Reply