Korisnički Kontrolni Panel
Pogledajte svoj profil
Pogledajte svoje postove
ČPP
Prijavite se

Matematički forum na kojem možete da diskutujete o raznim matematičkim oblastima, pomognete drugima oko rešavanja zadataka, a i da dobijete pomoć kada vam zatreba


















Index stranica OSTALE MATEMATIČKE OBLASTI MATEMATIKA U INFORMATICI MATEMATIKA U PROGRAMIRANJU

[C] Sabiranje proizvoljnog broja kvadratnih matrica

[C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod display_error » Utorak, 22. Septembar 2015, 22:54

Kako sabrati proizvoljan broj matrica?
Korisnik treba da unese broj matrica i nihove elemente.
Program ispisuje matricu zbira [inlmath]n[/inlmath] matrica.

Može li neko može da pregleda moj kod pošto imam i nekih sintaksnih grešaka, i kodom da pokaže kako sabrati matrice:

Kôd: Obeleži sve
#include<stdio.h>
#include<stdlib.h>
#define MAX 10

typedef struct
{
    int **matrica;
    int format;
}MATRICA;

void citaj_matricu(MATRICA *pm)
{
    do
    {
        printf("format=");
        scanf("%d",&pm->format);
    }
    while(pm->format < 1 || pm->format > MAX);
    pm->matrica=(int **)calloc(pm->format,sizeof(int *));
    int i,j,b=0;
    for(i=0;i<pm->format;i++)
    {
        pm->matrica[i]=(int *)calloc(pm->format,sizeof(int));
        for(j=0;j<pm->format;j++,b++)
            pm->matrica[i][j]=b;
    }
    for(i=0;i<pm->format;i++)
    for(j=0;j<pm->format;j++)
    {
        printf("mat[%d][%d]",i,j);
        scanf("%d",&pm->matrica[i][j]);
    }
}

void zbir(MATRICA *niz,int *n,MATRICA *rez)
{
    do
    {
        printf("broj matrica:");
        scanf("%d",n);
    }
    while(*n < 1);
    niz=(MATRICA *)malloc(*n * sizeof(MATRICA));
    rez=(MATRICA *)malloc(rez->format *sizeof(MATRICA));
    int i;
    for(i=0;i<*n;i++)
    {
        /*SABIRANJE???*/
    }
}

void ispis(MATRICA *pm)
{
    int i,j;
    for(i=0;i<pm->format;i++){
        for(j=0;j<pm->format;j++){
                printf("%d\t",pm->matrica[i][j]);
        }
    printf("\n");
    }
}

void obrisi(MATRICA *pm)
{
    int i;
    for(i=0;i<pm->format;i++)
        free(pm->matrica[i]);
}

int main()/*problem sa dinamickom alokacijom */
{
    MATRICA *niz;
    MATRICA *rez;
    int i,n;
    for(i=0;i<n;i++)
    {
        printf("%d. matrica:",i+1);
        citaj_matricu(niz+i);
    }
    zbir(niz,&n,rez);
    ispis(rez);
    for(i=0;i<n;i++)
        obrisi(niz+i);
    free(niz);
    free(rez);
    return 0;
}

Hvala.
 
Postovi: 61
Zahvalio se: 18 puta
Pohvaljen: 3 puta

Sharuj ovu temu na:

Share on Facebook Facebook Share on Twitter Twitter Share on MySpace MySpace Share on Google+ Google+

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod Miladin Jovic » Sreda, 23. Septembar 2015, 21:27

Dakle, unosi se broj matrica. Obeležimo ga sa [inlmath]n[/inlmath]. Sve te matrice, da bi se mogle sabirati, moraju biti istog tipa. Kako znamo tip matrica? Da li se i tip unosi sa tastature?
Zaslužni forumaš
 
Postovi: 378
Zahvalio se: 243 puta
Pohvaljen: 138 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod display_error » Sreda, 23. Septembar 2015, 22:24

@Miladin Jovic

Pored broja matrica unosi se i dimenzija svake, kao i elementi.
Matrice su kvadratne i da bi se mogle sabrati podrazumeva se da budu istog formata.
 
Postovi: 61
Zahvalio se: 18 puta
Pohvaljen: 3 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod Miladin Jovic » Četvrtak, 24. Septembar 2015, 11:25

Da li moramo koristiti dinamičku alokaciju memorije? Ako nije obavezno koristiti dinamičku alokaciju, mogu postaviti moje rešenje.
Zaslužni forumaš
 
Postovi: 378
Zahvalio se: 243 puta
Pohvaljen: 138 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod Miladin Jovic » Četvrtak, 24. Septembar 2015, 12:45

Uradio sam na dva načina, evo ovog koji koristi i jedan i drugi način alokacije memorije

Kôd: Obeleži sve
#include<stdio.h>
#include<stdlib.h>
void Ucitaj(int tip,int *a[tip])
{
    int i,j;
    for(i=0;i<tip;i++)
        for(j=0;j<tip;j++)
        {
            printf("Unesite clan:");
            scanf("%d",&a[i][j]);
        }
}

void Sumiraj(int tip,int *suma[],int *a[])
{
    int i,j;
    for(i=0;i<tip;i++)
        for(j=0;j<tip;j++)
    suma[i][j]+=a[i][j];
}

int main()
{
    int n,tip; /* n broj matrica, tip dimenzija kvadratne matrice */
    printf("Unesite broj matrica:");
    scanf("%d",&n);
    printf("Unesite tip matrice:");
    scanf("%d",&tip);
    int* a[tip]; /* matrica u koju ucitavamo*/
    int* suma[tip]; /* matrica koja cuva sumu*/
    int i;
    for(i=0;i<tip;i++)
    {
        suma[i]=(int*)calloc(tip,sizeof(int));
        a[i]=(int*)malloc(tip*sizeof(int)); /*alociranje i postavljanje matrice koja cuva sumu na nula matricu*/
    }
    for(i=1;i<n;i++)
    {
        printf("Unesite %d. matricu:\n");
        Ucitaj(tip,a);
        Sumiraj(tip,suma,a);
    }
    int j;
    for(i=0;i<tip;i++)
    {
        for(j=0;j<tip;j++) printf("%d ",suma[i][j]);
        free(suma[i]);
        putchar('\n');
    } /* stampanje matrice */
    return 0;
}

Verovatno to sve može i bolje i kraće. Ovde stvarno ne vidim potrebu da se koriste strukture kao matrice. Da li je to možda u uslovu zadatku izričito rečeno?
Zaslužni forumaš
 
Postovi: 378
Zahvalio se: 243 puta
Pohvaljen: 138 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod display_error » Četvrtak, 24. Septembar 2015, 12:54

@Miladin Jovic

Hvala na odgovoru.
 
Postovi: 61
Zahvalio se: 18 puta
Pohvaljen: 3 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod display_error » Četvrtak, 24. Septembar 2015, 13:04

@Miladin Jovic

Program ti ne radi.
 
Postovi: 61
Zahvalio se: 18 puta
Pohvaljen: 3 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod Miladin Jovic » Četvrtak, 24. Septembar 2015, 13:24

U čemu je problem? Kod mene prolazi kompajliranje, i rade mi test primeri. Ako nije greška u kompajliranju, daj mi test primer koji si probao.
Zaslužni forumaš
 
Postovi: 378
Zahvalio se: 243 puta
Pohvaljen: 138 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod display_error » Četvrtak, 24. Septembar 2015, 14:35

Program samo ispiše jednu matricu koju učitam, bez obzira na uneti broj.
 
Postovi: 61
Zahvalio se: 18 puta
Pohvaljen: 3 puta

Re: [C] Sabiranje proizvoljnog broja kvadratnih matrica

Postod Miladin Jovic » Četvrtak, 24. Septembar 2015, 14:48

Miladin Jovic je napisao:
Kôd: Obeleži sve
....
int main()
{
    int n,tip; /* n broj matrica, tip dimenzija kvadratne matrice */
    printf("Unesite broj matrica:");
    scanf("%d",&n);
    printf("Unesite tip matrice:");
    scanf("%d",&tip);
    int* a[tip]; /* matrica u koju ucitavamo*/
    int* suma[tip]; /* matrica koja cuva sumu*/
    int i;
    for(i=0;i<tip;i++)
    {
        suma[i]=(int*)calloc(tip,sizeof(int));
        a[i]=(int*)malloc(tip*sizeof(int)); /*alociranje i postavljanje matrice koja cuva sumu na nula matricu*/
    }
    for(i=1;i<n;i++) /*OVDE TREBA <= , IZOSTAVIO SAM PRI PREKUCAVANJU */
    {
        printf("Unesite %d. matricu:\n");/*OVDE TREBA i zbog %d. */
        Ucitaj(tip,a);
        Sumiraj(tip,suma,a);
    }
    int j;
    ....
Zaslužni forumaš
 
Postovi: 378
Zahvalio se: 243 puta
Pohvaljen: 138 puta

Sledeća

Povratak na MATEMATIKA U PROGRAMIRANJU

Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 14 gostiju

cron

Index stranicaTimObriši sve kolačiće boarda
Danas je Četvrtak, 28. Mart 2024, 20:14 • Sva vremena su u UTC + 1 sat
Pokreće ga phpBB® Forum Software © phpBB Group
Prevod – www.CyberCom.rs