Pointerii
Last Updated: Dec 26 2017 23:57, Started by
AnduIX
, Dec 13 2017 23:14
·
0
#37
Posted 18 December 2017 - 17:00
#include <iostream> using namespace std; int sir[10] = {3, 4, 43, 65, 534, 2, 7, 55, 29, 10}; int start, stop; void sumaSir(int sir, int start, int stop) { int suma=0; for (; i<=stop; i++) suma+=sir[i]; cout << suma; } int main() { cin >> start >> stop; functie (sir, start, stop); return 0; } Am înțeles la ce te referi. Mă învățați să scriu cod pe care sa îl poată citi oricine, cu ușurință. |
#38
Posted 18 December 2017 - 17:34
Bun, faci progrese.
Pasii urmatori:
|
#39
Posted 18 December 2017 - 18:55
reaminstec problema de pe pagina precedenta
Folosind pointeri, (se cere) 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. |
#40
Posted 18 December 2017 - 20:59
Multumesc!
dani.user, on 18 decembrie 2017 - 17:34, said:
Am inteles. De acum, declar variabilele in interiorul (functiei) main. dani.user, on 18 decembrie 2017 - 17:34, said:
Asta inseamna ca in loc de cout << suma; din interiorul functiei, trebuie sa scriu return suma;, iar tipul de data a functiei sa devina int, nu? dani.user, on 18 decembrie 2017 - 17:34, said:
M-am gandit la ceva, insa nu stiu daca este corect. Am incercat sa transpun ideile in cod, dar am avut probleme. Asadar, uitati la ce m-am gandit:
Ultima "varianta" de cod contine cateva greseli, insa am facut modificarile in graba, caci eram la sfarsitul pauzei de la liceu. Dupa toate schimbarile, mai putin partea cu pointeri, am ajuns la asta: #include <iostream> using namespace std; int sir[10] = {3, 4, 43, 65, 534, 2, 7, 55, 29, 10}; int sumaSir(int sir[], int start, int stop) { int suma=0; for (int i=start; i<=stop; i++) suma+=sir[i]; return suma; } int main() { int start, stop; cin >> start >> stop; cout << sumaSir (sir, start, stop); return 0; } |
#41
Posted 18 December 2017 - 21:26
#42
Posted 18 December 2017 - 21:28
1) sirul ramane sir, pointerul iti spune unde incepe
2) cu ce bucla vrei tu ... dar unde scrie ca sirul se termina in NULL ? 3) vezi alta metoda, dat fiind ca inainte de a apela functia tu stii unde incepe sirul, unde se termina, si cate elemente din el ai nevoie |
#43
Posted 18 December 2017 - 21:47
M-am gândit mai bine și am realizat ca nu are cum sa fie NULL, fiindcă după blocul de memorie alocat ultimului element, exista un alt bloc de memorie, nealocat, dar cu o adresa anume. Deci NULL nu se poate.
Eu trebuie sa fac ca programul sa calculeze suma între doua puncte, dar sa am 2 parametri in loc de 3 pentru funcție, folosindu-mă de pointeri. Am înțeles bine cerința, nu? Mi-ați putea da un indiciu privind ceea ce trebuie sa elimin din lista de parametri? Start și stop sunt date, deci nu trebuie eliminate din argumente. Fără sir nu se poate, deci nici eliminarea lui nu o văd drept un lucru bun. E vorba de pointeri, mi-ați spus. Totuși, nu înțeleg cum i-as putea folosi astfel încât să scap de un parametru.. Sau trebuie sa tratez strict cazul in care vreau suma ultimelor x elemente? Mai sus, la ideea cu pointerul NULL care a căzut, m-am gândit ca îmi cereți ca programul sa rezolve numai acest caz. |
#44
Posted 18 December 2017 - 21:51
Gândește-te la definiția de baza a unui pointer, și anume că acesta retine adresa unei variabile. Cum faci sa afli valoarea unui element a cărui adresa este reținută într-un pointer?
|
#45
Posted 18 December 2017 - 21:51
Ai de aflat care-i strictul necesar de informatie pe care o poti transmite functiei pentru a stii ce elemente sa adune (nu neaparat ultimele 5).
|
#46
Posted 18 December 2017 - 22:04
AnduIX, on 18 decembrie 2017 - 21:47, said:
Sau trebuie sa tratez strict cazul in care vreau suma ultimelor x elemente? Mai sus, la ideea cu pointerul NULL care a căzut, m-am gândit ca îmi cereți ca programul sa rezolve numai acest caz. cand eram tanc si ne jucam de-a v-ați ascunselea, numaram o suta, doua sute, trei sute, ..... Quote Eu trebuie sa fac ca programul sa calculeze suma între doua puncte[...]Am înțeles bine cerința, nu? Edited by MarianG, 18 December 2017 - 22:04. |
|
#47
Posted 18 December 2017 - 22:38
jegmihai, on 18 decembrie 2017 - 21:51, said:
Gândește-te la definiția de baza a unui pointer, și anume că acesta retine adresa unei variabile. Cum faci sa afli valoarea unui element a cărui adresa este reținută într-un pointer? dani.user, on 18 decembrie 2017 - 21:51, said:
Ai de aflat care-i strictul necesar de informatie pe care o poti transmite functiei pentru a stii ce elemente sa adune (nu neaparat ultimele 5). Încă mă gândesc, căci este clar ca răspunsul “toate 3” nu este cel corect. MarianG, on 18 decembrie 2017 - 22:04, said:
ai inteles bine ... care este cea mai simpla (rapida) metoda sa numeri pana la 10 ? Zic 1 și apoi 10? Sau...zic 1, 2, 3...pana la 10. Înțeleg partea cu număratul la “De-a v-ați ascunselea”, căci așa era, însă nu am ideea in minte și nu înțeleg unde vrei sa ajungi.. Deci, am un șir. Am un start și un stop. Am nevoie atât de start, cât și de stop. Pe mine mă interesează suma între elementele care se afla între acel start și acel stop, inclusiv cele două. La funcție, am trei argumente. Folosind pointeri, pot face astfel încât funcția sa aibă nevoie de numai doi parametri. Pointerul stochează o adresă. Adresa șirului este, de fapt, adresa primului element din sir? |
#48
Posted 18 December 2017 - 22:45
#51
Posted 18 December 2017 - 22:58
Lucrurile nu sunt clare la mine in cap.
Cel mai rapid mod de a numără pana la 10 este sa zici “10”. Pana la 30, zici “30”. In cazul meu, trebuie sa zică direct start? Adică, șirul sa aibă prima valoare start? E o învălmășeala in creierul meu acum. |
|
#52
Posted 18 December 2017 - 23:05
eu observ ca le intelegi
pana acum, inainte sa apelam functia, avem asa un pointer la primul element al sirului un pointer la un element de pe o pozitie arbitrara, numit start ce ne mai trebuie ? Edited by MarianG, 18 December 2017 - 23:11. |
#53
Posted 18 December 2017 - 23:10
O alta poziție arbitrară, numita stop?
Nu cred ca este nevoie de pointer la stop. Adică...așa văd eu lucrurile. Dacă prima valoare este start, parcurgerea pana la stop se face element cu element. Nu mai este nevoie de pointer. |
#54
Posted 18 December 2017 - 23:13
Corect, nu este nevoie de pointer la stop.
Cum numim aceasta diferenta (cantitate) intre stop si start ? Edited by MarianG, 18 December 2017 - 23:14. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users