» Poradna » Programy

Nasobení matic v C

 |   |  Microsoft Windows 7 Chrome 45.0.2454.101

Zdravím všechnyPotřeboval bych pomoct s programem. Potřebuji vynásobit 2 matice, ale ppořed mi to nefunguje mam v tom trochu chaos dekuji vsem za pomoc.main.c#include <stdio.h>#include <stdlib.h>#include "header.h"int main(){Tmatice matice;Tmatice matrix;Tmatice mat_vys; matrix=read2(); matice=read(); print(matice); printf("\n"); print(matrix); printf("\n"); soucin(matice,matrix); smazat(matice); printm(mat_vys); return 0;}header.h#ifndef HEADER_H_INCLUDED#define HEADER_H_INCLUDEDtypedef unsigned int uint;typedef struct matice{ double **m; int radky; int sloupce;} Tmatice;Tmatice init(int radky,int sloupce);Tmatice read();Tmatice read2();Tmatice soucin();void print(Tmatice m);void printm(Tmatice m);void smazat(Tmatice m);#endif // POLE_H_INCLUDEDfce.c#include "header.h"#include <stdio.h>#include <stdlib.h>Tmatice init(int radky,int sloupce){ double**m=malloc(radky*sizeof(double*)); for(int i=0; i<radky; i++) { m[i]=malloc(sloupce*sizeof(double)); } Tmatice matice= {.m=m,.radky=radky,.sloupce=sloupce}; return matice;}Tmatice read2(){ int radky,sloupce; FILE* f = fopen("matice2.txt","r"); Ukázat celý příspěvek

Mohlo by vás také zajímat

Odpovědi na otázku

 | Linux Firefox 41.0

Sorry, tohle fakt číst nebudu. Hoď to s normálním formátováním na pastebin. A vzhledem k faktu že jde o domácí úkol to zároveň vhodně okomentuj a sděl kde je podle tebe chyba, nebo co to dělá špatně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 41.0

resp. předpokládám že jde o domácí úkol. Jinak bys dávno použil nějakou normální knihovnu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 38.0.2103.0

Takovehle chaos ani nemá TOP09 v účtenkách

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.101

Sám jsi chaos, za tohle tazatel nemůže, tento web prostě maže mezery na začátku řídků.Kódy se postují tady:http://paste.ofcode.org/http://pastebin.com/

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 41.0

Částečně může, tapetovat tělo příspěvku celým zdrojákem prostě prasárna je nehledě na to jestli to formátuje korektně nebo ne.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 41.0

Mimochodem, teď jsem to zběžně proletěl a na formátování bych pracoval nehledě na to co ořeže poradna.>double**m=malloc(radky*sizeof(double*));Mezerník fakt není nepřítel.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 41.0

Poprvé v životě vidím - u dronika který není zcela oprávněný :D Je to nečitelný bordel.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Opera 9.80

Psát kód do poradny nejde. Je to hrozně nepřehledné. Jestli chceš pomoct tak to dej třeba na pastebin s nějakým odsazováním ať jsou na první pohled vidět cykly, podmínky, funkce - prostě kde začínají a končí. http://pastebin.com/ a dej sem odkaz.Ale tak v rychlosti tam vidím pár chyb.1) Tmatice soucin(Tmatice m)Pro násobení matic vždy potřebuješ dvě matice, které budeš násobit. Ale u té funkce máš jen jeden parametr. Chybí ti tam ta druhá matice. No a v tom kódu pro násobení taky.2) Podle kódu to vypadá na jazyk C, takže vždy a všude musíš nastavit počáteční hodnotu proměnné, protože nula to fakt být nemusí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Linux Firefox 41.0

Ono by to šlo prohnat automatickým formátováním a nějakým „beautify“ skriptem (na C++ používám Artistic style), ale přeci jen, je slušnost zadat dotaz čitelně (A s komentáři). Jinak ano, ta funkce je divná a k proměnným bez hodnoty: GCC inicializuje integer s nulovou hodnotou, ale Clang tam prskne jakýkoliv bordel co na tom místě zrovna byl v paměti.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Chrome 44.0.2403.155

nie som ziadny odborni na ce, ale neviem preco si subor kde mas implementacie nenazval 'header.c'. Ale teraz k veci, si asi prvy clovek, ktoremu sa podarilo vynasobit matice so zlozitostou O(n^2). Ak by to fungovalo daj to patentovat, na tom trhnes miliony. Matice sa nasobia nejako takto A[r][s] = B[r][k] * C[k][s].

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Matrix, Matice, Void, #include, Return, Double