Быки и коровы - 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;
}
в этой части, программа загадывает число, мы( пользователь) его угадываем, только мы должны угадывать число которое загадала программа, пока не угадаем. а тут если 1 раз не правильно ввели то нас выкидывает.если зациклить циклом do.... while тогда если мы с первого раза не угадали, тогда программа новое число загадывает.. а нужно его за определенное количество попыток угадать. 2 кусок кода.что бы сравнивать сколько быков и коров, я решила массив перевести в строку и из строки поэлементно сравнивать, вот что получилось.
int a[4], m[4];
char s[5], s2[5];
for ( int i=0; i<5; i++) { s[i] =char a[i] }
3 кусок, проверяем позиции.
for (i=0 ; i<5 ; i++){ if (s[i]=s2[i]) { n++; printf ( "%c", s [i])}
Помогите пожалуйста довести до ума, сзязать это в одно, и вообще до конца закончить.. что бы выводилось сколько быков, сколько коров. по идее куски правильно составлены. только я их не могла проверить, так как ошибки компилятор выдает из за неправленого поставления алгоритма. пишу на Borland C++.

Решение задачи: «Быки и коровы»

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;
  }

Объяснение кода листинга программы

Вот что делает код:

  1. Генерирует четырехзначное уникальное число:
    • Переменная k инициализируется случайным четырехзначным числом от 1000 до 9999 с помощью функции random().
    • Число проверяется на уникальность, и если оно уже было использовано, генерируется новое число.
    • Число выводится на экран.
  2. Переводит числовое значение в строку и сравнивает его со введенным числом:
    • Четырехзначное число, введенное пользователем, преобразуется в массив целых чисел.
    • Каждое число в массиве преобразуется в строку с помощью символа ASCII.
    • Сравниваются пары строк, и если они совпадают, увеличивается счетчик bull (бык). Если строки не совпадают, увеличивается счетчик cow (корова).
  3. Выводит результат:
    • На экран выводятся исходная и преобразованная строки.
    • Выводится количество совпадений (быков) и количество различий (коров).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.636 из 5