Pereiti prie turinio

Dvimatis masyvas, didžiausi skaičiai stulpelyje, mažiausi eilutėje. C


Rekomenduojami pranešimai

Sveiki, iškilo problema, kad padariau programą tinkamą rasti didžiausiam ir mažiausiam skaičiui dvimačiame masyve, bet reikia dabar padaryt, kad rastų didžiausią skaičių stulpeliuose ir mažiausią eilutėse, ir niekaip neišeina, gal galit padėt? :/

 

#include <stdio.h>
#include <stdlib.h>

int main()
{       int min=0, me, ms;
int max=0, de, ds;
int m[100][100], i, j, N;

printf("Iveskite lenteles dydi nusakanti skaiciu N*N :");
scanf("%d", &N);

for (i=0;i<N;i++)
{
	for (j=0;j<N;j++){

	    m[i][j]= rand()%10;
	    printf("%2d", m[i][j]);

		if (m[i][j] <= min)
		{
			min = m[i][j];
			me = i;
			ms = j;
		}

		if (m[i][j] >= max)
		{
			max = m[i][j];
			de = i;
			ds = j;
		}
	}

	printf("\n");
}

printf("Maziausias skaicius %d (%d : %d)", min, me, ms);
printf("\n");
printf("Didziausias skaicius %d (%d : %d)", max, de, ds);
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose
<...>kad rastų didžiausią skaičių stulpeliuose ir mažiausią eilutėse

Tai kad uždavinio formuluotė yra kvaila. Kaip suprasti, pavyzdžiui, mažiausio skaičiaus radimą eilutėse? Ta prasme, turi iteruoti per visas eilutes ir rasti mažiausią skaičių? Na bet jeigu visas eilutes iteruosi, tai bus lygiai tas pats kaip rasti mažiausią skaičių visame masyve. Tai kokia prasmė taip formuluoti uždavinį? Kad algoritmą pasufleruotum? Analogiškai būtų su stulpeliais. Galiausiai suprasčiau, jeigu uždavinys skambėtų šitaip: "Rasti didžiausią/mažiausią skaičių i-jame stulpelyje arba i-ojoje eilutėje". Va tada būtų aišku ir konkretu, nes kiekvienoje eilutėje ar stulpelyje mažiausias/didžiausias skaičius, tikėtina, skirsis.

 

O kalbant apie patį kodą, jis visiškai neaiškus. Kas čia per "me", "ms", "de", "ds"? Kriptogramos gal kažkokios? Toliau iš kažkur išlenda tokie magiški skaičiai kaip "100". Nesuprantu, o tai kodėl 100, o ne milijonas tada? Man, pavyzdžiui, milijonas yra gražesnis skaičius už 100, nes milijonas yra daugiau.

 

Toliau kas kliūna, tai vadinamas "spagečių kodas". Pas tave einama net iki ketvirto scope'o, kas jau rodo, kad kode yra šioks bei toks "smell'as". O jeigu to išvengti neįmanoma, tai tada skaidai gabalus į metodus, kurie būtų charakteringai įvardyti.

 

O galiausiai kode nėra testų. Nebūtina pūstis kažkokio framework'o, kad prasitestuotum kodą. Bet jeigu tu nežinai, ko tikiesi, kokios sąlygos gali būti, tai kaip gali teigti, jog kodas veikia? Negali ir negalėsi. O jeigu teigi, kad veikia, o nėra testų, reiškia, tiesiog meluoji. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai kad uždavinio formuluotė yra kvaila. Kaip suprasti, pavyzdžiui, mažiausio skaičiaus radimą eilutėse? Ta prasme, turi iteruoti per visas eilutes ir rasti mažiausią skaičių? Na bet jeigu visas eilutes iteruosi, tai bus lygiai tas pats kaip rasti mažiausią skaičių visame masyve. Tai kokia prasmė taip formuluoti uždavinį? Kad algoritmą pasufleruotum? Analogiškai būtų su stulpeliais. Galiausiai suprasčiau, jeigu uždavinys skambėtų šitaip: "Rasti didžiausią/mažiausią skaičių i-jame stulpelyje arba i-ojoje eilutėje". Va tada būtų aišku ir konkretu, nes kiekvienoje eilutėje ar stulpelyje mažiausias/didžiausias skaičius, tikėtina, skirsis.

 

O kalbant apie patį kodą, jis visiškai neaiškus. Kas čia per "me", "ms", "de", "ds"? Kriptogramos gal kažkokios? Toliau iš kažkur išlenda tokie magiški skaičiai kaip "100". Nesuprantu, o tai kodėl 100, o ne milijonas tada? Man, pavyzdžiui, milijonas yra gražesnis skaičius už 100, nes milijonas yra daugiau.

 

Toliau kas kliūna, tai vadinamas "spagečių kodas". Pas tave einama net iki ketvirto scope'o, kas jau rodo, kad kode yra šioks bei toks "smell'as". O jeigu to išvengti neįmanoma, tai tada skaidai gabalus į metodus, kurie būtų charakteringai įvardyti.

 

O galiausiai kode nėra testų. Nebūtina pūstis kažkokio framework'o, kad prasitestuotum kodą. Bet jeigu tu nežinai, ko tikiesi, kokios sąlygos gali būti, tai kaip gali teigti, jog kodas veikia? Negali ir negalėsi. O jeigu teigi, kad veikia, o nėra testų, reiškia, tiesiog meluoji. :)

 

Sveiki, topsai, labai ačiū už pastabas, galėjau plačiau paaiškinti man duotą užduotį, atsižvelgsiu į tai kitą kart kurdamas temą. Taip pat galėjau ir labiau paaiškinti programoje kas ką reiškia, šiuo atveju me, ms, de, ds tėra sutrumpinimai mažiausioEilutė mažiausioStulpelis ir tt. juos naudoju, nes reikia išvesti koordinates skaičiaus.

 

Dėl masyvo, masyvą apsirašau 100 dydžio, nes tiesiog dar pradedu programuoti ir nežinau kaip kitaip tai būtų galima padaryti, galėčiau ir apsirašyt kaip milijono dydžio kaip jūs sakėte. Kitas klaidas šalinsiu įgaudamas daugiau patirties programavime, nes dabar tiesiog kitaip nemoku.

 

O dėl pačios programos tai parašiau, veikia, galėsiu įdėti ir su veikimo įrodymais, jei tik pačiam Jums bus įdomu. Tai tiek, dar kart ačiū :)

Redagavo Laris3
Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

Sveiki, topsai, labai ačiū už pastabas, galėjau plačiau paaiškinti man duotą užduotį, atsižvelgsiu į tai kitą kart kurdamas temą. Taip pat galėjau ir labiau paaiškinti programoje kas ką reiškia, šiuo atveju me, ms, de, ds tėra sutrumpinimai mažiausioEilutė mažiausioStulpelis ir tt. juos naudoju, nes reikia išvesti koordinates skaičiaus.

 

Dėl masyvo, masyvą apsirašau 100 dydžio, nes tiesiog dar pradedu programuoti ir nežinau kaip kitaip tai būtų galima padaryti, galėčiau ir apsirašyt kaip milijono dydžio kaip jūs sakėte. Kitas klaidas šalinsiu įgaudamas daugiau patirties programavime, nes dabar tiesiog kitaip nemoku.

 

O dėl pačios programos tai parašiau, veikia, galėsiu įdėti ir su veikimo įrodymais, jei tik pačiam Jums bus įdomu. Tai tiek, dar kart ačiū :)

Sena žinutė, bet vis vien atrašysiu. Išties, džiugu, jog supranti.

 

Tai va, trumpinimai. O kas blogo parašyti vietoje "me" tiesiog "maziausiasElementas". Suvokiu, jog parašyti "me" lengviau negu "maziausiasElementas" dėl simbolių kiekio. Bet jeigu šį kodą skaitysi po metų ar dvejų, ką geriau suprasi? Ar "me" ar "maziausiasElementas"? Turbūt mano siūlomą variantą. Ir tada pradėsi suprasti, kad kodo skaitomumas irgi yra svarbus dalykas. Tai yra, lengva viską įvardyti a, b, c, d ir t.t. Bet tai juk nieko nesako, ar ne?

 

O dėl kitų aspektų mažiau svarbu. Kad nesukūrei milijoninio dydžio masyvo, tai čia nieko baisaus. Bet visgi siūlyčiau pasidomėti 'std' biblioteka, o šiam konkrečiam uždaviniui - std::vector. Overhead'as čia kaip ir yra, bet jis nėra polinominis. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sena žinutė, bet vis vien atrašysiu. Išties, džiugu, jog supranti.

 

Tai va, trumpinimai. O kas blogo parašyti vietoje "me" tiesiog "maziausiasElementas". Suvokiu, jog parašyti "me" lengviau negu "maziausiasElementas" dėl simbolių kiekio. Bet jeigu šį kodą skaitysi po metų ar dvejų, ką geriau suprasi? Ar "me" ar "maziausiasElementas"? Turbūt mano siūlomą variantą. Ir tada pradėsi suprasti, kad kodo skaitomumas irgi yra svarbus dalykas. Tai yra, lengva viską įvardyti a, b, c, d ir t.t. Bet tai juk nieko nesako, ar ne?

 

O dėl kitų aspektų mažiau svarbu. Kad nesukūrei milijoninio dydžio masyvo, tai čia nieko baisaus. Bet visgi siūlyčiau pasidomėti 'std' biblioteka, o šiam konkrečiam uždaviniui - std::vector. Overhead'as čia kaip ir yra, bet jis nėra polinominis. :)

 

C nėra C++ ir C++'o stdlibo neturi.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

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

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...