Быки и коровы - C (СИ)
Формулировка задачи:
Помогите связать и доделать..пока без графики.
первая часть:
в этой части, программа загадывает число, мы( пользователь) его угадываем, только мы должны угадывать число которое загадала программа, пока не угадаем. а тут если 1 раз не правильно ввели то нас выкидывает.если зациклить циклом do.... while тогда если мы с первого раза не угадали, тогда программа новое число загадывает.. а нужно его за определенное количество попыток угадать.
2 кусок кода.что бы сравнивать сколько быков и коров, я решила массив перевести в строку и из строки поэлементно сравнивать, вот что получилось.
3 кусок, проверяем позиции.
Помогите пожалуйста довести до ума, сзязать это в одно, и вообще до конца закончить.. что бы выводилось сколько быков, сколько коров. по идее куски правильно составлены. только я их не могла проверить, так как ошибки компилятор выдает из за неправленого поставления алгоритма.
пишу на Borland C++.
#include <stdio.h> #include <conio.h> #include <stdlib.h> int main () { clrscr();randomize(); int r, m[4], a[4], x, c, i=0; do { r=random(10); for (int j=0; j<i; j++) if (r==m[j]) r=-1; if (r==-1) continue; m[i++]=r; printf("%d", m[i-1]); }while (i < 4); printf("\n"); scanf ("%i",&x); c = 1; for (i=0; i<4; i++){ a[3-i]=x % 10; x/=10; } for (i=0; i<4; i++) if (!(m[i]==a[i])){ c=0; break; } if (!c){ printf("\nerror\n"); } getch(); return 0; }
int a[4], m[4]; char s[5], s2[5]; for ( int i=0; i<5; i++) { s[i] =char a[i] }
for (i=0 ; i<5 ; i++){ if (s[i]=s2[i]) { n++; printf ( "%c", s [i])}
Решение задачи: «Быки и коровы»
textual
Листинг программы
#include<stdio.h> #include<conio.h> #include <stdlib.h> int main (){clrscr(); randomize(); int k, m[4], a[4], x, c, i=0, *bull, *cow; char M[5], A[5]; // машина генерирует четырехзначное не повторяющее число do { k=random(10) ; for (int j=0; j<i; j++) if (k==m[j]) k=-1; if (k==-1) continue ; m [i++] = k; printf ("%d", m[i-1]); } while (i < 4); printf ("\n"); for ( i = 0; i < 4; i++) { scanf ("%d", a+1); M[i] = m[i] +'0';} //мы вводим scanf ("%i", & x); c=1; for (i = 0; i < 4; i++){ a [3-i] = x % 10; x /=10; } for ( i = 0; i < 4; i++) { scanf ("%d", a+i); A[i] = a[i] +'0';} // ранее перевели массивы в строки. теперь сравниваем строки for (i = 0; i < 4; i++) for (int j = 0; j < 4; j++) if ( M[i] == A[i] ) { if ( i == j) bull++; else cow++; } // выводим printf ("\n%c\n%c\nresult: %d %d\n", M, A, *bull, *cow); getch (); return 0; }
Объяснение кода листинга программы
Вот что делает код:
- Генерирует четырехзначное уникальное число:
- Переменная
k
инициализируется случайным четырехзначным числом от 1000 до 9999 с помощью функцииrandom()
. - Число проверяется на уникальность, и если оно уже было использовано, генерируется новое число.
- Число выводится на экран.
- Переменная
- Переводит числовое значение в строку и сравнивает его со введенным числом:
- Четырехзначное число, введенное пользователем, преобразуется в массив целых чисел.
- Каждое число в массиве преобразуется в строку с помощью символа ASCII.
- Сравниваются пары строк, и если они совпадают, увеличивается счетчик
bull
(бык). Если строки не совпадают, увеличивается счетчикcow
(корова).
- Выводит результат:
- На экран выводятся исходная и преобразованная строки.
- Выводится количество совпадений (быков) и количество различий (коров).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д