Решения (задачи 200-219)
Задача 202.
// Функции getfloat и pos #include <stdio.h> iinclude <conio.h> #include <stdlib.h> #define PATHTODRIVER "c: WborlandcWbgiW" // возвращает позицию символа в строке int pos(char* st, char c) f int i = 0; while (st[i]!= с && st[i]) i++; if (St[i]) return(i+1); else return(0); // вводит дробное число float getfloat() { fdefine N 10 // кол-во символов, включая точку и минус char ch; char buf[N+l]; int i; 170 r (i = 0; i < N+l; i++) buf[i++] ='\0'; i = 0; do { ch=getch(); if (ch >= '0' && ch <= '9' && i < 8) putch(ch); buf[i++] = ch; ) else switch (ch) { case '-': if (!i) putch(ch); buf[i++] = ch; break; case '.': if (! (pos(buf, '.'))) putch(ch); buf[i++] = ch; break; case 8: if (i) printf("\b \b"); buf[ -i] = '\0'; } while (ch!= 13); return(atof(buf)); } void main(void) { float f; printf("Введите дробное число › "); f = get float (); printf("Хп Введено число %e\n", f); getch();
Задача 203.
// Игра "21" #include "stdio.h" #include "conio.h" #include "stdlib.h" // функция rand #include "time.h" // функция time int koloda[12]; int karta(); void main() // колода карт // функция "выдает" карту из колоды int igrok =0; // очки игрока int comp =0; // очки компьютера char otv; // ответ игрока time_t t; // создадим колоду for (int i=2; i <=11; i++) koloda[i] = 4; koloda[5] = 0; // "пятерок" в колоде нет // инициализация генератора случайных чисел srand((unsigned)time(it)); printf("Хп Игра в карты до хорошего не доведет!\п"); do { // карта игроку igrok += karta(); // карта компьютеру if (igrok < 21) comp += karta(); if (igrok < 21 && comp < 21) { printf("У вас %d\n",igrok); printf("Еще карточку? (введите у или п) "); otv = getchar (); // Игрок нажимает две клавиши: с буквой и Enter // предыдущий вызов getchar читает букву. // При этом в буфере клавиатуры остается код // клавиши Enter. Прочитаем его. int b; b = getchar(); } while (igrok <= 21 && comp <= 21 && otv!= 'n'); if (igrok ==21 || (igrok < 21 && igrok > comp) I| comp > 21) printf("Вы выиграли!\n"); else printf("Вы проиграли!\n"); printf ("У вас %d\n", igrok); printf ("У компьютера %d\n", comp); printf("Для завершения нажмите Enter"); getch(); // выдает карту из колоды int karta() int i; do i = rand() % 10 +2; while (koloda[i] == 0); koloda[i]– ; return i;