/****************************************
*
*   C/C++ vaja X_1
*
*    utrjevanje /1
*
*/
 
1. Naloga
 
Dana je deklaracija :
 
struct NehomogenaSestavljena {
   int a,b,c;
   char d,e,f;
};
 
Kakšen je pomen zgornje deklaracije :
        a) podatkovni tip,
 
Rešitev:
 
   Pomen zgornje deklaracije, kot podatkovni tip je pravilna, vendar nimamo potem nobene spremenljivke tega tipa.
 
        b) sprememnljivka.
Rešitev:
 
  Pomen zgornje deklaracije, kot spremenljivka ne pride v poštev, ker nimamo deklarirane spremenljivke za podano strukturo.
 
2. Naloga
 
Deklarirajte strukturo, ki bo vsebovala podatkovni element (polje) celoštevilskega in
podatkovni element (polje) neceloštevilskega tipa. Dopišite program, ki bo inicializiral
sprememnljivko narejenega tipa in izpisal njene vrednosti.
 
Rešitev:
 
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
int main(void){
 struct neki{
   int a;
   float f;} n;
clrscr();   
  n.a=3343;
  n.f=434.43;
 cout<<n.a<<n.f;
 getch();
 return 0;
 }
 
3. Naloga
 
Deklarirajte podatkovne tipe :
  a) nepredznačeno NceloStevilo
  b) tabelo zankov velikosti 32
  c) realno število
 
 
Rešitev:
 
a) struct NceloStevilo {
  unigned float f;
}n1;
 
b) struct tabela {
  char tab[31];
} t1;
 
c) struct ralnostevilo{
 float f;
} f1;
 
 
4. Naloga
 
Dana je deklaracija :
 
struct xyz{
    unsigned int a;
    char c[32];
} a, tab[22];
 
a) Kaj predstavljata deklaraciji 'a' in 'tab[22]' ?
 
Rešitev:
 
A predstavlja spremenljivko tipa xyz, tab[22] pa predstavlja tabelo z 23 znaki tipa xyz.
 
b) Inicializirajte 'a' in 'tab' z naključnimi vrednostmi.
 
Rešitev:
 
a.a=3456;
tab[22].c[32]='A';
 
c) Katera od naslednjih deklaracij sprememnljivke je enaka deklaraciji 'a' ?
     c1) struct xyz  b1;
     c2) xyz b1;
     c3) typedef xyz b1;
     c4) typedef b1 struct xyz;
 
Rešitev:
 
 c1 in c3
 
d) Napišite C/C++ program, ki bo preštel število črk 'A' in 'a' v 'tab[22]', če je
   ta inicializirana kot v nalogi 4b) .
 
Rešitev:
 
????
 
5. Naloga
 
Katere od naslednjih predstavljajo deklaracijo funkcije in katere prototipa funkcije (
vnaprejšnje deklaracije) :
 
        a) void a();
        b) int *vneki(){return null;}
        c) void afna(){}
        d) int a(int,char,int);
 
Rešitev:
 Funkcije predstavljajo nasljedne deklaracije: a in c
 Prototip funkcije pa b in d 
 
6. Naloga
 
Ugotovite, če je naslednja deklaracija pravilna, popravite v nasprotenem primeru :
 
int funkcija()
       int b=33;
       int c=c+2*b;
       funkcija=c;
}
 
Rešitev:
 
Int funkcija() {
    Int b=33;
    Int c=c+2*b;
   Return(c);
}
 
7. Naloga
   Napišimo funkcijo, ki vrača vrednost vsote podanih parametrov :
 
   int vsota(int a,b){
    
       vsota=a+b;
       return vsota;
 
   }
   
   Odpravite napake in usposobite funkcijo za delovanje.
   Napišite tudi klic zgornje funkcije.    
 
Rešitev:
 
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
  int vsota(int a, int b){
      return(a+b);
    }
 int main (void){
 clrscr();
 vsota(4,6);
  cout<<vsota;
getch();
}
 
8. Naloga
 
   Dana sta podprograma :
 
   void nekaj1(){
    printf("v prvi\n");
    nekaj2();
   }
 
   void nekaj2(){
    printf("....v drugi\n");
   }
   in glavna funkcija C-jevskega programa :
 
   void main(){
     nekaj1();
   }
 
  Ugotovite, zakaj program ne deluje in ga popravite tako, da se bo lahko izvedel.
 
Rešitev:
 
#include<stdio.h>
#include<iostream.h>
    void nekaj2(){
    printf("....v drugi\n");
   }
    void nekaj1(){
    printf("v prvi\n");
    nekaj2();
   }
  void main(){
     nekaj1();
   }
 
9. Naloga
 
  Zaželeli smo napisati program, z vsebovanima podprogramoma, ki kličeta drug drugega.
  Napisali smo naslednje :
 
  void nekaj1(){
    i++;
    printf("v prvi\n");        Kaj je potrebno v programu postoriti, da se
    if (i<10)                   bo program izvedel ?
       nekaj2();
   }
 
   void nekaj2(){
    i++;
    printf("....v drugi\n");
    if (i<10)
       nekaj1();
   }
 
   void main(){
     int i=0;
     nekaj1();
   }
 
Rešitev:
 
#include<stdio.h>
#include<iostream.h>
 void nekaj2(){
    int i;
    i++;
    printf("....v drugi\n");
    if (i<10)
       nekaj1();
   }
 void nekaj1(){
    i++;
    printf("v prvi\n");        
    if (i<10)                  
       nekaj2();
   }
   void main(){
     int i=0;
     nekaj1();
   }