C/C++
Программирование на языке С
Поле чудес. Загаданное раннее слово выводится в виде рамки-шаблона для его отгадывания. Человек отгадывает букву или называет все слово. Реализовать процесс (при помощи строк).
/*
я буду использовать латинские буквы, так как у меня
кодировка UTF-8, а в ней русские буквы занимают по 2 байта каждая.
Если у вас кодировка windows-1251, можете использовать
русские буквы.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int razgadano(int * z, const int len)
{
for(int x = 0; x < len; x++)
if(z[x] == 0) return 0;
return 1;
}
int proverka(const char c, const char * slovo, int * z, const int len)
{
int rc = 0;
for(int x = 0; x < len; x++)
{
if(slovo[x] == c)
{
z[x] = c;
rc = 1;
}
}
return rc;
}
void show(const int * z, const int len)
{
for(int x = 0; x < len; x++)
{
printf(" - ");
}
putchar('\n');
for(int x = 0; x < len; x++)
{
putchar('|');
switch(z[x])
{
case 0:
putchar(' ');
break;
default:
printf("%c",z[x]);
break;
}
putchar('|');
}
putchar('\n');
for(int x = 0; x < len; x++)
{
printf(" - ");
}
putchar('\n');
}
int main()
{
const char zagadannoe_slovo[] = "VESNA"; /* EN */
const int len = strlen(zagadannoe_slovo);
int * z;
z = (int*) malloc(len*sizeof(int));
for(int x = 0; x < len; x++) z[x] = 0;
const char podskazka[] = "Время пробуждения природы\?";
printf("%s\n\n",podskazka);
char bukva;
char * otvet;
otvet = (char*) malloc(len * sizeof(char));
char chois;
show(z, len);
while(!razgadano(z, len))
{
printf("Хотите назвать слово сразу (введите \"y\")?\n");
scanf("%c",&chois);
getchar(); /* пропускаем содержимое буфера */
if(chois == 'y')
{
scanf("%s",otvet);
int len2 = strlen(otvet);
if(len != len2)
{
printf("Неправильное слово. \n");
}
else
{
int victory = 1;
for(int x = 0; x < len; x++)
{
if(zagadannoe_slovo[x] != otvet[x])
{
victory = 0;
break;
}
else
{
z[x] = otvet[x];
}
}
if(victory)
{
printf("Правильно! \n");
show(z, len);
}
else
{
printf("Вы не угадали. \n");
}
}
break;
}
else
{
printf("Угадайте букву: ");
scanf("%c",&bukva);
getchar(); /* пропускаем содержимое буфера */
if( ! proverka(bukva, zagadannoe_slovo, z, len) )
{
printf("Нет такой буквы! \n");
break;
}
else
{
printf("Откройте букву %c.\n", bukva);
show(z, len);
}
}
}
if(z)
{
free(z);
z = (int*) NULL;
}
else
{
return 1;
}
if(otvet)
{
free(otvet);
otvet = (char*) NULL;
}
else
{
return 1;
}
return 0;
}
я буду использовать латинские буквы, так как у меня
кодировка UTF-8, а в ней русские буквы занимают по 2 байта каждая.
Если у вас кодировка windows-1251, можете использовать
русские буквы.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int razgadano(int * z, const int len)
{
for(int x = 0; x < len; x++)
if(z[x] == 0) return 0;
return 1;
}
int proverka(const char c, const char * slovo, int * z, const int len)
{
int rc = 0;
for(int x = 0; x < len; x++)
{
if(slovo[x] == c)
{
z[x] = c;
rc = 1;
}
}
return rc;
}
void show(const int * z, const int len)
{
for(int x = 0; x < len; x++)
{
printf(" - ");
}
putchar('\n');
for(int x = 0; x < len; x++)
{
putchar('|');
switch(z[x])
{
case 0:
putchar(' ');
break;
default:
printf("%c",z[x]);
break;
}
putchar('|');
}
putchar('\n');
for(int x = 0; x < len; x++)
{
printf(" - ");
}
putchar('\n');
}
int main()
{
const char zagadannoe_slovo[] = "VESNA"; /* EN */
const int len = strlen(zagadannoe_slovo);
int * z;
z = (int*) malloc(len*sizeof(int));
for(int x = 0; x < len; x++) z[x] = 0;
const char podskazka[] = "Время пробуждения природы\?";
printf("%s\n\n",podskazka);
char bukva;
char * otvet;
otvet = (char*) malloc(len * sizeof(char));
char chois;
show(z, len);
while(!razgadano(z, len))
{
printf("Хотите назвать слово сразу (введите \"y\")?\n");
scanf("%c",&chois);
getchar(); /* пропускаем содержимое буфера */
if(chois == 'y')
{
scanf("%s",otvet);
int len2 = strlen(otvet);
if(len != len2)
{
printf("Неправильное слово. \n");
}
else
{
int victory = 1;
for(int x = 0; x < len; x++)
{
if(zagadannoe_slovo[x] != otvet[x])
{
victory = 0;
break;
}
else
{
z[x] = otvet[x];
}
}
if(victory)
{
printf("Правильно! \n");
show(z, len);
}
else
{
printf("Вы не угадали. \n");
}
}
break;
}
else
{
printf("Угадайте букву: ");
scanf("%c",&bukva);
getchar(); /* пропускаем содержимое буфера */
if( ! proverka(bukva, zagadannoe_slovo, z, len) )
{
printf("Нет такой буквы! \n");
break;
}
else
{
printf("Откройте букву %c.\n", bukva);
show(z, len);
}
}
}
if(z)
{
free(z);
z = (int*) NULL;
}
else
{
return 1;
}
if(otvet)
{
free(otvet);
otvet = (char*) NULL;
}
else
{
return 1;
}
return 0;
}
Капец, такие простые))
Я фигею, дорогая редакция))
Может еще за свой счет записать игрушку на диски и продавать в переходах, а деньги присылать вам по почте? ))
Я фигею, дорогая редакция))
Может еще за свой счет записать игрушку на диски и продавать в переходах, а деньги присылать вам по почте? ))
Похожие вопросы
- Хелпаните, кто-нибудь! Программирование на языке С/С++.
- Стоит ли начинать изучение программированию с языка C?
- Программирование на языке C++
- Программирование на языке Си
- Программирование на языке C++
- Какую тему курсовой выбрать для супер новичка программирования на языке C++?
- Программирование на языке C++. Двухмерные массивы чисел
- Нужна помощь в программировании на языке C++
- Программирование, любой язык
- Программирование на языках C/C++
const char zagadannoe_slovo[] = "VESNA"; /* EN */