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
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..
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.
ti stjepan prolazis neki kolegij preko ovog foruma ili sta???
ti stjepan prolazis neki kolegij preko ovog foruma ili sta???
// 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;
}
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..
Thnx, ispravio!
Eh, C je zeznut nakon C# i automatskog nadopunjavanja koda koji je od mene nacinio idiota - vise nista nemrem sam :)
Tracer, jel imaš možda zadataka iz C?
Bliže mi se završni ispiti a htio bi to dobro napisati.
Thnx, ispravio!
Eh, C je zeznut nakon C# i automatskog nadopunjavanja koda koji je od mene nacinio idiota - vise nista nemrem sam :)
Tracer, jel imaš možda zadataka iz C?
Bliže mi se završni ispiti a htio bi to dobro napisati.
Hvala Tracer, imaš kavu kada se sretnemo
Ovo je stranica mog kolegija, problem je što nam ne daju baš puno zadataka kojima bi mogli vježbati.
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.
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.
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!
ja taj zadatak ne kužim.......
valjda sam preglup!
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.
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!
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.

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;
}
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 :)
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).
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...
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?
Opet ja ipak hvala ne triba... napravia san ga sve ok:D
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.
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.
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.
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