Unos podataka sa tipkovnice
1. Funkcija za učitavanje podataka
Za upisivanje podataka s tipkovnice u C-u postoji nekoliko funkcija. Najčešće se koristi funkcija za formatirani upis podataka, scanf(). Njezina je sintaksa:
scanf("lista_formata", lista_varijabli);
Kao i kad je riječ o funkciji printf() u listu_formata upisuju se oznake formata za tip varijabli, a u listu_varijabli popis imena varijabli istim redoslijedom kao u popisu formata. Varijable navedene u listi međusobno se odvajaju zarezom. Budući da se u C-u njihove vrijednosti prenose preko adrese, ispred imena svake varijable treba dodati i adresni operator & (operator za dodjeljivanje adrese).
Oznake formata tipa varijabli jednake su onima koje se koriste u ispisu, ali mora se paziti kako se odvajaju u listi formata jer to određuje način unosa podataka pri izvođenju programa. Ako su oznake formata odvojene zarezom i vrijednosti varijabli se pri upisu podataka odvajaju zarezom. Ako nema zareza, vrijednosti se odvajaju razmakom.
Primjer
Linija programa
scanf("%d,%f", &a,&b);
traži od korisnika da, koristeći se tipkovnicom, upiše dva broja (jedan cijeli i jedan realni), te da ih pri upisivanju odvoji zarezom.
Zadatak 1.
Napišimo program koji učitava dva cijela broja s tipkovnice i na zaslonu ispisuje njihov zbroj. Ne zaboravite najaviti i varijable.
Rješenje
#include<stdio.h>int main()
{
int a,b;
printf("Unesi dva cijela broja ");
scanf("%d %d",&a,&b);
printf("Rezultat %d+%d je %d\n",a,b,a+b);
return 0;
}
Takav je program općenitiji. Računa vrijednosti zbroja za bilo koja dva unesena cijela broja. Varijable smo učitali s razmakom.
Zadatak 2.
Koje će vrijednosti biti pridružene varijablama a i b nakon što se izvrši ovaj blok naredbi, a nakon pokretanja upišu se redom brojevi 58, 35, 27?
main(){
int a,b;
float d;
scanf("%d,%f,%d", &b,&d,&a);
}
Napomena: U ovom isječku programa nema naredbe return 0;, pa zato nema ni riječi int u najavi funkcije main(). S obzirom na to da je ovo isječak kôda potreban da biste naučili pravilno pročitati program, ovakav je zapis ispravan!
Rješenje
a = 27
b = 58
d = 35.000000
Zadatak 3.
Što će se ispisati nakon ovog bloka naredbi?
main(){
const char a = 'A';
printf("%d",a);
}
Rješenje
Na zaslonu će se ispisati cijeli broj 65 jer je to dekadska vrijednost
znaka 'A' prema ASCII kôdu. Ako u printf()
funkciji %d zamijenimo s %c, dobit ćemo ispis slova A. Isprobajte!
Zadatak 4.
Što će se ispisati nakon ovog bloka naredbi ako se redom upišu brojevi 2814, 589 i 13?
main(){
int a,b;
float d;
scanf(″%d,%d,%f", &a,&b,&d);
printf(″%6d\n%4d\n%.2f", a,b,d);
}
Rješenje
□□2814
□589
13.00
Napomena: Kvadratići označuju prazno mjesto na zaslonu.