goma smile Posted November 1, 2011 Report Posted November 1, 2011 Pārveidot viendimensijas masīvu tā, lai katrs elements būtu vienādsar elementu summas un atbilstošā sākummasīva elementa dalīšanas rezultātu (ja elements ir vienāds ar 0, tad rezultāta elementam jāpiešķir 0). masīva izmers: 15-20 kā to saprast ? Quote
xPtv45z Posted November 1, 2011 Report Posted November 1, 2011 Tev ir kaut kāds sakuma masīvs, piemēram, $a1 = array(3, 7, 5, 6, 4, ...) Un jāizveido jaunais masīvs - array($a1 elementu summa / $a1[0], $a elementu summa / $a1[1], utt..) Quote
goma smile Posted November 1, 2011 Author Report Posted November 1, 2011 Manai programmai jābūt gavlenajai un 2 apakšfunkcijām... 1galvejā kur viss notiek 2.1 = Sasummē visu elementu summu 2.2 = elementu summu dala ar mainīgo elementu summu... Tagad tas izskatās šādi : http://paste.php.lv/808cf0a88ab9e58077d83b613c4a4545?lang=c bet man nesanāk ievienot lai 2.2apakšfunkcija ņem informāciju no 2.1 = 2 apakšfunkcijām jābūt obligāti - uzdevumu nosacijums.. nesanāk split(kopeejaa_summa(masiivs), masiivs); Quote
goma smile Posted November 15, 2011 Author Report Posted November 15, 2011 Ir pagājis laiks un esmu izveidojis augstāk minēto "programmiņu", bet man ir jautājums Rekur ir kods: http://paste.php.lv/0554321f46b0a9824b9214ea5548c24e?lang=c Funkcijas kopējā masīva rezultāta izsaukšana : kopeejaa_summa(masiivs); // 105 bet kā var tagat to funkciju to skaitli, iznākumu ievietot : split(∑, masiivs); // Katra masīva dalīšana ar kopējo summu Tas izskatītos kkā šītā: split(kopeejaa_summa(masiivs), masiivs); ,bet tā neiet.... Quote
codez Posted November 15, 2011 Report Posted November 15, 2011 (edited) Kāpēc visur jātaisa viss ar pointeriem? kāpēc summa nevar būt venkārši split(int sum, ... ? Kā funkcija split zin, cik garš ir masīvs? Ja globāli zin, tad jau masīvu arī var ņemt no globālā. Ja par konkrēto problēmu, tad problēma ir tāda, ka: 1) tev split funkcijai jāpadod pointeris, 2) tev sumas funkcija neko neatgriež. P.S. un kur kodā atstarpes? Edited November 15, 2011 by codez Quote
goma smile Posted November 15, 2011 Author Report Posted November 15, 2011 Summas funkcija atgriez, atgriež skaitli, kas ir mainīgs !.... un kas ir pointeris :D ? Quote
codez Posted November 15, 2011 Report Posted November 15, 2011 (edited) Tem summas funkcijai ir: void kopeeja_summa(.... un nav return, tātad neko neatgriež. Lai atgrieztu, vajag int sum(int[] mas) { //.... return rez; } Bet es darītu šādi: #include <iostream> #include <vector> #include <iterator> using namespace std; void printVector(vector<int> m){ copy (m.begin(), m.end(), ostream_iterator<int> (cout, " ")); cout << endl; } int sum(vector<int> m){ int r=0; for(vector<int>::iterator it=m.begin();it!=m.end();it++){ r+=*it; } return r; } void invert(int x, vector<int>& m){ for(vector<int>::iterator it=m.begin();it!=m.end();it++){ if (*it) *it=x/ *it; } } int main(){ int masivs[]={3,5,8,2,3,0,1,5,4,3}; vector<int> mas(masivs, masivs+sizeof(masivs)/sizeof(int)); printVector(mas); invert(sum(mas),mas); printVector(mas); } Edited November 15, 2011 by codez Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.