Zadatak u C-u

poruka: 58
|
čitano: 12.378
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
Zadatak u C-u

Napisati program u kojem korisnik unosi realnu (decimalnu) matricu maksimalne veličine 100x200 elemenata. Na početku programa korisnik bira kolika će biti stvarna dimenzija matrice. Pronaći najveće elemente svakog retka i svakog stupca matrice i ispisati ih zajedno s matricom.

Npr.
1.2 2.7 3.0 | 3.0
3.5 2.4 1.9 | 3.5
1.6 2.2 1.1 | 2.2
--- --- ---
3.5 2.7 3.0

 
0 0 hvala 0
17 godina
protjeran
offline
Zadatak u C-u

Kreneš od pojednostavljenog slučaja, a to je npr. matrica 3x5. Znači, trebati ćeš još dodatna dva jednodimenzijalna polja za spremanje max_red i max_stup vrijednosti.

 

int i, j;
double Matrica[3][5] ={1,2,3,4,5,6,7,8,9,0,1,2,3,4, 5}, MAX_RED[3], MAX_STUP[5];

for(i = 0; i < 3; i++){
    MAX_STUP[i] = Matrica[i][0];
    for(j = 1; j < 5; j++)
        if(Matrica[i][j] > MAX_STUP[i])
            MAX_STUP[i] = Matrica[i][j];
}

 

Ovaj dio koda bi trebao u polje MAX_STUP spremiti najveće elemente u pojedinim stupcima matrice. Sada ti pokušaj ovaj code modificirati tako da se njime mogu spremiti i MAX_RED vrijednosti. Ovo pišem napamet pa možda ima i grešaka, no ovo je jedan od puteva prema rješenju. Kasnije lako dodaš da se unesu dimenzije matrice itd itd..

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Zadatak u C-u

Napisati funkciju u kojoj korisnik unosi ukupan broj bodova koje su studenti ostvarili na ispitu. Unos se završava kada se unese negativan broj bodova. Funkcija vraća (pomoću pokazivača) najveći, najmanji i prosječan broj dobivenih bodova.
Napisati glavni program koji će omogućiti testiranje ispravnosti rada funkcije.

 
0 0 hvala 0
17 godina
offline
Zadatak u C-u

ti stjepan prolazis neki kolegij preko ovog foruma ili sta???

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Zadatak u C-u
sasa kaže...

ti stjepan prolazis neki kolegij preko ovog foruma ili sta???

 Ja sam riješim te zadatke sve.
Tu ih stavim da ako trebaju nekome zadaci iz C-a lako nađe.

U početku kada sam otvorio ovu temu nisam pojma imao o programiranju ali sada solidno pratim gradivo koje prolazimo.
16 godina
neaktivan
offline
RE: Zadatak u C-u

// nisam ziher za nista od napisanog, u C-u nisam radio preko 5 godina... Ali moglo bi raditi :)

 

void racunaj(float *max, float *min, float *avg) {

    float temp, sum;

    int counter = 0;

    temp = sum = *max = *min = *avg = 0;

 

    while(1) {

        printf("Unesite broj bodova: \n"); scanf("%f", &temp);

        if (counter == 0) *min = *max = temp;

 

        if  ((temp < 0) && (counter != 0)) { *avg = sum/counter; return; }

        else if ((temp < 0) && (counter ==0)) return;

        else if (temp < *min) *min = temp;

        else *max = temp; // temp > max

 

        sum = sum + temp;

        counter++;

    }

}

 

int main() {

    float max, min, avg;

    racunaj (&max, &min, &avg);

    printf("Najmanji broj bodova: ", min);

    printf("\nNajveci broj bodova: ", max);

    printf("\nProsjecni broj bodova: ", avg);

 

    return 0;

}

Poruka je uređivana zadnji put pet 20.3.2009 23:16 (Yawriats).
17 godina
protjeran
offline
Zadatak u C-u

zaboravio si da su min, max, i avg pokazivači ;)

 

zato treba ispraviti

 

temp = sum = max = min = avg = 0;

 

u

 

temp = sum = *max = *min = *avg = 0;

 

Isto, stavio si da je funkcija tipa void pa će i ova linija biti pogrešna:

 

if  ((temp < 0) && (counter == 0)) return sum/counter;

 

...nadalje zbog pokazivača treba i u ostatku koda napraviti dereferenciranje pokazivača. npr. umjesto

 

else if (temp < min) min = temp;

 

staviti

 

else if (temp < *min) *min = temp;

Ostalo nisam provjeravao..

 

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Zadatak u C-u

Thnx, ispravio!

 

Eh, C je zeznut nakon C# i automatskog nadopunjavanja koda koji je od mene nacinio idiota - vise nista nemrem sam :)

16 godina
neaktivan
offline
Zadatak u C-u

Tracer, jel imaš možda zadataka iz C?

 

Bliže mi se završni ispiti a htio bi to dobro napisati.

 
0 0 hvala 0
17 godina
protjeran
offline
RE: Zadatak u C-u
Yawriats kaže...

Thnx, ispravio!

 

Eh, C je zeznut nakon C# i automatskog nadopunjavanja koda koji je od mene nacinio idiota - vise nista nemrem sam :)

 C# koristi reference pa se lako zabuniti ;) Znam često vidjeti i naprednije programere da zaborave kod pridruživanja (operatorom =) da je riječ o referencama a ne vrijednostima varijabli.

stjepan0072 kaže...

Tracer, jel imaš možda zadataka iz C?

 

Bliže mi se završni ispiti a htio bi to dobro napisati.


U knjizi imaš rješenja svih ovih zadataka, ali u C++u. Uostalom, bitna ti je samo logika, a najmanji problem je to prebaciti u C.

Poruka je uređivana zadnji put pet 20.3.2009 23:26 (Tracer).
16 godina
neaktivan
offline
Zadatak u C-u

Hvala Tracer, imaš kavu kada se sretnemo    Namigiva

 

Ovo je stranica mog kolegija, problem je što nam ne daju baš puno zadataka kojima bi mogli vježbati.

 
0 0 hvala 0
16 godina
neaktivan
offline
Zadatak u C-u

Napisati funkciju: char *substr(char *niz, int start, int end), koja će vratiti pokazivač na novi niz koji se dobiva kao podniz zadanog niza, koji počinje s elementom start i završava s elementom end. Prilikom deklaracije novog niza, koristiti ključnu riječ 'static'. Napisati glavni program koji će omogućiti testiranje funkcije.

 
0 0 hvala 0
17 godina
offline
RE: Zadatak u C-u
stjepan0072 kaže...

Napisati funkciju: char *substr(char *niz, int start, int end), koja će vratiti pokazivač na novi niz koji se dobiva kao podniz zadanog niza, koji počinje s elementom start i završava s elementom end. Prilikom deklaracije novog niza, koristiti ključnu riječ 'static'. Napisati glavni program koji će omogućiti testiranje funkcije.



for (int k = start; k < end; ++k)
 novi[k - start] = niz[k];
novi[k] = '\0'

Neznam koliko je pametno imati statičan niz, jer će se nakon sljedećeg poziva prebrisati trenutna verzija... ali ako zadatak kaže, napravi tako :)
16 godina
neaktivan
offline
Zadatak u C-u

Pridružujen se svome kolegi i moli bih samo da mi objasnite šta bi točno zadatak ovaj šta je stjepan napisao trebao raditi jer ja iman dvije opcije na umu: 1. da unaprijed unesemo "koordinate" prvog člana tj. vrijednost i zadnjeg člana i onda izdvojimo niz ili

                         2. da unesemo simbol prvog i zadnjeg člana i izdvojimo niz

 

 

Mislim da bi gospon tracer znao bi objasniti pa ako mu nije teško:D

Hvala na odgovoru!

 
0 0 hvala 0
17 godina
offline
RE: Zadatak u C-u
Funkcija naravno uzima indekse slova. Nema puno smisla imati funkciju koja bi uzimala slova jer može biti više istih slova u stringu (npr. "aaa").

A to si mogao i sam zaključiti pogledom na prototip funkcije - zašto bi se uzimale int vrijednosti da se radi o slovima?
16 godina
neaktivan
offline
Zadatak u C-u

ja taj zadatak ne kužim.......

valjda sam preglup!

 
0 0 hvala 0
17 godina
offline
Zadatak u C-u

U čemu je problem?

 

Substring je dio stringa određen početnim i završnim indeksom (ili početnim indeksom i duljinom).

 

Npr. substring niza "abcdef" s početnim indeksom 1 i duljinom 2 je "bc" (indeksi počinju od 0). Ta funkcija treba napraviti taj substring. Ustvari, prilično trivijalna radnja.

 
0 0 hvala 0
16 godina
neaktivan
offline
RE: Zadatak u C-u

A sorry kume fala puno... doduše nisan ni pogleda da se uzimaju int vrijednosti :D legenda si imaš konjak :D

ma ono malo san bia brzoplet pa reko gledan...

Fala još jednon!

17 godina
protjeran
offline
RE: Zadatak u C-u
itf4n kaže...
stjepan0072 kaže...

Napisati funkciju: char *substr(char *niz, int start, int end), koja će vratiti pokazivač na novi niz koji se dobiva kao podniz zadanog niza, koji počinje s elementom start i završava s elementom end. Prilikom deklaracije novog niza, koristiti ključnu riječ 'static'. Napisati glavni program koji će omogućiti testiranje funkcije.



for (int k = start; k < end; ++k)
 novi[k - start] = niz[k];
novi[k] = '\0'

Neznam koliko je pametno imati statičan niz, jer će se nakon sljedećeg poziva prebrisati trenutna verzija... ali ako zadatak kaže, napravi tako :)
Malo si pomješao stvari Osmijeh Ključna riječ static (koja se traži u zadatku) u ovom slučaju neće reći da je niz statičan tj. lokalan u funkciji pa da se stalno briše, već upravo suprotno: napraviti će taj niz globalnim i on će zapravo uvijek biti postojan;

#include <stdio.h>

char *substr(char *niz, int start, int end){
    int i;
    static char pom[100] = {0};

    for(i = start; i < end; i++)
        pom[i-start] = niz[i];
    return &pom[0];
}
int main()
{
    char tekst[100] = "Ovo je nekakav tekst!";
    char* novi_tekst = substr(tekst, 3, 10);

    printf("%s", novi_tekst);
    return 0;
}

..i sada sve radi.
Poruka je uređivana zadnji put pet 27.3.2009 9:51 (Tracer).
17 godina
offline
Zadatak u C-u

Eh, ali će se kod sljedećeg poziva te funkcije prebrisati trenutna verzija - pa se dobiveni string mora prekopirati prije nego što se 2. put pozove... na to sam mislio :)

 
0 0 hvala 0
17 godina
protjeran
offline
Zadatak u C-u

Naravno. U pravilu static ovdje nema nikakvu realnu namjenu i može se bez njega, ali ne smije se mješati statičke objekte koji idu na stog (pa se i brišu kada funkcija završi s radom) i statičke varijable neke funkcije koje su zapravo globalne varijable i ne uništavaju se izlaskom iz funkcije. Eventualno se mogu samo prepisati (kao u gornjem slučaju).

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Zadatak u C-u

Ovaj zadatak gore ne radi i ne znan radi čega a ni moj isto koji san sam napravio... da li znate u čemu bi mogao bit problem javlja mi segmentation fault...

16 godina
neaktivan
offline
RE: Zadatak u C-u

Točnije zašto ne radi ako zasebno deklariran prvo pokazivač u koji ću učitat vrijednost funkcije pri deklaraciji...? Pa zatim izjednačim pokazivač s tom vrijednosti?

16 godina
neaktivan
offline
RE: Zadatak u C-u

Opet ja ipak hvala ne triba... napravia san ga sve ok:D

16 godina
neaktivan
offline
Zadatak u C-u

Napisati funkciju koja će generirati lozinku zadane duljine. Memorija za lozinku alocira se dinamički. Prototip funkcije je: char *password(int)

Postupak za generiranje svakog od znakova lozinke:
a) generirati slučajni broj u intervalu 1-3
b) ako je pod (a) dobiven broj:
1: trenutni znak se mora postaviti kao slučajno odabrano malo slovo engleske abecede;
2: trenutni znak se mora postaviti kao slučajno odabrano veliko slovo engleske abecede;
3: trenutni znak se mora postaviti kao slučajno odabrana znamenka 0-9

Napisati glavni program koji će omogućiti testiranje ispravnosti rada funkcije.

 
0 0 hvala 0
17 godina
offline
RE: Zadatak u C-u
stjepan0072 kaže...

Napisati funkciju koja će generirati lozinku zadane duljine. Memorija za lozinku alocira se dinamički. Prototip funkcije je: char *password(int)

Postupak za generiranje svakog od znakova lozinke:
a) generirati slučajni broj u intervalu 1-3
b) ako je pod (a) dobiven broj:
1: trenutni znak se mora postaviti kao slučajno odabrano malo slovo engleske abecede;
2: trenutni znak se mora postaviti kao slučajno odabrano veliko slovo engleske abecede;
3: trenutni znak se mora postaviti kao slučajno odabrana znamenka 0-9

Napisati glavni program koji će omogućiti testiranje ispravnosti rada funkcije.

 
I, gdje si zapeo?

btw, gotovo sigurno nije taj interval
16 godina
neaktivan
offline
Zadatak u C-u

Napisati program koji:
a) unosi polje cijelih brojeva
b) unosi polje decimalnih brojeva dvostruke točnosti
c) zapisuje oba polja u binarnu datoteku "polja"
d) na kraj datoteke zapisuje duljine polja
Veličine polja mogu biti različite i unose se na početku programa.

Napisati drugi program, koji će učitati iz datoteke "polja" cijelo i decimalno polje nepoznate duljine (duljine pročitati s kraja datoteke) te ih ispisati na ekran.

 
0 0 hvala 0
16 godina
neaktivan
offline
Zadatak u C-u

ZADATAK: treba napisati program koji ce sadrzavati osnovne hidraulicke formule.
kada korisnik ude u program mora zadati odredene vrijednosti koje su mu poznate te program treba izracunati rezultat
 (npr. U=R*I korisnik zadaje R i I a program racuna U)
 program mora sadrzavati sljedece formule

(P=W/t ; t=w/P ; w=P*t ), ( p=F/A ; A=F/p ; F=p*A)

 

eto ako ko zna rjesit ili ima kakvih ideja nek mi javi ja sam nesto malo pocea pa je zapelo kod upisivanja formula

 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice