Aplikace typu matice – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Aplikace typu matice – C / C++ – Fórum – Programujte.comAplikace typu matice – C / C++ – Fórum – Programujte.com

 

RePRO0
Super člen
29. 9. 2011   #1
-
0
-

Jenom taková technická (neberte mě za blázna), dokázali byste to napsat čistěji? (je to v céčku)

Plno lidí (...neprogramátorů...) se snaží psát podobné typy aplikací bez ukazatelů a adres (a je to zcela nesmyslné - věříte mi?). Takže se zeptám jinak, je tu něco, co se Vám nelíbí?

#include <stdlib.h>
#include <stdio.h>
 
#define MATRIX_SIZE 3
 
typedef double TMatrix[MATRIX_SIZE][MATRIX_SIZE];
 
void readMatrix(TMatrix* matrix); 
void add(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2); 
void sub(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2); 
void printMatrix(const TMatrix* matrix);
 
int main(int argc, char** argv) {
        TMatrix A, B, C;
 
        printf("Matice A:\n");
        readMatrix(&A);
 
        printf("Matice B:\n");
        readMatrix(&B);
 
        add(&C, &A, &B);
 
        printMatrix(&C);
        
        system("PAUSE");
        return (EXIT_SUCCESS);
}
 
void readMatrix(TMatrix* matrix) {
        for(int i = 0; i < MATRIX_SIZE; i++) {
                for(int j = 0; j < MATRIX_SIZE; j++) {
                        printf("Pozice %d %d: ", i, j);
                        scanf("%lf", matrix[i][j]);
                }
        }
}
 
void add(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2) {
        for(int i = 0; i < MATRIX_SIZE; i++) {
                for(int j = 0; j < MATRIX_SIZE; j++) {
                        *matrix[i][j] = *matrix1[i][j] + *matrix2[i][j];
                }
        }
}
 
void sub(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2) {
        for(int i = 0; i < MATRIX_SIZE; i++) {
                for(int j = 0; j < MATRIX_SIZE; j++) {
                        *matrix[i][j] = *matrix1[i][j] - *matrix2[i][j];
                }
        }
}
 
void printMatrix(const TMatrix* matrix) {
        for(int i = 0; i < MATRIX_SIZE; i++) {
                for(int j = 0; j < MATRIX_SIZE; j++) {
                        printf("Pozice %d %d = %f\n", i, j, *matrix[i][j]);
                }
        }
}
Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
KIIV
~ Moderátor
+43
God of flame
29. 9. 2011   #2
-
+1
-
Zajímavé

krom toho ze mas fixni velikost matice to vcelku jde... (ne ze by se tam dalo neco zkazit na necem tak trivialnim)

me treba odsazovani staci vzdy po dvou mezerach... cokoliv vic je uz neskutecne dlouhy, jakmile budes mit treba 10urovni zanoreni

Doporucuju dodelat:

- matice libovolne velikosti (nactes jako prvni rozmery matice, alokujes pamet, nactes data)

- predchozi zvladnout v jednorozmernem poli ( dvourozmerne je zase vetsi "challenge" :) )

- pridat nasobeni matic + kontroly jestli to jde (tj. radek prvni musi byt stejne velky jako sloupec druhe)

- pridat nasobeni matice cislem

- naprogramovat si gaussovu eliminaci (reseni N soustav o N promennych)

- vypocet jednotkove matice

- vypocet determinantu

** a speciality: **

- zvladnout to bez uniku pameti

- udelat si z toho 'kalkulacku"... tj. takovej mini interpret maticoveho matematickeho programu ( pro jednoduchost zadny slozity vyrazy...)

(a mas na nejakej cas co delat ...)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 38 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ý