Matice - soucet radku a diagonal – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Matice - soucet radku a diagonal – C / C++ – Fórum – Programujte.comMatice - soucet radku a diagonal – C / C++ – Fórum – Programujte.com

 

Michal
~ Anonymní uživatel
683 příspěvků
3. 11. 2014   #1
-
0
-

Zdravím. Jsem úplný začátečník a potřeboval bych pomoc v tomto příkladu. Zasekl jsem se, a netuším jak bych to mohl sepsat dále s použitím cyklů. Předem děkuji :)

//maticesoucty.cpp
//15.10.2014
//soucet sloupcu a uhlopricek ctvercove matice

#include <iostream>
using namespace std;

int main ()
{
	const int m=5								// pocet radku a slopcu ctvercove matice
		int A[m],[m];=                 {  1, 4, 5, 7, 9,
						  2, 3, 8, 15,7,
						 -1,-2, 4, 1, 0,
						  2,-4, 5, 6,-8,
						 -3, 3, 0, 1, 2};		// matice A


	int sloupce[m];								//pole pro ulozeni sloupcu
	system("pause");							// pro uhlopricky
	return 0;
}

// Dodelat : soucet  kazdych sloupcus + soucet hlavni a vedlejsi diagonaly. (Budu potrebovat cykly)
Nahlásit jako SPAM
IP: 46.13.112.–
KIIV
~ Moderátor
+43
God of flame
3. 11. 2014   #2
-
0
-

int A[m],[m];=

tohle ti fakt projde?
 

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lukas.balaz0
Super člen
3. 11. 2014   #3
-
0
-

za prve, asi tam nechces mať int A[m],[m];=   , ale int A[m][m]=

dalej pouzi tento cyklus

for(int i=0;i!=m;i++)
{
    for(int j=0;j!=m;j++)
    {
        //i - riadok (0 az m-1), j - stlpec
        //teraz A[i][j] je policko, co prave prezeras, na kazdom sa zastavis prave raz
        //toto pre ulozenie suctov stlpcov: (ale este pred cyklom pole sloupce napln nulami)
        sloupce[j]+=pole[i][j];
    }
}

ak i==j, tak si na uhlopriecke ... tak to if-om skontroluj a potom si sucet davaj do nejakej premennej

Nahlásit jako SPAM
IP: 80.242.41.–
lukas.balaz0
Super člen
3. 11. 2014   #4
-
0
-

este som zabudol,  druha uhlopriecka je, ak i==m-j-1

Nahlásit jako SPAM
IP: 80.242.41.–
ingiraxo+15
Grafoman
3. 11. 2014   #5
-
0
-

#1 Michal
 

int main()
{
    const int dim = 5;
    const int matrix[dim][dim] = {
        1, 4, 5, 7, 9,
        2, 3, 8, 15, 7,
        -1, -2, 4, 1, 0,
        2, -4, 5, 6, -8,
        -3, 3, 0, 1, 2
    };

    int columnSum[dim] = { 0 };
    int mainDiag = 0;
    int secDiag = 0;

    for (int x = 0; x < dim; x++) {
        for (int y = 0; y < dim; y++) {
            *(columnSum + x) += *(*(matrix + y) + x);
        }
        mainDiag += *(*(matrix + x) + x);
        secDiag += *(*(matrix + x) + (dim - x - 1));
    }

    cout << "Hlavni diagonala: " << mainDiag << endl;
    cout << "Vedlejsi diagonala: " << secDiag << endl;
    cout << "Soucty sloupcu matice: " << endl;
    for (int i = 0; i < dim; i++) cout << *(columnSum + i) << ", ";

    cin.get();
    return EXIT_SUCCESS;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
lukas.balaz0
Super člen
3. 11. 2014   #6
-
0
-

#5 ingiraxo
trošku offtopic otázka: všimol som si to už keď sme sa bavili v druhom vlákne včera, ale nepýtal som sa, lebo som myslel že chceš, aby ten kód vyzeral zložito. Prečo ty čítaš pole takto: *(*(matrix + x) + x). Veď matrix[x][x] je krajšie, čitateľnejšie a je to myslím len iný zápis toho, čo si tam dal ty (a zdá sa mi, že pri tvojom sa dá ľahšie pomýliť). Má to nejakú výhodu oproti normálnemu marix[x][x]??

Nahlásit jako SPAM
IP: 80.242.41.–
Michal
~ Anonymní uživatel
683 příspěvků
3. 11. 2014   #7
-
0
-

Děkuji, mrknu na to  a jdu zkoušet :)

Nahlásit jako SPAM
IP: 46.13.112.–
ingiraxo+15
Grafoman
3. 11. 2014   #8
-
0
-

#6 lukas.balaz
ano, jde to napsat čitelněji přes indexaci [], ale jsem zvyknutý používat přímej přístup

1) jsem zvyknutý používat tento zápis
2) líbí se mi pointery :-)
3) je to programově rychlejší, překladač si nedává prácí s překladem indexace na ukazatele (ve výsledku to potom přeloží tak jak to zapisuju), jen bez ukazatele na hodnotu
4) zmýlit se v tom moc nedá, bud ukazuješ na hodnotu nebo na paměť

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
lukas.balaz0
Super člen
3. 11. 2014   #9
-
0
-

#8 ingiraxo
Aha :) tak to sme iní .. ja zasa s pointrami neviem robiť. Nie že by mi to robilo problém naučiť, ale v živote som to nepoužil. A celkovo takéto "super veci" ako pointre, classy (a už ani nehovorím o dedičnosti class alebo o pointroch na classy), vlákna atď. atď. vôbec neovládam, zatiaľ som to nepotreboval. Doteraz som kódil hlavne algoritmy v C++ (kde ide viac o myšlienku ako o implementáciu) na súťaže (KSP, OI atď.). Už som sa pokúšal kódiť niečo v C# cez Unity, a aj keď viem, že väčšina toho, čo napíšem sa nakoniec premení aj tak na prácu s pointrami, ja som o tom nemusel vedeť a išlo to docela dobre. Zdá sa mi, že ty máš docela rád C#, tam sa pri profesinálnom programovaní používajú tiež tak veľa pointre ako v C ??(kedže zdá sa mi, že úsilie moderných jazykov je sa ich "naoko" zbaviť)

Nahlásit jako SPAM
IP: 80.242.41.–
ingiraxo+15
Grafoman
3. 11. 2014   #10
-
0
-

#9 lukas.balaz
Tak u algoritmů není třeba řešit moc oop, kolikrát se jedná o nějakou metodu jenom, ale jakmile děláš celou app, tak rozhodně potřebuješ znát oop a všechno s tím spojený. Líp se vyvýjí a hlavně to udržuje kód v nějakým stavu a né jak když naházíš vše na jednu hromadu.

Pokud si takový veci zatím nepotřeboval, tak si nejspíš zatím nedělal nějaký větší app. :)

V C# sice pointery jsou možný, ale v praxi se používají naprosto minimálně. Tam jsem je snad použil jen u pokročilejší práci s obrázkem, kde jsem potřeboval ukazovat na jednotlivý bity.

Pointery mají plno výhod, když víš jak je používat, někdy mě sere, že nejsou v Javě třeba :(

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 69 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý