Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Achizitie camera video auto (II)

Baza de date cu imagini pe bani

Robotul martian european, revigor...

Geoana: „Sistemul de vot es...
 Imprimare mai multe pagini intr-o...

trebuie sa depun declaratie unica...

Ruse vs Rusesti

Le mai putem da pe brazda? tipsuri
 Recomandari gips carton tavane. (...

ce fel de activitate intretinere ...

Se poate imbunatati o poza sa se ...

Folosește cineva syncthing? ...
 Închidere fereastra dupa deschidere.

Kit AC contine brate Unitatea ext...

Smart Switch fara neutru

Ierbicid pentru parul porcului.
 

Inserare linie matrice folosind functii.

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

#1
ZeldakTime

ZeldakTime

    Junior Member

  • Grup: Junior Members
  • Posts: 59
  • Înscris: 02.12.2019
Buna, am o problema de rezolvat:
Trebuie sa se scrie o functie inserareMedie, care primeste un numar N, M o matrice a care poate avea 51 de elemente maxim si un numar k.
Functia va insera pe pozitia k o noua linie in matrice avand pe fiecare coloana un numar rational egal cu media aritmetica a elementelor de pe acea coloana iar parametrii N si m vor fi trimisi prin referinta.
Functia nu va returna nimic de asemenea.
Uitati ce am scris eu pana acum
void inserareMedie(int &N, int &M, double mt[51][51], int k)
{
	int i,j;
	double ma=0;
	double v[100];
	for(j = 0;j <= M; j++)
	{
		for(i = 0;i <= N;i++)
			ma= ma + mt[i][j];
		v[j]=ma/N;
		ma=0;
	}
	for(j = 0;j <= M; j++)
	{
		for(i = N; i >= k-1; i--)
			mt[i][j] = mt[i-1][j];
		mt[k-1][j] = v[j];
	}
}
int main() {
	int N = 2, M = 2;
	double mt[51][51]={{1,1}, {2,2}};
	inserareMedie(N, M, mt, 1);
	return 0;
}



#2
tavitu

tavitu

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

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Ai probleme cu indexarea. Dacă începi de la 0, atunci condiția de oprire va fi < , nu <= în marea majoritate a cazurilor.

#3
ZeldakTime

ZeldakTime

    Junior Member

  • Grup: Junior Members
  • Posts: 59
  • Înscris: 02.12.2019

View Posttavitu, on 03 decembrie 2019 - 15:17, said:

Ai probleme cu indexarea. Dacă începi de la 0, atunci condiția de oprire va fi < , nu <= în marea majoritate a cazurilor.
Am testat si nu e de la asta..

#4
ZeldakTime

ZeldakTime

    Junior Member

  • Grup: Junior Members
  • Posts: 59
  • Înscris: 02.12.2019

View PostZeldakTime, on 03 decembrie 2019 - 14:01, said:

Buna, am o problema de rezolvat:
Trebuie sa se scrie o functie inserareMedie, care primeste un numar N, M o matrice a care poate avea 51 de elemente maxim si un numar k.
Functia va insera pe pozitia k o noua linie in matrice avand pe fiecare coloana un numar rational egal cu media aritmetica a elementelor de pe acea coloana iar parametrii N si m vor fi trimisi prin referinta.
Functia nu va returna nimic de asemenea.
Uitati ce am scris eu pana acum
void inserareMedie(int &N, int &M, double mt[51][51], int k)
{
int i,j;
double ma=0;
double v[100];
for(j = 0;j <= M; j++)
{
	 for(i = 0;i <= N;i++)
		 ma= ma + mt[i][j];
	 v[j]=ma/N;
	 ma=0;
}
for(j = 0;j <= M; j++)
{
	 for(i = N; i >= k-1; i--)
		 mt[i][j] = mt[i-1][j];
	 mt[k-1][j] = v[j];
}
}
int main() {
int N = 2, M = 2;
double mt[51][51]={{1,1}, {2,2}};
inserareMedie(N, M, mt, 1);
return 0;
}

uitasem
// mt va fi
//   1   1
// 1.5 1.5
//   2   2
// N va fi 3, M va fi 2

Pe exemplul acela asa trebuie sa dea.

View PostZeldakTime, on 03 decembrie 2019 - 16:50, said:

Am testat si nu e de la asta..
Pentru M cu valoarea 2 și codul
for(j = 0; j <= M; j++)
Variabila j va lua pe rând valoarea 0, valoarea 1 și valoarea 2. Deci în matricea ta care are doar 2 coloane vor fi accesate 3 coloane.
Pentru N cu valoarea 2 și codul
for(i = 0;i <= N;i++)
Variabila i va lua pe rând valoarea 0, valoarea 1 și valoarea 2. Deci în matricea ta care are doar 2 linii vor fi accesate 3 linii.

Din fericire în cazul tau specific, calculele ies cum trebuie pentru că restul elementelor din matrice sunt 0. Dar în general dacă greșești indexarea ori comiți erori de calcul ori să crapă programul.

Acum, pentru codul și k cu valoarea 1
mt[k-1][j] = v[j];

mt[k-1][j] este defapt mt[1-1][j] adică mt[0][j]. Dacă vrei ca noua coloană să fie inserată pe poziția k, atunci trebuie să fie mt[k][j].

Și trebuie să corectezi indexarea.
for(i = N; i >= k-1; i--)
mt[i][j] = mt[i-1][j];

Când i va avea valoarea k, vom avea mt[k][j] = mt[k-1][j].
Când i va avea valoarea k-1, vom avea mt[k-1][j] = mt[k-2][j].

Ce se întâmplă dacă k este 1 sau 0?

View Posttavitu, on 04 decembrie 2019 - 11:23, said:

Pentru M cu valoarea 2 și codul
for(j = 0; j <= M; j++)
Variabila j va lua pe rând valoarea 0, valoarea 1 și valoarea 2. Deci în matricea ta care are doar 2 coloane vor fi accesate 3 coloane.
Pentru N cu valoarea 2 și codul
for(i = 0;i <= N;i++)
Variabila i va lua pe rând valoarea 0, valoarea 1 și valoarea 2. Deci în matricea ta care are doar 2 linii vor fi accesate 3 linii.

Din fericire în cazul tau specific, calculele ies cum trebuie pentru că restul elementelor din matrice sunt 0. Dar în general dacă greșești indexarea ori comiți erori de calcul ori să crapă programul.

Acum, pentru codul și k cu valoarea 1
mt[k-1][j] = v[j];

mt[k-1][j] este defapt mt[1-1][j] adică mt[0][j]. Dacă vrei ca noua coloană să fie inserată pe poziția k, atunci trebuie să fie mt[k][j].

Și trebuie să corectezi indexarea.
for(i = N; i >= k-1; i--)
mt[i][j] = mt[i-1][j];

Când i va avea valoarea k, vom avea mt[k][j] = mt[k-1][j].
Când i va avea valoarea k-1, vom avea mt[k-1][j] = mt[k-2][j].

Ce se întâmplă dacă k este 1 sau 0?
Practic da corect dar pe site ul pe care o rezolv iau tot 0 puncte dintr un motiv sau altul

Edited by althea, 04 December 2019 - 13:45.


#5
ZeldakTime

ZeldakTime

    Junior Member

  • Grup: Junior Members
  • Posts: 59
  • Înscris: 02.12.2019

View PostZeldakTime, on 03 decembrie 2019 - 18:03, said:

uitasem
// mt va fi
//   1   1
// 1.5 1.5
//   2   2
// N va fi 3, M va fi 2

Pe exemplul acela asa trebuie sa dea.


Pentru M cu valoarea 2 și codul
for(j = 0; j <= M; j++)
Variabila j va lua pe rând valoarea 0, valoarea 1 și valoarea 2. Deci în matricea ta care are doar 2 coloane vor fi accesate 3 coloane.
Pentru N cu valoarea 2 și codul
for(i = 0;i <= N;i++)
Variabila i va lua pe rând valoarea 0, valoarea 1 și valoarea 2. Deci în matricea ta care are doar 2 linii vor fi accesate 3 linii.

Din fericire în cazul tau specific, calculele ies cum trebuie pentru că restul elementelor din matrice sunt 0. Dar în general dacă greșești indexarea ori comiți erori de calcul ori să crapă programul.

Acum, pentru codul și k cu valoarea 1
mt[k-1][j] = v[j];

mt[k-1][j] este defapt mt[1-1][j] adică mt[0][j]. Dacă vrei ca noua coloană să fie inserată pe poziția k, atunci trebuie să fie mt[k][j].

Și trebuie să corectezi indexarea.
for(i = N; i >= k-1; i--)
mt[i][j] = mt[i-1][j];

Când i va avea valoarea k, vom avea mt[k][j] = mt[k-1][j].
Când i va avea valoarea k-1, vom avea mt[k-1][j] = mt[k-2][j].

Ce se întâmplă dacă k este 1 sau 0?


Practic da corect dar pe site ul pe care o rezolv iau tot 0 puncte dintr un motiv sau altul
Să se scrie o funcție numită inserareMedie care primește un număr N, un număr M, o matrice mt care poate avea maxim 51 de linii și maxim 51 de coloane și un număr k. Funcția va insera pe poziția k o nouă linie în matrice, având pe fiecare coloană un număr rațional egal cu media aritmetică a elementelor de pe acea coloană. Parametrii N și M vor fi transmiși prin referință..
Acesta este enuntul

#6
tavitu

tavitu

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

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Ești sigur că poziția k înseamnă pe poziția k (adică dacă k = 1, pe poziția 1 într-o matrice cu indexarea de la 0, adică pe a doua poziție) și nu pe a k-a poziție (adică dacă k = 1, pe poziția 0 într-o matrice cu indexarea de la 0, adică pe prima poziție)?

PS @althea de s-a unit postul meu cu postul lui?

#7
ZeldakTime

ZeldakTime

    Junior Member

  • Grup: Junior Members
  • Posts: 59
  • Înscris: 02.12.2019

View Posttavitu, on 04 decembrie 2019 - 14:50, said:

Ești sigur că poziția k înseamnă pe poziția k (adică dacă k = 1, pe poziția 1 într-o matrice cu indexarea de la 0, adică pe a doua poziție) și nu pe a k-a poziție (adică dacă k = 1, pe poziția 0 într-o matrice cu indexarea de la 0, adică pe prima poziție)?

PS @althea de s-a unit postul meu cu postul lui?
Da, ce ai zis tu e corect, trebuie pentru k - a pozitie, dar eu am in exemplu -1, problema e testata pe mai multe teste cand o pun pe site, insa iau 0 puncte, de aceea am pus si enuntul problemei, poat ai tu o idee mai buna... pentru ca pe exemplul acela merge, insa cred ca pe altele nu.. si de aceea ma gandesc ce este gresit de iau 0 puncte.

#8
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,501
  • Înscris: 10.08.2005
cu  adica numar ratinal egal cu media aritmetica?
media aritmetica este numar real

#9
ZeldakTime

ZeldakTime

    Junior Member

  • Grup: Junior Members
  • Posts: 59
  • Înscris: 02.12.2019

View PostZeldakTime, on 04 decembrie 2019 - 13:50, said:

Să se scrie o funcție numită inserareMedie care primește un număr N, un număr M, o matrice mt care poate avea maxim 51 de linii și maxim 51 de coloane și un număr k. Funcția va insera pe poziția k o nouă linie în matrice, având pe fiecare coloană un număr rațional egal cu media aritmetică a elementelor de pe acea coloană. Parametrii N și M vor fi transmiși prin referință..
Acesta este enuntul
Să se scrie o funcție numită inserareMedie care primește un număr N, un număr M, o matrice mt care poate avea maxim 51 de linii și maxim 51 de coloane și un număr k. Funcția va insera pe poziția k o nouă linie în matrice, având pe fiecare coloană un număr rațional egal cu media aritmetică a elementelor de pe acea coloană. Parametrii N și M vor fi transmiși prin referință.

Funcția trebuie să se numească inserareMedie.
Funcția trebuie să primească doi parametri numere întregi transmiși prin referință, o matrice cu numere raționale și un număr întreg. Parametrii trebuie să fie în această ordine.
La finalul funcției matricea trebuie să conțină o linie în plus conform enunțului
Funcția nu va returna nimic

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

1 user(s) are reading this topic

0 members, 1 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