[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Коды некоторых программ windows
АлексейДата: Четверг, 23.04.2015, 23:18 | Сообщение # 21
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
#include
#include
#include
#include
#define FNAME "D:\\alex2093\\1.txt\0"

void main ()
{
char fname[80]=FNAME;
FILE *in;
int a[10];
char pass;
int q=3;

in=fopen(fname,"r");
while(1)
{
printf("vvedite pass\n"); scanf("%s", pass);
fread(&a[1], sizeof(char), 1, in);
if (a[1]==1) { printf("\n vy voshli \n"); break; }
else { q=q-1; printf("\n u vas ostalos %d popytok \n", q);
if (q=0) { printf("\n u vas ne ostalos popytok \n"); break; }
}
}

fclose(in);
getch();
}
 
АлексейДата: Четверг, 23.04.2015, 23:18 | Сообщение # 22
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
//Введите с клавиатуры размерность одномерного массива и его
//элементы типа double, отсортируйте его по возрастанию.
//Выведите на экран и в текстовый файл (в читабельном виде) сначала исходный массив,
//затем упорядоченный по возрастанию. После этого в отдельной строке вывести сумму элементов массива и среднее значение.

#include
#include
#include
#include
#define FNAME "C:\\ФИН Сухарев\\Занятие 9\\1.txt"

void main ()
{
char fname[80]=FNAME;
FILE *in;
int r, i;
double mas[100], sum=0, tmp, mid=0;
in=fopen(fname, "w");
setlocale(LC_ALL,"Russian");
printf ("введите размер массива\n");
scanf ("%d", &r);
printf ("введите элементы массива\n");
for (i=0; i {scanf ("%lf", &mas[i]);}
for (i=0; i {printf ("Массив %d=%lf\n", i, mas[i]);
fprintf (in, "Массив %d=%lf\n", i, mas[i]);}
for (i=0; i {
if(mas[i] > mas[i+1])
{
tmp = mas[i];
mas[i] = mas[i+1];
mas[i+1] = tmp;
}
}
for (i=0; i {
if(mas[i] > mas[i+1])
{
tmp = mas[i];
mas[i] = mas[i+1];
mas[i+1] = tmp;
}
}
for (i=0; i {printf ("Упорядоченный массив %d=%lf\n", i, mas[i]);
fprintf (in, "Упорядоченный массив %d=%lf\n", i, mas[i]);
}
for (i=0; i {
sum+=mas[i];
mid=sum/r;
}
printf("Сумма элементов=%7.2f\n", sum);
fprintf(in, "Сумма элементов=%7.2f\n", sum);
printf("Среднее значение=%7.2f\n", mid);
fprintf(in, "Среднее значение=%7.2f\n", mid);
getch();
fclose(in);
}
 
АлексейДата: Четверг, 23.04.2015, 23:18 | Сообщение # 23
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
//Введите с клавиатуры размерность одномерного массива и его элементы типа double,.
//Выведите на экран и в текстовый файл сначала исходный массив,
//потом удалите минимальный элемент и выведите на экран и в текстовый файл усеченный таким образом массив.

 
АлексейДата: Четверг, 23.04.2015, 23:19 | Сообщение # 24
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
/*Ввести с клавы размерности 2 мерного массива, сгенерить (от 10 до 20) элементы,
отсортировать по убыванию нечетные строки. Вывести на экран и в фаил исходный массив и результирующий.
Подсчитать среднее значение элементов на гл. диагонали. Вывести его в фаил и на экран.*/

 
АлексейДата: Четверг, 23.04.2015, 23:19 | Сообщение # 25
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <io.h>

void main()
{
  FILE *in;
  int i,imax, imin;    // номер максимального элемента
  int a[100],max,min,zero=0;
  in=fopen("D:\\alex2093\\1.txt", "r+b");
   if(!in)
   {
    puts("Error!");
    exit(1);
   }
   
  fread(&max, sizeof(int), 1, in);
  max=0;
  imax=0;
  min=10000000000009;
  imin=0;
  for (i=0; i < 10; i++)
  {
   fread(&a[i], sizeof(int), 1, in);
   printf("a[%d]=%d\t", i, a[i]);
   if(a[i] > max)
   {
    max=a[i];
    imax=i;
   }
   if(a[i] < min) { min=a[i]; imin=i; }
  }
  a[imax]=min; a[imin]=max;
  printf("\nmax=%d, imax= %4d", max, imax);
  printf("\nmin=%d, imin= %4d", min, imin);

  fseek(in, (imax+1)*sizeof(int), SEEK_SET);
  fwrite(&zero, sizeof(int),1,in);
  fclose(in);

  getch();
}
 
АлексейДата: Четверг, 23.04.2015, 23:19 | Сообщение # 26
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <io.h>

void main()
{
  FILE *in;
  int i,imax;    // номер максимального элемента
  int a[20],max,ch,f;
  in=fopen("D:\\alex2093\\1.txt", "rb");
   if(!in)
   {
    puts("Error!");
    exit(1);
   }
  printf("vvedite chislo"); scanf("%d", &ch);
  fread(&max, sizeof(int), 1, in);
  imax=0; f=0;
  for (i=0; i < 20; i++)
  {
   fread(&a[i], sizeof(int), 1, in);
   printf("a[%d]=%d\t", i, a[i]);
   if(a[i] == ch)
   {
    max=a[i];
    imax=i;
    f=1;
   }
  }
  if (f == 1) {  printf("\nchislo=%d, number= %4d", max, imax); }
  else {printf("net takogo chisla");}
  fclose(in);

  getch();
}
 
АлексейДата: Четверг, 23.04.2015, 23:19 | Сообщение # 27
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <conio.h>
#include <time.h>
#define FNAME "D:\\alex2093\\1.txt\0"

void main ()  
{
char fname[80]=FNAME;
FILE *in;
double a[10000];  
  int i;
int n; printf("vvedite ch elementov"); scanf("%d", &n);
in=fopen(fname, "w+");
srand(time(NULL));
   for (i = 1; i < (n+1); i++)  
     a[i] = rand()%20;    fclose(in);

  in=fopen(fname, "rb");
    for (i = 1; i < (n+1); i++)
  {
   fread(&a[i], sizeof(double), 1, in);
   printf("a[%d]=%.2f\n", i, a[i]);
  }
  fclose(in);
  getch();

}
 
АлексейДата: Четверг, 23.04.2015, 23:19 | Сообщение # 28
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#define FNAME "D:\\alex2093\\emp_in.txt\0"
struct emp
{
  int empno;
  char name[20];
  double salary;
};

void init_emp(struct emp *ps, int en, char *nm, double sal)
{
  ps->empno = en;
  strcpy(ps->name, nm);
  ps->salary = sal;
}

main()
{
   
     
  struct emp e;
     FILE *f1;
     f1=fopen(FNAME,"w+");
   
  init_emp(&e, 1, "alexey", 100000000000);
  fprintf(f1," 3\n");
  fprintf(f1," nomer scheta, name, many\n");
  fprintf(f1,"%d %s %.0f$\n", e.empno, e.name, e.salary);
   fprintf(f1," nomer scheta, name, many\n");
  init_emp(&e, 2, "vova", 1);
  fprintf(f1,"%d %s %.0f$\n", e.empno, e.name, e.salary);
   fprintf(f1," nomer scheta, name, many\n");
  init_emp(&e, 3, "jenya", -100000000);
  fprintf(f1,"%d %s %.0f$\n", e.empno, e.name, e.salary);

fclose(f1);

   

}
 
АлексейДата: Четверг, 23.04.2015, 23:20 | Сообщение # 29
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct Marks
  {
   char name[80];
   int phys;
   int chem;
   int maths;
  }ivanov,petrov,sidorov;

struct Exams
  {
   double phys;
   double chem;
   double maths;
  };
int main()
{
  struct Exams LastYear, ThisYear;
  strcpy(ivanov.name,"Sergei Ivanov");
  ivanov.phys=4;
  ivanov.chem=3;
  ivanov.maths=3;
  strcpy(petrov.name,"Igor Petrov");
  petrov.phys=5;
  petrov.chem=4;
  petrov.maths=4;
  strcpy(sidorov.name,"Ivan Sidorov");
  sidorov.phys=5;
  sidorov.chem=4;
  sidorov.maths=3;
   
  LastYear.chem=4.33333;
  LastYear.phys=3.66667;
  LastYear.maths=3.33333;
  ThisYear.chem=(double)(ivanov.chem+petrov.chem+sidorov.chem)/3;
  ThisYear.phys=(double)(ivanov.phys+petrov.phys+sidorov.phys)/3;
  ThisYear.maths=(double)(ivanov.maths+petrov.maths+sidorov.maths)/3;

  printf("\nLast year marks: ");  
  printf("\nPhysics    %6.1lf ", LastYear.phys);      
  getch();
  return 0;
}
 
АлексейДата: Четверг, 11.06.2015, 21:16 | Сообщение # 30
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
//найти все вершины графа недостижимые из его вершины.
#include <stdio.h>
#include <stdlib.h>

void DFS(int**, int [] , int, int);
void PrnMatrix(int**, int, int);

int main(int argc, char *argv[])
{int** Matrix;
  int* Visited;
  int N;
  int NumV;
  int i, j;
  int Count;

  do{
   printf("Kol-vo vershin v grafe: ");
   scanf("%ld", &N);
   fflush(stdin);
   if (N<2) printf("Slishkom maloe kol-vo vershin\n");
  } while (N<2);
  Matrix=(int**) malloc(N*sizeof(int*));
  for(i=0; i<N; i++)
   Matrix[i]=(int*) malloc(N*sizeof(int));
  Visited=(int*) malloc(N*sizeof(int));
  for(i=0; i<N; i++)
   Visited[i]=0;
  for(i=0; i<N; i++)
   Matrix[i][i]=0;
  printf("Zapolnenie matricy smejnosti\n");
  printf("1 - est duga mejdu vershinami, 0 - net dugi mejdu vershinami\n");
  for(i=0; i<N-1; i++)
   for(j=i+1; j<N; j++)
   {do{
     printf("[%d,%d] = ", i+1, j+1);
     scanf("%ld", &Matrix[i][j]);
     fflush(stdin);
    if ((Matrix[i][j]!=1) && (Matrix[i][j]!=0)) printf("Oshibka, povtorite!\n");
    } while ((Matrix[i][j]!=1) && (Matrix[i][j]!=0));
      Matrix[j][i]=Matrix[i][j];
   }           
  printf("*******************************************************\n");
  printf("Sozdana matrica smejnosti\n");
  PrnMatrix(Matrix, N, N);
  do{
   printf("Vvedite nomer vybrannoi vershiny: ");
   scanf("%d", &NumV);     
   fflush(stdin);  
   if ((NumV<1) || (NumV>N)) printf("Takoi vershiny net\n");
} while ((NumV<1) || (NumV>N));
  NumV--;
  DFS(Matrix, Visited, N, NumV);
  Count=0;
  printf("Spisok vershin, nedostupnyh iz vershiny %d:\n", NumV+1);
  for(i=0; i<N; i++)
   if ((Visited[i]==0) && (i!=NumV))
    {Count++;
     if (Count==1)
      printf("%d", i+1);
     else
      printf(", %d", i+1);
    }                    
   if (Count==0)
    printf("Dlya vershiny %d net nedostypnyh vershin\n", NumV+1);
    printf("\n");   
    free(Visited);
    for(i=0; i<N; i++)
     free(Matrix[i]);  
  free(Matrix);      
  system("PAUSE");
  return 0;
}

void PrnMatrix(int** A, int n, int m)
{int i, j;
  for(i=0; i<n; i++)
  {for(j=0; j<m; j++)
    printf("%6d", A[i][j]);
   printf("\n");
  }
}
void DFS(int** A, int Vis[], int N, int V)
{ int i;
   Vis[V]=1; //вершина V посещена
   for(i=0; i<N; i++)
    if ((A[V][i]!=0) && (Vis[i]==0))
    //если ребро между I и V существует и вершина I не была посещена ранее
      DFS(A, Vis, N, i);
}

 
АлексейДата: Четверг, 11.06.2015, 21:16 | Сообщение # 31
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
//напечатать все слова в обратном порядке
#include <stdio.h>
#include <conio.h>  
#include <stdlib.h>  
#include <locale.h>  

void main()
{
  char text[100][100],ch='g';
  int i=0, j=0, s, dlina[200], a=0;
  setlocale(LC_ALL,"Russian");
  printf("Введите текст\n\n");

  while(1)
  {if (ch=='.') break;
  scanf("%c",&ch);

  if (ch=='.') break;

  if (ch!=' ')
    
    while (ch!=' ' && ch!='.')
   {
    if (ch>='a' && ch<='z')  

   {text[i][j]=ch; j++; scanf("%c",&ch);}
    else break;
    if (ch==' ') {dlina[i]=j; i++; j=0;}
    if (ch=='.') {dlina[i]=j; i++; j=0; break;}
    if (ch<'a' && ch>'z') break;
   }
  }
  s=i;
  printf("Фильтрация текста:\n\n");

  for (i=0; i<s; i++)  
   
  {
    for (j=0; j<dlina[i]; j++)
   {
    printf("%c",text[i][j]);
    if (j==dlina[i])
     printf(" ");
   }
    if (i!=s-1)
    printf(" ");
  }
    
   
  if (i==s && i!=0)
    printf(".\n");

  if (i==0) printf("Слова не найдены\n\n");
  else
   
  {printf("Развернутый текст:\n\n");
   
  for (i=0; i<=s; i++)
  {
    if (a!=0) printf(" ");
    for (j=dlina[i]-1; j>=0;j--)
      printf("%c",text[i][j]);
    a++;
  }
  if (s>0)  
  printf("\b.");
  }
   getch();
}

 
АлексейДата: Четверг, 11.06.2015, 21:17 | Сообщение # 32
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define len 100

void main()
{
int masrb[len][len], masvr[len], a,s,d,k,t,f,sv,ok,r1;
setlocale(LC_ALL,"Russian");
for (a=0; a<len; a++)
{
    for (s=0; s<len; s++)
    {
        masrb[a][s]=0;
    }
}

for (a=0; a<len; a++)
{masvr[a]=-99;}

printf("Введите количество вершин\n");
scanf("%d", &k);
for (a=0; a<k; a++)
{masvr[a][/s]=-1;}
printf("Введите ребра в виде xy (x<y). 0 заканчивает ввод\n");
scanf("%d",&r1);

while (r1!=0)
{
    masrb[r1div10][r1mod10]=1
       scanf(r1)
}

getch();

}
 
АлексейДата: Четверг, 11.06.2015, 21:17 | Сообщение # 33
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#define len 100

void main()
{
int masrb[len][len], masvr[len], a,s,d,k,t,f,sv,ok,r1;
setlocale(LC_ALL,"Russian");
for (a=0; a<len; a++)
{
    for (s=0; s<len; s++)
    {
        masrb[a][s]=0;
    }
}

for (a=0; a<len; a++)
{masvr[a]=-99;}

printf("Введите количество вершин\n");
scanf("%d", &k);
for (a=0; a<k; a++)
{masvr[a]=-1;}
printf("Введите ребра в виде xy (x<y). 0 заканчивает ввод\n");
scanf("%d",&r1);

while (r1!=0)
{ if (r1<=89)
    masrb[r1/10-1][r1%10-1]=1;
    else  
  masrb[r1/100-1][r1%100-1]=1;
    scanf("%d",&r1);

}

ok=0;
sv=1;
t=0;  
masvr[t]=0;

for (s=0; s<k; s++)
{
         for (f=0; f<k; f++)
   {
    if (masvr[f]==s)
    {t=f;
              for (d=0; d<k; d++)
     {
                if  (((masrb[d][t]==1) || (masrb[t][d]==1)) && masvr[d]==-1)
       {masvr[d]=s+1;}
     }
    }
   }
}
  for (s=0; s<k; s++)
    {if (masvr[s]==-1)
     {sv=0;}
    }
     
  if (sv==1)
  {
    printf("Граф связный\n");
    ok=1;
  }
if (ok!=1)  
{printf("Граф не связный\n");}
getch();

}
 
АлексейДата: Четверг, 11.06.2015, 21:19 | Сообщение # 34
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <iostream>
#include <fstream>
#include <cstring>
#include<locale.h>
#include<time.h>
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
#include <string>

using namespace std;

int main()
{
  string str = "";
  cout <<str<< endl;
   cin >> str;
   double значение_ячейки = 0;
   int точки = -10, десяток;
   for (int i = 0; i < str.length(); i++)
   {
    if (str[i] == '.') { точки = 0; }
    if (str[i] == '0') { значение_ячейки = значение_ячейки * 10 + 0; }
    if (str[i] == '1') { значение_ячейки = значение_ячейки * 10 + 1; }
    if (str[i] == '2') { значение_ячейки = значение_ячейки * 10 + 2; }
    if (str[i] == '3') { значение_ячейки = значение_ячейки * 10 + 3; }
    if (str[i] == '4') { значение_ячейки = значение_ячейки * 10 + 4; }
    if (str[i] == '5') { значение_ячейки = значение_ячейки * 10 + 5; }
    if (str[i] == '6') { значение_ячейки = значение_ячейки * 10 + 6; }
    if (str[i] == '7') { значение_ячейки = значение_ячейки * 10 + 7; }
    if (str[i] == '8') { значение_ячейки = значение_ячейки * 10 + 8; }
    if (str[i] == '9') { значение_ячейки = значение_ячейки * 10 + 9; }
    if (точки >= 0) { точки++; }
   }
   for (int i = 0; i < точки - 1; i++) { значение_ячейки = значение_ячейки * 0.1; } //относим запятую влево.
   cout <<endl << "Наше значение_ячейки "<< значение_ячейки << endl;  
   system("pause");
}
 
АлексейДата: Четверг, 11.06.2015, 21:19 | Сообщение # 35
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <iostream>
#include <fstream>
#include <cstring>
#include<locale.h>
#include<time.h>
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
#include <string>

using namespace std;

int main()
{
  setlocale(LC_ALL, "Russian");
  ifstream f;
  string a, all;
  int n = 0;
  //Открываем файл в режиме чтения.
  f.open("data\\alfa\\tabl1.csv");
  //Если открытие файла прошло корректно, то
  if ((f))
  {
   //Цикл для чтения значений из файла, выполнение цикла
   // прервется, когда достигнем конца файла, в этом случае
   // f.eof() вернет истину.
   while (!f.eof())
   {
    //Чтение очередного значения из f в переменную a.
    f >> a;
    a = a + " ";
    all = all + a;
   }
   //Закрытие файла.
   f.close();

   int dlina=0, i=0;

   cout << "Вы готовы увидеть то что я скопировал? Ну окай";  
   //cout << all;
   cout << endl << "Конец";

   cout << "забираем первую машину ";
   while (dlina < 7)
   {
    if (all[i] == ';') { dlina++; }
    i++;
   }
   string car = "AUDI RS4", МРЦ, группа, car_name;
   int log = 1, start=i;
   while ((i < all.length()-10) && log == 1)
   {
    int che = 0;
    for (int j = 0; j < car.length(); j++)
    {
     if (car[j] == all[i + j]) { che++; }
     if (che == car.length()) { log = 0; cout << car; }
    }
    if (log == 0)  
    {
     while (all[i] != ';')
     {
      car_name = car_name + all[i];
      i++;
     }
     cout << endl << "Название тачки " << car_name;
     i = i + 1;
     while (all[i] != ';')
     {
      МРЦ = МРЦ + all[i];
      i++;
     }
     i++;
     cout << endl << "Группа МРЦ " << МРЦ;
     while (all[i] != ';')
     {
      группа = группа + all[i];
      i++;
     }
     cout << endl << "Группа машинки " << группа;
    }  
    else { i++; }

   }
  }
  //Если открытие файла прошло некорректно, то вывод
  // сообщение, об отсутствии такого файла.
  else cout << "File \"Таблица 1\" not found" << endl;
  system("pause");
}
 
АлексейДата: Четверг, 11.06.2015, 21:19 | Сообщение # 36
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Код
#include <iostream>
#include <cstring>
#include<locale.h>
#include<time.h>
#include <stdlib.h>
#include <stdio.h>
#include <Windows.h>
#include <string>

using namespace std;

int main()
{
  int t = clock();
  int a[100000];
  int i,j;
//#pragma omp parallel
  //{
//#pragma omp for
  for (j = 0; j < 30; j++)
  {

   for (i = 0; i < 100000; i++)
   {
    a[i] = i;
   }
  }
  //}
  double tt = clock();
  cout << tt - t << endl;
  system("pause");
}
 
АлексейДата: Четверг, 11.06.2015, 21:22 | Сообщение # 37
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Морской бой

Код
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>

void SetColorBgTex(int Bg=0, int Tex=15);
void Position (int, int);
void SetConsoleWindow(int, int);

using namespace std;

struct Box
{
  int x;
  int y;
  int flag;//битое(1) не битое(0) поле
  int ship;// корабль(1) не корабль(0)
  int shipDeck;//к какому типу относится корабль
  int color;//цвет клеточки
  int parentX;//координата родительской клетки
  int parentY;
  int Dir;//направление коробля
  void Show();
  void ShowComp();
};
void Box::Show(){

  if( flag==1 && ship==0 )//битая клетка не корабль
  {
   SetColorBgTex(color-4);
   Position(x,y);
   cout<<"     ";
   Position(x,y+1);
   cout<<"  X  ";
   Position(x,y+2);
   cout<<"     ";
   SetColorBgTex();
  }
  else if( flag==0 && ship>0 )//не битая клетка корабль
  {
   SetColorBgTex(color-6);
   Position(x,y);
   cout<<"     ";
   Position(x,y+1);
   cout<<"     ";
   Position(x,y+2);
   cout<<"     ";
   SetColorBgTex(color-4);
   Position(x+1,y+1);
   cout<<"   ";
   SetColorBgTex();

  }
  else if( flag==1 && ship>0 )//битая клетка корабль
  {
   SetColorBgTex(color-6);
   Position(x,y);
   cout<<"     ";
   Position(x,y+1);
   cout<<"     ";
   Position(x,y+2);
   cout<<"     ";
   SetColorBgTex(color-3);
   Position(x+1,y+1);
   cout<<"   ";
   SetColorBgTex();
  }
  else//обычная серая клетка
  {
   SetColorBgTex(color);
   Position(x,y);
   cout<<"     ";
   Position(x,y+1);
   cout<<"     ";
   Position(x,y+2);
   cout<<"     ";
   SetColorBgTex();
  }
}
void Box::ShowComp(){
  if(flag==1)
  {
   if(ship==1)
   {
    SetColorBgTex(color-6);
    Position(x,y);
    cout<<"     ";
    Position(x,y+1);
    cout<<"     ";
    Position(x,y+2);
    cout<<"     ";
    SetColorBgTex(color-3);
    Position(x+1,y+1);
    cout<<"   ";
    SetColorBgTex();
   }
   else
   {
    SetColorBgTex(color-4);
    Position(x,y);
    cout<<"     ";
    Position(x,y+1);
    cout<<"  X  ";
    Position(x,y+2);
    cout<<"     ";
    SetColorBgTex();
   }

  }
  else
  {
   SetColorBgTex(color);
   Position(x,y);
   cout<<"     ";
   Position(x,y+1);
   cout<<"     ";
   Position(x,y+2);
   cout<<"     ";
   SetColorBgTex();
  }
}
 
АлексейДата: Четверг, 11.06.2015, 21:23 | Сообщение # 38
Продвигающийся
Группа: Администраторы
Сообщений: 324
Награды: 4
Репутация: 1
Статус: Оффлайн
Морской бой

Код
  
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
   
using namespace std;
   
char  player[10][10],comp[10][10],falsew[10][10];
int it1;
int jh;
//---------------------------------------------------------------------------
bool proverkahodov(void)
{
for(int numb=0;numb<10;numb++) {
for(int sign=0;sign<10;sign++) {
  switch(comp[numb][sign]){
  case '1':
  case '2':
  case '3':
  case '4':
            return true;
  break;
          }
   
  switch(player[numb][sign]){
  case '1':
  case '2':
  case '3':
  case '4':
          return true;
  break;
          }
          }
          }
   
      return false;
           
}
//---------------------------------------------------------------------------
void painting(void)
{
system("cls");
printf("    A B C D E F G H I K \t    A B C D E F G H I K \n\n");
   
  for (int i=0;i<10;i++){
  if(i<9)  printf("%d  ",i+1)  ;
  else printf("%d ",i+1)  ;
    for(int j=0;j<10;j++)       {
      cout << " " << player[i][j];}
      printf(" \t");
  if(i<9)  printf("%d  ",i+1)  ;
  else printf("%d ",i+1)  ;
   
   
    for(int K=0;K<10;K++)       {
      cout << " " << falsew[i][K];}
      cout<<"\n";        }
}
//---------------------------------------------------------------------------
   
bool vertical(int x,int y,int shiplarge,bool usr)
{
char ss[1];
   
if(!usr){
// проверяем зону вокруг корабля на наличие других кораблей
   
for(int i=(x-1);i<=(x+shiplarge) && i<10;i++)              {
    for(int j=(y-1);j<=(y+1);j++){
       if(j<0) j=0;
       if(j>=9)j=9;
       if(comp[i][j]=='1'||comp[i][j]=='2'||comp[i][j]=='3'||comp[i][j]=='4')
         return false;
                      }
                   }
// ставим корабль
for (int i=0;i<shiplarge;i++){
     itoa( shiplarge,ss,10);
     comp[x][y]=ss[0];
        x=x+1;}
    return true;   }
else
{
// проверяем зону вокруг корабля на наличие других кораблей
   
for(int i=(x-1);i<=(x+shiplarge) && i<10;i++)              {
       if(i>9)i=9;
       if(i<0) i=0;
    for(int j=(y-1);j<=(y+1);j++){
       if(j<0) j=0;
       if(j>=9) j=9;
       if(player[i][j]=='1'||player[i][j]=='2'||player[i][j]=='3'||player[i][j]=='4')
         return false;
                      }
                   }
// ставим корабль
for (int i=0;i<shiplarge;i++){
     itoa( shiplarge,ss,10);
     player[x][y]=ss[0];
        x=x+1;}
  return true;   }
   
   
}
//---------------------------------------------------------------------------
bool horizont(int x,int y,int shiplarge,bool usr)
{
int i,j;
char ss[1];
  if(!usr){
// проверяем зону вокруг корабля на наличие других кораблей
for(i=(x-1);i<=(x+1) && i<10;i++)              {
       if(x<0) x=0;
       if(x>=9) x=9;
       for(j=(y-1);j<=(y+shiplarge);j++){
       if(comp[i][j]=='1'||comp[i][j]=='2'||comp[i][j]=='3'||comp[i][j]=='4')
         return false;
                      }
                   }
// ставим корабль
for (i=0;i<shiplarge;i++){
     itoa( shiplarge,ss,10);
     comp[x][y]=ss[0];
        y=y+1;}
  return true;     }
else
{
// проверяем зону вокруг корабля на наличие других кораблей
for(i=(x-1);i<=(x+1) && i<10;i++)              {
       if(i>9)i=9;
       if(i<0) i=0;
    for(j=(y-1);j<=(y+shiplarge);j++){
       if(player[i][j]=='1'||player[i][j]=='2'||player[i][j]=='3'||player[i][j]=='4')
         return false;
                      }
                   }
// ставим корабль
for (i=0;i<shiplarge;i++){
     itoa( shiplarge,ss,10);
     player[x][y]=ss[0];
        y=y+1;}
  return true;
}
   
}
//---------------------------------------------------------------------------
void userinput(int i,int j)
{  
char spos[3],posit[1];
int chislo,bukva;
   
   
retlabel:
    printf ("kuda stavim %d-x palubniy #%d - ",i,j+1);
    scanf("%3s", spos);
    switch (spos[0]){
    case 'a':    bukva=0;
    break;
    case 'b':    bukva=1;
    break;
    case 'c':    bukva=2;
    break;
    case 'd':    bukva=3;
    break;
    case 'e':    bukva=4;
    break;
    case 'f':    bukva=5;
    break;
    case 'g':    bukva=6;
    break;
    case 'h':    bukva=7;
    break;
    case 'i':    bukva=8;
    break;
    case 'k':    bukva=9;
    break;
    default :
     printf("\nVvedite pravilnoe znachenie\n");
     goto retlabel;
       }
    switch (spos[1]){
    case '1':  if(spos[2]=='0')
                  chislo=9;
               else chislo=0;
    break;
    case '2':    chislo=1;
    break;
    case '3':    chislo=2;
    break;
    case '4':    chislo=3;
    break;
    case '5':    chislo=4;
    break;
    case '6':    chislo=5;
    break;
    case '7':    chislo=6;
    break;
    case '8':    chislo=7;
    break;
    case '9':    chislo=8;
    break;
   
    default :
     printf("\nVvedite pravilnoe znachenie\n");
     goto retlabel;
       }
horverlabel:
  printf("Horizontal(h) or vertikal(v)");
  scanf("%2s", posit);
    switch(posit[0]){
    case 'h': if((bukva+i)<=10){
                 if(!horizont(chislo,bukva,i,true)  ){
                 printf("Tak stavit nelzya\n");
                 goto  retlabel;             }}
              else {
                 printf("Tak stavit nelzya\n");
                 goto  retlabel;             }
   
    break;
    case 'v':if((chislo+i)<=10){
             if(!vertical(chislo,bukva,i,true) ){
                 printf("Tak stavit nelzya\n");
                 goto  retlabel;              }}
              else {
                 printf("Tak stavit nelzya\n");
                 goto  retlabel;             }
    break;
    default: printf("\n Nado vvesti h or v ");
             goto horverlabel;
    } //      switch(posit)
   
   
   
}
   
//---------------------------------------------------------------------------
void rasstanovka (void)
{
int chislo, bukva;
   
srand((unsigned)time( NULL ));
   
for (int i1=4;i1>0;i1--){
    for (int j=0;j<abs(i1-5);j++){
newcoord:
chislo=rand()%10;
bukva=rand()%10;
   
if((bukva+i1)>=10) {
    if((chislo+i1)>=10) {
       goto newcoord; }
    else  
       if(!vertical(chislo,bukva,i1,false) )  {
           goto newcoord;     }
            }
   
else   {
    if(!horizont(chislo,bukva,i1,false) ){
       goto newcoord; }
         }
   
        }
   
   }
}
//---------------------------------------------------------------------------
void shootcomp (void)
{
int bukva;
int chislo;
bool popal=false;
   
lbl0:
srand((unsigned)time( NULL ));
bukva=rand()%10;
srand((unsigned)time( NULL ));
chislo=rand()%10;
   
painting();
   
lbl1:
if(chislo<10 && bukva<10){
if(  player[chislo][bukva]=='X' || player[chislo][bukva]=='o'){
    if(rand()%100>50){
       bukva++;
       goto lbl1;}
    else{
       chislo++;
       goto lbl1;} }    }
else goto lbl0;
   
switch(bukva){
case 0:printf("\nYa strelyayu A%d ",chislo+1);
break;
case 1:printf("\nYa strelyayu B%d ",chislo+1);
break;
case 2:printf("\nYa strelyayu C%d ",chislo+1);
break;
case 3:printf("\nYa strelyayu D%d ",chislo+1);
break;
case 4:printf("\nYa strelyayu E%d ",chislo+1);
break;
case 5:printf("\nYa strelyayu F%d ",chislo+1);
break;
case 6:printf("\nYa strelyayu G%d ",chislo+1);
break;
case 7:printf("\nYa strelyayu H%d ",chislo+1);
break;
case 8:printf("\nYa strelyayu I%d ",chislo+1);
break;
case 9:printf("\nYa strelyayu K%d ",chislo+1);
break;
}
   
chislo=chislo;
if(  player[chislo][bukva]== '1' || player[chislo][bukva]=='2' || player[chislo][bukva]=='3'|| player[chislo][bukva]=='4')
     {
      player[chislo][bukva]='X';
      popal=true; }
if(  player[chislo][bukva]== '-'){
      player[chislo][bukva]='o';
      popal=false; }
   
if(popal){
    printf("Ya popal, moy hod");
   
    goto lbl0; }
else {
    printf("Promazal, hodite");
   
     }
   
   getch();
    painting ();
}
//---------------------------------------------------------------------------
void shootman (void)
{
  painting();
bool popal;
char spos[3];
int chislo,bukva;
   
retlabel:
popal=false;
    printf ("\nVash hod - ");
    scanf("%3s", spos);
    switch (spos[0]){
    case 'a':    bukva=0;
    break;
    case 'b':    bukva=1;
    break;
    case 'c':    bukva=2;
    break;
    case 'd':    bukva=3;
    break;
    case 'e':    bukva=4;
    break;
    case 'f':    bukva=5;
    break;
    case 'g':    bukva=6;
    break;
    case 'h':    bukva=7;
    break;
    case 'i':    bukva=8;
    break;
    case 'k':    bukva=9;
    break;
    default :
     printf("\nVvedite pravilnoe znachenie\n");
     goto retlabel;
       }
    switch (spos[1]){
    case '1':  if(spos[2]=='0')
                  chislo=9;
               else chislo=0;
    break;
    case '2':    chislo=1;
    break;
    case '3':    chislo=2;
    break;
    case '4':    chislo=3;
    break;
    case '5':    chislo=4;
    break;
    case '6':    chislo=5;
    break;
    case '7':    chislo=6;
    break;
    case '8':    chislo=7;
    break;
    case '9':    chislo=8;
    break;
   
    default :
     printf("\nVvedite pravilnoe znachenie\n");
     goto retlabel;
       }
   
  if(comp[chislo][bukva]=='1' ||comp[chislo][bukva]=='2' ||comp[chislo][bukva]=='3' ||comp[chislo][bukva]=='4')
    { comp[chislo][bukva]='X';
      falsew[chislo][bukva]='X';
    popal=true;
    printf("Popal, hodite eshe\n");
       }
  if(comp[chislo][bukva]=='-') {
    comp[chislo][bukva]='o';
    falsew[chislo][bukva]='o';
    printf("Promazal, moy hod\n");
    popal=false;
    }
    getch();
    painting();
   
  if(popal) goto retlabel;
}
//---------------------------------------------------------------------------
   
void main(void)
{
   
char playermove[2];
   
system("cls");
   
for (int i=0;i<10;i++){
    for (int j =0;j<10;j++){
     player[i][j]='-';
     comp [i][j]='-';
     falsew[i][j]='-';
     }}
   
  rasstanovka();
  painting();
     for ( it1=4;it1>0;it1--){
    for (jh=0;jh<abs(it1-5);jh++){
  userinput(it1,jh);
  painting();
   }
   }
   
  while (proverkahodov())
  {
shootcomp();
   
shootman();
   
}
   
printf("Partiya okonchena");
getch();
   
}
//---------------------------------------------------------------------------
  
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: