[ hdamjan @ 01.06.2005. 12:10 ] @
Zna li netko ovo rijesiti, ako zna bilo bi ljepo da mi pomogne ako ima vremena!!
To mi je za seminar na faxu.I hitno mi je.

Zadatak:

10. Napisati program za manipulaciju sa tablicom veličine 10x10. Program treba imati
slijedeće opcije: upisivanje članova tablice preko konzole ili učitavanje iz
odabrane datoteke, zamjenu redova u tablici, zamjenu stupaca u tablici, zamjenu
članova unutar reda (prvi član sa mijenja sa desetim, drugi sa devetim...)i zamjenu
članova untar stupca. Kod svake operacije treba se prikazati na ekranu izgled
tablice prije i poslije promjene.

ljudi pomagajte!!!!!!!!!!!!!!!!!!!
[ itf @ 01.06.2005. 13:54 ] @
Nemam vremena da ti sve pisem, no evo ti onoliko koliko mislim da je najvaznije. Ostalo ti je malo sitno toga za napisati (dodati)...

Code:

#include <stdio.h>
#define RED 10
#define STUP 10

// ucitava tablicu sa konzole
void Konzola(int tablica[RED][STUP]){
    int i, j;

    for(i = 0; i < RED; i++)
        for(j = 0; j < STUP; j++){
            printf("Tablica[%d][%d] = ", i, j);
            scanf("%d", &tablica[i][j]);
        }
}

//ucitava tablicu iz datoteke
int Datoteka(char* dat, int tablica[RED][STUP]){
    FILE* f;
    int i, j;

    if((f = fopen(dat, "r"))==NULL)
        // ukoliko ne uspije otvoriti 
        return 0;
    for(i = 0; i < RED; i++)
        for(j = 0; j < STUP; j++)
            fscanf(f, "%d", &tablica[i][j]);
    return 1;
}

void ZamjenaRedova(int tablica[RED][STUP], int red1, int red2){
    int pom, i;

    for(i = 0; i < STUP; i++){
        pom = tablica[red1][i];
        tablica[red1][i] = tablica[red2][i];
        tablica[red2][i] = pom;
    }
}
    
void ZamjenaStupaca(int tablica[RED][STUP], int stup1, int stup2){
    int pom, i;

    for(i = 0; i < RED; i++){
        pom = tablica[i][stup1];
        tablica[i][stup1] = tablica[i][stup2];
        tablica[i][stup2] = pom;
    }
}

int main(){
    int tablica[RED][STUP] = {0}, izbor, i, j;

    printf("Ucitati elemente sa konzole (1) ili iz datoteke (2): ");
    scanf("%d", &izbor);

    if(izbor == 1)
        Konzola(tablica);
    else
        if(izbor == 2){
            if(!Datoteka("POPIS.TXT", tablica)){
                printf("Ne mogu otvoriti datoteku!");
                return -1;
            }
        }
        else
        {
            printf("Krivi izbor!");
            return -1;
        }
    printf("\n\n");
    for(i = 0; i < RED; i++){
        for(j = 0; j < STUP; j++)
            printf("T[%d][%d] = %d\t", i, j, tablica[i][j]);
    printf("\n");
    }

    // zamjena redova sa indeksima 0 i 1
    ZamjenaRedova(tablica, 0, 1);
    printf("\n\n");
    for(i = 0; i < RED; i++){
        for(j = 0; j < STUP; j++)
            printf("T[%d][%d] = %d\t", i, j, tablica[i][j]);
    printf("\n");
    }

    // zamjena stupaca sa indeksima 0 i 1
    ZamjenaStupaca(tablica, 0, 1);
    printf("\n\n");
    for(i = 0; i < RED; i++){
        for(j = 0; j < STUP; j++)
            printf("T[%d][%d] = %d\t", i, j, tablica[i][j]);
    printf("\n");
    }

    return 0;
}
[ hdamjan @ 02.06.2005. 14:10 ] @
Ej hvala na pomoci,ali mi treba u C++ a ne u C-u,sta je velika razlika u kodu,i sta bi trebao izmjeniti da ga prebacim u C++.
[ itf @ 02.06.2005. 15:26 ] @
Ma nista ne trebas mijenjati. Sve ovo radi i u C++u. Eventualno (ako bas treba) promijenis

printf sa cout (#include <iostream.h>) te
scanf sa cin

Tad koristis operatore << (cout) i >> (cin).

Za citanje iz datoteke ti se koriste tok fstream sto je klasa pa bi trebao kreirati instancu te klase ciji je arugment ime datoteke koju citas. Npr.:

fstream Citaj("DATOTEKA.TXT");

// citaj nesto iz datoteke i spremi u 'podatak'
Citaj >> podatak;

IPAK:
Nista od toga ne trebas raditi. Sve ono gore radi i u C++u. Samo iskopiraj...

[ hdamjan @ 04.06.2005. 12:04 ] @
Ok,ali sta ne bi trebao onda i dodati int i jos neke druge varijable?
[ itf @ 06.06.2005. 10:42 ] @
Ne trebas nista dodavati. C programi se uspjesno pokrecu na C++u.