Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Filtru sedimente inainte de pompa?

Paște fericit!

electrician constructor video curs

Cum pot bloca transferul de date ...
 Ce reprezinta in chimie abrevieri...

Google pay ma taxeaza in timp ce ...

Kia Picanto 2022 - Problema motor?

Durere umar AC Joint
 Care este cea mai sanatoasa paine?

Zgomot ritmic ce urmeaza rotirea ...

Merita Lumix FZ82 in 2024?

Nu pot activa Memory Integrity
 Supratensiuni accidentale

Cuțit/ briceag drumetie

Cum am acces la o parte dintr-un ...

Mother's Day
 

Pointerii

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

#19
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007

View PostAnduIX, on 14 decembrie 2017 - 21:49, said:

for (int i=1; i<=n; i++)


Indexarea in majoritatea limbajelor incepe de la 0.

#20
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
Da, ai dreptate.

In cazul meu, sunt maxim 29 cărți.

Știu ca indexarea începe de la 0, însă școala m-a obisnuit sa o încep de la 1. Acum, fără sa vreau, încep de la 1 și nu de la 0.

Voi încerca sa mă reglez. :)

#21
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016

View Postgetmorefun, on 14 decembrie 2017 - 22:28, said:

Pentru vectorul ce stocheaza pointeri catre functii (exemplu ce functioneaza pe un microcontroller PIC):

int (*Vector_p[91])();// declararea vectorului ce contine pointeri la functii

void Assign_p()// "umplerea" vectorului
{
Vector_p[0]=Ac_45;//Ac_45 este numele unei functii
Vector_p[1]=Ac_44;
.
.
.
}

while(1)
{
//se citeste de la ADC si se calculeaza valoarea "Nr_ac"
if(Nr_ac>Nr_ac_prec)//prec vine de la precedent
{
  (*Vector_p[Nr_ac_prec+1])();//lansarea in executie a functiei asociate pointerului
//aflat pe pozitia Nr_ac_prec+1 in vectorul de pointeri Vector_p
  Nr_ac_prec++;
}
else
if(Nr_ac<Nr_ac_prec)
{

  (*Vector_p[Nr_ac_prec-1])();
  Nr_ac_prec--;
}
}

N-am inteles multe, dar pare interesant. :) Multumesc!

#22
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007
Folosind pointeri, fa o functie ce calculeaza suma unui vector. Creaza un vector de 10 elemente si cere-i functiei sa calculeze suma doar a ultimelor 5 elemente. Cum ai face asta fara pointeri?

#23
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
Imi cer scuze pentru intarziere, insa in perioada asta sunt putin cam ocupat.

Voi incerca in seara asta sa scriu codul pentru a rezolva problema data de tine.

View Postdani.user, on 15 decembrie 2017 - 23:26, said:

Cum ai face asta fara pointeri?
Este o intrebare retorica sau ai pus intrebarea asta in ideea ca eu voi veni cu un cod care functioneaza fara pointeri si, in urma unor sfaturi, adaptez codul astfel incat sa functioneze cu pointeri la functii? Intreb inainte de a incerca sa rezolv.


Se poate cere la inceput cate elemente va avea vectorul? Altfel, nu prea stiu cum pot umple vectorul, daca nu cunosc o lungime. Decat daca pun conditia ca introducerea a elementelor in vector sa se opreasca la introducerea lui 0.

Sincer sa fiu, eu in continuare privesc pointerul ca ceva ce stocheaza adresa unei variabile. Nimic mai mult.

Adica...un pointer la o functie practic stocheaza adresa functiei si functia se lanseaza in executie mentionand pur si simplu pointerul (+ parametri, daca este nevoie), nu?

Daca nu inteleg bine teoria, nu pot trece la practica. :)

#24
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007
Lasa pointerii la functii ca nu despre ei e vorba in cerinta mea.

Lasa si introducerea elementelor in vector de la tastatura, scrii direct in cod ce elemente sa aibe. Incearca sa rezolvi cerinta cu sau fara pointeri (la elementele vectorului).

#25
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
Undeva, am gresit. Imi afiseara orice altceva decat ce ar trebui sa afiseze.

Fie am facut o greseala colosala, fie am uitat sa pun ceva. Totusi, mie mi se pare in regula, desi nu este...

#include <iostream>
using namespace std;

int v[10] = {3, 4, 43, 65, 534, 2, 7, 55, 29, 10};
int nr;

void functie(int i)
{
int s;
for (; i<=9; i++)
	 s+=v[i];
cout << s;
}

int main()
{
cin >> nr;
functie (nr);

return 0;
}



#26
tavitu

tavitu

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

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
1. s ce valoare ințială are?
2. Transmite v ca parametru la funcție.
3. Transmite valoarea 9 ca parametru la funcție.

Și ar mai fi de discutat.

Edited by tavitu, 17 December 2017 - 20:44.


#27
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
void functie(int i) trebuie sa devina void functie(int i, int v, 9) ? Nu prea inteleg cum as putea adauga 9 ca parametru la functie, fiindca eu chiar nu stiam ca este nevoie sa fac asta.

#28
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,475
  • Înscris: 10.08.2005
adaugi un argument la functie, cand o  apelezi scrii 9

Edited by MarianG, 17 December 2017 - 21:46.


#29
tavitu

tavitu

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

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
1. v nu este int, este tablou/array de int-uri, int v, nu este complet, mai lipsește ceva.
2. Legat de 9, poți pur și simplu să folosești o variabilă int ca parametru iar în main când apelezi funcția "functie", o apelezi cu valoarea 9 pentru variabila respectivă.

#30
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
Bun, multumesc mult!
Am modificat codul si acum functioneaza corespunzator:
#include <iostream>
using namespace std;
int v[10] = {3, 4, 43, 65, 534, 2, 7, 55, 29, 10};
int nr, c;
void functie(int i, int v[], int c)
{
int s=0;
for (; i<=9; i++)
	s+=v[i];
cout << s;
}
int main()
{
cin >> nr;
c=9;
functie (nr, v, c);
return 0;
}


Cand apelez functia, "v" este suficient, deci este vazut drept vector. La declarare, si la zona parametrilor functiei este nevoie de parantezele patrate dedicate lungimii tabloului, asadar.

#31
tavitu

tavitu

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

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Dacă c are valoarea 9, mai ai nevoie să păstrezi valoarea 9 în interiorul funcției?

Edited by tavitu, 17 December 2017 - 22:02.


#32
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,475
  • Înscris: 10.08.2005
functia primeste un sir de numere, de marime n
se cere suma intre doua puncte,  start, stop
suma poate fi trimisa inapoi la apelant, sau prin parametru la adresa indicata

vezi tu,   sir, suma, start, stop nu i, j, v, c

Edited by MarianG, 17 December 2017 - 22:12.


#33
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
Nu..Așa este.

Nu am fost atent. Data viitoare trebuie sa verific de mai multe ori codul înainte de a-l posta.

Am fost puțin superficial. Scuze.

MarianG, mulțumesc mult pentru problema! Îmi voi face o idee și mâine dimineața voi reveni pe forum cu o prima “versiune” de cod.

#34
Baggins

Baggins

    Member

  • Grup: Members
  • Posts: 264
  • Înscris: 09.10.2014
Ce rol are variabila c?

#35
AnduIX

AnduIX

    Junior Member

  • Grup: Members
  • Posts: 159
  • Înscris: 07.08.2016
Oh...Aseara nu stiu ce am avut...

De fapt, asta face codul scris de mine: calculeaza suma intre doua puncte. i (in main este nr) reprezinta start, c reprezinta stop, iar s reprezinta suma.

Am inteles ce face codul pe care l-am scris, sa nu se inteleaga gresit. Posted Image

#include <iostream>
using namespace std;
int v[10] = {3, 4, 43, 65, 534, 2, 7, 55, 29, 10};
int nr, c;
void functie(int i, int v[], int c)
{
int s=0;
for (; i<=c; i++)
	s+=v[i];
cout << s;
}
int main()
{
cin >> nr >> c;
functie (nr, v, c);
return 0;
}


Edited by AnduIX, 18 December 2017 - 09:07.


#36
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,475
  • Înscris: 10.08.2005
Si de ce nu ii spui start ?! Numele variabilelor trebuia descrie ce reprezinta,.

 sumaSir( sir, start, stop ) 
cand prezinti cuiva functia intelege de la bun inceput ce are de introdus la argumente / parametri

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

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