BPC2 ZÁPOČTOVÝ TEST PROSÍM ČTĚTE!!!! Příklady jsou zpracovány tak aby bylo možné je odzkoušet v programu Microsoft Visual C++ jako konzolovou aplikaci. Všechny příklady jsou 100% funkční. V červeném rámečku je část programu, která stačí vypsat do testu. Za vzniklé škody nenese autor zodpovědnost! 1. Pokladna na čerpací stanici ukládá do řádků pole float money[3][100] údaje o tom, kolik jednotliví zákazníci zaplatili za natankovanou naftu (31 Kč/l), natural 95 (33 Kč/l) a natural 98 (35 Kč/l). Za hodnotou posledního nákupu je vždy uloženo záporné číslo. Vytvořte program, který vypočítá počet prodaných litrů každého paliva. 5 b. (NENÍ MI ÚPLNĚ JASNÉ ZADÁNÍ beru v úvahu, že na první řádku je útrata za naftu, na druhém za natural 95 a na třetím za natural 98) float money[3][100]; float nafta=0, nat95=0, nat98=0; int n=0; money[0][0] = 350; money[0][1] = 210; money[0][2] = 880; money[0][3] = 695; money[0][4] = -1; money[1][0] = 1350; money[1][1] = 1210; money[1][2] = 1880; money[1][3] = 1695; money[1][4] = -1; money[2][0] = 985; money[2][1] = 1011; money[2][2] = 859; money[2][3] = 1244; money[2][4] = -1; while(money[0][n] >= 0) nafta += money[0][n]; n++; n=0; while(money[1][n] >= 0) nat95 += money[1][n]; n++; n=0; while(money[2][n] >= 0) nat98 += money[2][n]; n++; printf("prodano %5.2f litru nafty. \n", nafta/31); printf("prodano %5.2f litru naturalu 95. \n", nat95/33); printf("prodano %5.2f litru naturalu 98. \n", nat98/35);
2. Deklarujte stůj vlastní datový typ TVector pole pěti racionálních čísel. Deklarujte proměnné A a B tohoto typu a v deklarační části je naplňte daty. Vytvořte funkci, která vypočte skalární součin vektorů (a 1 b 1 + a 2 b 2 + a 3 b 3 + ). Výsle-dek násobení vypište do konzolového okna. 5 b. typedef float TVector[5]; float soucin(tvector A, TVector B) int n; float vysl = 0; for(n=0; n<5; n++) vysl += A[n]*B[n]; return vysl; TVector A = 6, 4, 8, 3, 2; TVector B = 3, 5, 7, 9, 1; float vysl; vysl = soucin(a, B); printf("skalarni soucin vektoru A a B je %5.2f", vysl);
3. Napište program, který z klávesnice postupně načte dvě celá čísla a, b a jeden znak (+,, *, /). Vypočítejte odpovídající výraz (a+b, a b, ) a výsledek vypište do konzolového okna. 5 b. char znak = '0'; int a, b; while(znak!= 'k') printf("\nzadejte prvni cislo: "); scanf("%d", &a); printf("\nzadejte druhe cislo: "); scanf("%d", &b); printf("\nzadejte operaci(+,-,*,/,k-konec): "); scanf("%c", &znak); switch(znak) case '+': printf("\nvysledek scitani je: %d", a+b); case '-': printf("\nvysledek odcitani je: %d", a-b); case '*': printf("\nvysledek nasobeni je: %d", a*b); case '/': printf("\nvysledek deleni je: %d", a/b);
4. V poli znaků char words[5][21] každý řádek odpovídá jednomu slovu. Seřaďte slova podle abecedy. V úvahu berte pouze první písmeno slova. 5 b. int i, n, x; char words[5][21]; char pom; words[3][0] = 'b'; words[3][1] = 'u'; words[3][2] = 'b'; words[3][3] = 'a'; words[3][4] = 'k'; words[3][5] = '\0'; words[1][0] = 'a'; words[1][1] = 'h'; words[1][2] = 'o'; words[1][3] = 'j'; words[1][4] = '\0'; words[4][0] = 'c'; words[4][1] = 'a'; words[4][2] = 'u'; words[4][3] = '\0'; words[0][0] = 'n'; words[0][1] = 'i'; words[0][2] = 'c'; words[0][3] = '\0'; words[2][0] = 't'; words[2][1] = 'e'; words[2][2] = 's'; words[2][3] = 't'; words[2][4] = '\0'; for(i=0; i<5; i++) for(n=0; n<4; n++) if(words[n][0] > words[n+1][0]) for(x=0; x<21; x++) pom = words[n][x]; words[n][x] = words[n+1][x]; words[n+1][x] = pom; for(n=0; n<5; n++) for(i=0; i<21; i++) if(words[n][i]!= '\0')
printf("%c", words[n][i]); else i = 21; printf("\n");
5. Vytvořte funkci s hlavičkou void cz2en(char *cz, char *en), která v řetězci cz (číslo s desetinnou čárkou) najde čárku, nahradí ji tečkou a uloží do řetězce en. Pokud číslo desetinnou čárku neobsahuje, jsou řetězce cz a en totož-né. Funkci cz2en volejte v hlavním programu, výsledek zobrazte v konzolovém okně. 4 b. #include "string.h" char cz[30] = "12.10"; char en[30]; void cz2en(char *cz, char *en) int n; for(n=0; n<strlen(cz); n++) if(cz[n] == ',') cz[n] = '.'; strcpy(en, cz); cz2en(cz, en); printf("%s", en);
6. Deklarujte strukturu t_pivo, která obsahuje řetězec name s názvem piva a racionální proměnnou price s cenou piva. Napište funkci, která vrátí ukazatele na dynamickou proměnnou typu t_pivo a vytvořené paměťové místo naplní daty. Funkci volejte v hlavním programu s parametry Starobrno Medium a 12.50. 4 b. #include "string.h" #include "stdlib.h" typedef struct t_pivo char name[20]; float price; a_pivo; typedef t_pivo* t_pole[20]; t_pivo* add(char *a_name, float a_price) t_pivo *A; A = (t_pivo*) malloc(sizeof(t_pivo)); strcpy(a->name, a_name); A->price = a_price; return A; int count=0; t_pole zaznam; zaznam[count++] = add("starobrno Medium", 12.50);