Jump to content
php.lv forumi

Kā to saprats dev-c


goma smile

Recommended Posts

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 ?

Link to comment
Share on other sites

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);

Link to comment
Share on other sites

  • 2 weeks later...

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....

Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...