You are on page 1of 8

PROGRAMI SA STRUKTURAMA

1. Napisite C program u kojem se nalazi deklaracija strukture Telefon


koja prima clanove strukture za najvie 500 osoba. Imena i tipovi clanova
strukture su: prezime-char, ime-char, telefon-int. Upisati podatke za n
osoba (n upisujemo s tastature ponavljati unos sve dok nije ( 0<n<501 ),
a zatim ispisati sve podatke svih osoba ciji telefonski broj zavrsava
brojevima 321.

#include<stdio.h>

voidmain(){
int n, i;
//unos n clanova kontakata
do{
printf("Unesite broj kontakata koji zelite unijeti:");
scanf("%d", &n);
}while(n<0 || n>500);
//deklaracija strukture
struct telefon{
char prezime[20];
char ime[10];
int broj;
}kont[500];
//unos kontakata
printf("\nUnos kontakata!");
for(i=0;i<n;i++){
printf("\nUnesite podatke za %d kontakt:", i+1);
printf("\nPrezime:");
scanf("%s", kont[i].prezime);
printf("Ime:");
scanf("%s", kont[i].ime);
printf("Telefon:");
scanf("%d", &kont[i].broj);
}
//pretraga brojeva
for(i=0;i<n;i++){
if(kont[i].broj%1000==321)
printf("Kontakt %s ima zadnje 3 znamenke broja 321!\
n", kont[i].prezime);
}
}
/* 2.Napišite program koji će učitati dva kompleksna broja te ispisati
njihov zbroj
(koristiti strukturu koja će imati za članove dva realna broja – jedan
za realni,
a drugi za imaginarni dio kompleksnog broja). */

#include<stdio.h>
void main(){
struct kompbrojevi{
int a_realni;
int a_kompleksni;
}brojevi[6];
int n, i, rzbroj=0, izbroj=0;
do{
printf("Unesite koliko kompleksnih brojeva zelite:");
scanf("%d", &n);
}while(n<0 || n>6);
for(i=0;i<n;i++){
printf("Unesite realni dio %d broja:", i+1);
scanf("%d", &brojevi[i].a_realni);
printf("Unesite komp. dio %d broja:", i+1);
scanf("%d", &brojevi[i].a_kompleksni);
}
for(i=0;i<n;i++){
rzbroj+=brojevi[i].a_realni;
izbroj+=brojevi[i].a_kompleksni;
}
printf("\nZbroj unesenih kompleksnih brojeva iznosi:\nRealni %d \
nImaginarni %d\n", rzbroj, izbroj);
}
PROGRAMI SA MATRICAMA
/* 3. Napišite C program koji će s tipkovnice učitati cijele brojeve m i
n (0<n<=5 i 1<m<=4),
ponavljati unos dok uvjeti ne budu zadovoljeni. Nakon toga učitati m×n
realnih brojeva u matricu M.
Treba ispisati matricu (u obliku matrice) te izračunati i ispisati
produkt svih elemenata prvog stupca*/

#include<stdio.h>

void main(){
int M[5][4];
int m, n, i, j, prod=1;
do{
printf("Unesite broj redaka matrice:");
scanf("%d", &m);
printf("Unesite broj stupaca matrice:");
scanf("%d", &n);
}while(n<1 && m<1 || n>5 && m>4);
//unos elemenata u matricu
printf("Unos matrice mxn:\n");
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d", &M[i][j]);
}
}
//ispis matrice
printf("Matrica mxn izgleda:\n");
for(i=0;i<m;i++){
printf("\n");
for(j=0;j<n;j++){
printf("%d", M[i][j]);
printf("\t");
}
}
//produkt 1. reda
for(i=0;i<m;i++){
prod = prod * M[i][0];
}
printf("\nProdukt prvog reda je:%d\n", prod);
}
PROGRAMI SA DATOTEKAMA
/* 1)Napisati C program koji ce kreirati datoteku kupci.dat.
Program treba omoguciti upisivanje sljedeæcih podataka: ime, prezime,
adresa i broj telefona svih kupaca neke tvrtke za uvoz. */

#include<stdio.h>

void main(){

struct tvrtke{
char imetv[10] ,ime[10], prez[10];
char adresa[15];
int mob[10];
}suvoz;
int i, n;
FILE *f;
f=fopen("kupci.dat","w+");
if(f==NULL){
printf("\n Greska pri otvaranju");
}
puts("Koliko ima tvrtki?");
scanf("%d", &n);
for(i=0;i<n;i++){
printf("Unesite podatke za %d tvrtku\n", i+1);
printf("Ime tvrtke:");
scanf("%s", suvoz.imetv);
printf("Unesite ime osobe:");
scanf("%s", suvoz.ime);
printf("Unesite prezime osobe:");
scanf("%s", suvoz.prez);
printf("Unesite adresu osobe:");
scanf("%s", suvoz.adresa);
printf("Unesite broj tvrtke:");
scanf("%d", suvoz.mob);
}
fprintf (f,"%s %s %s %s %d \n", suvoz.imetv, suvoz.ime,
suvoz.prez, suvoz.adresa, suvoz.mob);
fclose(f);
}
POKAZIVACI
/* 1.Napišite C program s deklaracijom neke cjelobrojne varijable i
deklaracijom nekog pokazivaca na cjelobrojni
objekt. Cjelobrojnoj varijabli dodijelite neku vrijednost. Preusmjerite
pokazivac na cjelobrojnu varijablu.
Ispišite slijedece podatke na ekran:
a) vrijednost varijable izravno,
b) vrijednost varijable pomocu pokazivaca,
c) memorijsku adresu deklarirane varijable,
d) memorijsku adresu pokazivaca. */

#include<stdio.h>
void main(){
int x=30;
int *puke;
puke=&x;
printf("Vrijednost varijable iznosi: %d\n", x);
printf("Vrijednost varijable pomocu pokazivaca iznosi:%d\n",
*puke);
printf("Memorijska adresa deklarirane varijable iznosi:00x%d\n",
puke);
printf("Memorijska adresa pokazivaca iznosi: 00x%d\n", &puke);
}

/* 2.Napišite C program koji ce na ekran ispisati velicinu pokazivaca na


slijedece tipove podataka: char, int,
float, long, double. Za provjeru velicine memorije koju neka varijabla
zauzima u memoriji treba koristiti
operator sizeof, npr. sizeof(int*). */

#include<stdio.h>
void main(){
char *pokc;
int *poki;
float *pokf;
long *pokl;
double *pokd;
printf("Velicina memorija koju zauzima tip podataka int: %d\n",
sizeof(*poki));
printf("Velicina memorija koju zauzima tip podataka float: %d\n",
sizeof(*pokf));
printf("Velicina memorija koju zauzima tip podataka long: %d\n",
sizeof(*pokl));
printf("Velicina memorija koju zauzima tip podataka double: %d\n",
sizeof(*pokd));
printf("Velicina memorija koju zauzima tip podataka char: %d\n",
sizeof(*pokc));
}
/* 3.Napišite C program koji ce s tipkovnice ucitati n cijelih brojeva u
polje V[10]. Pristup clanovima niza, pri
ucitavanju, treba napraviti preko pokazivaca. Izracunajte i ispišite
srednju vrijednost clanova niza, ali tako
da tim clanovima pristupate preko pokazivaca. Napravite ispis sljedecih
podataka za sve clanove polja tako
da dobijete tablicu: indeks clana, vrijednost clana niza, memorijska
adresa clana niza. */

#include<stdio.h>
void main(){
int a, v[10] ,*p, i, s=0, j;
float sr;
p=&v[0];
do{
printf("Unesite broj clanova niza: ");
scanf("%d",&a);
}while(a<1||a>10);
for(i=0;i<a;i++){
printf("Unesite %d. clan niza: ",i+1);
scanf("%d",(p+i));
}for(i=0;i<a;i++){
s+=*(p+i);
}
sr=(float)s/a;
printf("Srednja vrijednost je %f \n\n",sr);
for(i=0;i<a;i++){
printf("Indeks clana %d\t Vrijednost clana %d\t Memorijska
adresa clana %d\n", i,*(p+i), p+i);
}
}
OSTALI
//1. Napisati C program koji e u zadanom stringu koji se ucita sa
tipkovnice pronaci koliko ima samoglasnika.

#include<stdio.h>
#include<string.h>

voidmain(){
int n, i, br=0;
char a[200];
printf("Unesite string:");
scanf("%s", a);
n=strlen(a);
for(i=0; i<n; i++){
if (a[i]=='A' || a[i]=='E' || a[i]=='I' || a[i]=='O' ||
a[i]=='U') br++;
if (a[i]=='a' || a[i]=='e' || a[i]=='i' || a[i]=='o' ||
a[i]=='u') br++;
}
if (br%10==1 && br!=11) printf("\nU stringu ima %d samoglasnik.\
n",br);
else printf("\nU stringu ima %d samoglasnika.\n",br);
}

// 2. Napisati C program koji ce u zadanom stringu pronaci onaj znak


koji ima najveu ASCII vrijednost. Ispisati koja je to najveca vrijednost
na ekran.

#include<stdio.h>
#include <string.h>
void main(){
int i;
char a[20], max;
printf("Unesite string:");
scanf("%s", a);
max=a[0];
for (i=0; i<strlen(a); i++)
if (max<a[i]) max=a[i];
printf ("\n");
printf ("\nNajveca ASCII vrijednost u stringu je %d od znaka %c.\
n",max,max);

You might also like