Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Создание своего собейта

Статус
В этой теме нельзя размещать новые ответы.

dimazhelek

Специалист
Всем привет, сейчас я вам расскажу как же начать создавать свой собейт, и так для начала нам нужно: Microsoft Visual C++ 2012 Ultimate ( ) Ключ RBCXF-CVBGR-382MK-DFHJ4-C69G8, Microsoft DirectX SDK ( ), Исходной код собейта 03x ( )



Открываем Microsoft Visual C++ 2012 Express, в нем надо открыть проект собейта 03х, находится от в папке src и называется mod_sa_VS2010.sln
Далее по этим урокам вы можете ознакомится с строением читов



PHP:
#define M0D_NAME  "mod_sa" 
#define M0D_VERSION  "v4.1"
#define M0D_NAME  "mod_sa by (Автор)" 
#define M0D_VERSION  "v1.2 for ***************"
Это то что будет выводится на экран при включении GTA: SA-MP



В прошлом уроке мы учились менять название собейту
В этом уроке мы будем создавать свое меню!
Открываем наш проект mod_sa
Откроем файл dumb_menu.cpp
Добавим всем #define
PHP:
#define ID_MENU_NEWMENU 16668
// Вместо NEWMENU любой текст по английский, вместо 16668 любое целое незанятое число

Идём дальше
В
void menu_maybe_init ( void )
{
В структуру меню вставим menu_testing, незнаем как - смортим на скрин

После
PHP:
menu_cheats = menu_new( menu_main, ID_MENU_CHEATS, menu_callback_cheats );
Вставим
PHP:
menu_testing = menu_new( menu_main, ID_MENU_NEWMENU, menu_callback_testing );
Идём дальше
Ищем строку
PHP:
menu_item_add( menu_main, menu_teleports, "Телепорты", ID_NONE, MENU_COLOR_DEFAULT, NULL );
После неё вставить
PHP:
menu_item_add( menu_main, menu_testing, "Тест меню", ID_MENU_4IT, MENU_COLOR_BLUE, NULL );
MENU_COLOR_BLUE - Наш цвет, откроем dumb_menu.h, к #define добавим
#define MENU_COLOR_BLUE D3DCOLOR_XRGB( 30, 144, 255 )
( 30, 144, 255 ) - Цвет по RGB
Вернемся в dumb_menu.cpp
Code
PHP:
static int menu_callback_testing ( int op, struct menu_item *item ) 
{ 
   struct actor_info    *info; 
   int     mod; 
   int     neww; 
   neww = 1; 

   switch ( op ) 
   { 
   case MENU_OP_ENABLED: 
    switch ( item->id ) 
    { 
     
     
    } 
    break; 

   case MENU_OP_SELECT: 
    switch ( item->id ) 
    { 

    } 

    return 1; 

   case MENU_OP_DEC: 
return 1; 
      
   case MENU_OP_INC: 
return 1; 
      
   } 

   return 0; 
}

]
добавим это к всем callbackам
Можно после этого
PHP:
Code
   { 
     set.fly_player_speed += mod * 0.1f; 
    } 
    else 
    { 
     set.fly_player_speed += mod * 1.0f; 
    } 
    // don't allow it to go under 0.1f 
    if ( set.fly_player_speed < 0.1f ) 
    { 
     set.fly_player_speed = 0.1f; 
    } 

    menu_item_name_set( item, "Player Fly Speed: %0.01f", set.fly_player_speed ); 
    return 1; 

   } // end of INC/DEC 
  } 

  return 0; 
}


PHP:
#define SAMP_TEXTDRAWCLICK_OFFSET   0x212A0C 
#define SAMP_TEXTDRAWCLICK_HIDE_CURSOR   0x81580 
uint32_t func = g_dwSAMP_Addr+SAMP_TEXTDRAWCLICK_HIDE_CURSOR; 
uint32_t data = g_dwSAMP_Addr+SAMP_TEXTDRAWCLICK_OFFSET; 

     __asm mov eax, dword ptr[data] // mov to offset  
     __asm mov ecx, dword ptr[eax] // mov to offset 
  __asm call func


Доброго времени суток ув. юзеры.
Сегодня я вам покажу как добавить команду /warp в собейт.
Команда позволяет нам телепортироваться к указанному игроку в радиусе прорисовки.
/warp <player ID>
Начнем.
Для начала добавим клиентскую команду в samp.cpp:
После
Код
PHP:
addClientCommand( "m0d_teleport_locations", (int)cmd_tele_locations );
вставим это:
Код
PHP:
addClientCommand( "warp", (int)cmd_warp ); // добавляем клиентскую команду
Дальше ищем вот это:
Код
PHP:
void cmd_current_server ( char *param ) 
{ 
       addMessageToChatWindow( "Server Name: %s", g_SAMP->szHostname ); 
       addMessageToChatWindow( "Server Address: %s:%i", g_SAMP->szIP, g_SAMP->ulPort ); 
       addMessageToChatWindow( "Username: %s", getPlayerName(g_Players->sLocalPlayerID) ); 
}
И после этого вставляем данный код:
Код
PHP:
void cmd_warp( char *param )        
{       
struct actor_info    *actor = NULL; // получение инфы о игроке 
int    playerid = atoi(param); // объявляем переменную playerid 
float pos[3]; // объявляем массив который состоит из 3ех координат 
        if ( g_Players == NULL ) // если игроков не найдено - вернуться на исходную 
         return; 
        if ( g_Players->iIsListed[playerid] != 1 ) // Если нет n ида в радиусе прорисовки 
        { 
         addMessageToChatWindow( "Player does not exist." ); // Добавить в чат: Player does not exist. 
         return; 
        } 

        if ( g_Players->pRemotePlayer[playerid]->pPlayerData == NULL 
         ||  g_Players->pRemotePlayer[playerid]->pPlayerData->pSAMP_Actor == NULL ) // если не получена инфа о выбранном игроке 
        { 
         if ( vect3_near_zero(g_stStreamedOutInfo.fPlayerPos[playerid]) ) // если игрок находится вне радиуса прорисовки 
         { 
          addMessageToChatWindow( "Player is not streamed in." );  // написать в чат Player is not streamed in. 
          return; 
         } 

         g_stStreamedOutInfo.fPlayerPos[playerid][1] += 1.0f; // получение инфы о позиции выбранного игрока 

         cheat_teleport( g_stStreamedOutInfo.fPlayerPos[playerid], 0 ); // телепорт к выбранному игроку 
        } 

        if ( !getPlayerPos(playerid, pos) ) // Если не получена инфа о игроке 
        { 
         addMessageToChatWindow( "Bad player info." ); // Добавить в чат: Bad player info. 
         return; 
        } 

        if ( g_Players->pRemotePlayer[playerid]->pPlayerData != NULL 
         &&  g_Players->pRemotePlayer[playerid]->pPlayerData->pSAMP_Actor != NULL ) 
         actor = g_Players->pRemotePlayer[playerid]->pPlayerData->pSAMP_Actor->pGTA_Ped; // перевод из гта ид в самп ид 

        if ( actor != NULL && ACTOR_IS_DEAD(actor) ) // Если игрок мертв 
        { 
         addMessageToChatWindow( "Player is dead." ); // Добавить в чат: Player is dead. 
         return; 
        } 

        pos[1] += 1.0f; // изменяем позиция по х на +1 
        cheat_teleport( pos, actor->base.interior_id ); // телепорт к игроку 
}



В
PHP:
samp.cpp
Ко всем
Code
PHP:
addClientCommand( "/m0d_tele_locations", (int)cmd_tele_locations );    
addClientCommand( "/m0d_teleport_locations", (int)cmd_tele_locations );
Вставить:
Code
PHP:
addClientCommand( "nick", (int)cmd_nick); //добавляем клиентскую команду

К функциям:
Code
PHP:
void cmd_nick( char *param )    
{    
setLocalPlayerName(param); //ставим локальное имя(видим только мы)    
disconnect( 500 );//дисконнкет от сервера(выход)    
restartGame();//рестарт игры    
g_SAMP->iGameState = 26;//ставим геймстейт(26 - ожидание подключения)    
}

Компилируем, в игре вводим /nick [Ник] - делается перезаход под этим ником

// p.s. Если всё правильно и ничего не работает - включайте в иник поддержку команд | cooles


Итак. Для начала сообщу, что работать мы будем в Microsoft Visual C++. При объяснении, не буду научно называть все функции и т.д., буду всё делать гораздо проще и понятнее.

Прежде всего, запускаем программу. Далее - создаём новый проект ( "Создать проект" -> "Пустой проект" ) и назавём его - "Lesson1". Далее, слева на обозревателе решений, кликаем правой кнопкой мыши на "Файлы исходного кода" -> "Добавить" -> "Пустой элемент" -> "Файл С++ (.cpp)".

И тут начинается самое интересное)
В самом верху пишем:
Code
PHP:
#include <iostream> // Подключаем основной инклуд (заголовок) 
using namespace std; // Пространство имён (что это такое - объясню позже)

Далее чуть ниже пишем:
Code
PHP:
int main() { 

}
Между фигурными скобками, будет находиться основная часть кода.
_______________________________________________________________

Далее напишем программу, которая выведит на наш экран текст - "Наша первая программа на С++"

Между фигурными скобками пишем:
Code
PHP:
setlocale(LC_ALL,"Russian"); // Подключаем русский язык в нашу программу 
cout << "Наша первая программа на С++" << endl; // Разберем подробнее эту строчку ниже 
system("pause"); // Не позволяет нашей программе "резкое выключение"
В итоге у нас должно получиться:

Code
#include <iostream> // Подключаем основной инклуд (заголовок)
using namespace std; // Пространство имён (что это такое - объясню позже)

PHP:
int main() { 
setlocale(LC_ALL,"Russian"); // Подключаем русский язык в нашу программу 
cout << "Наша первая программа на С++" << endl; // Разберем подробнее эту строчку ниже 
system("pause"); // Не позволяет нашей программе "резкое выключение" 
}

Как и обещал, разберем основную нашу строчку.
Code
cout << // Функция вывода текста/переменной на экран
"Наша первая программа на С++" // Наш текст, обязательно заключать в кавычки
<< endl; // Завершение строки, endline


Так-как действительно весь раздел забит вступительными уроками, не буду зацикливаться на простейших функциях.
Перейдём сразу к более чему-то сложному.

Итак, продолжаем работать с предыдущей программой

Code
#include <iostream>
using namespace std;

int main() {
setlocale(LC_ALL,"Russian");
cout << "Наша первая программа на С++" << endl;
system("pause");
}


Несного усложним её, добавив переменные.

После
Code
PHP:
setlocale(LC_ALL,"Russian");
Добавим
Code
PHP:
int a,b; // Объявление переменных типа integer (т.е. целого)
Далее приводим нашу программу в такой вид
Code
PHP:
#include <iostream> 
using namespace std; 

int main() {  
setlocale(LC_ALL,"Russian"); 
int a,b; 
cout << "Введите 1 число: "; 
cin >> a; // Ввод переменной с клавиатуры 
cout << "Введите 2 число: "; 
cin >> b; 
cout << "Сумма чисел = " << a+b << endl; 
system("pause");  
}
Думаю Вы поняли принцип действия программы. Она считывает поочерёдно две переменные, а затем выводит результат их сложения.
______________________________
В С++ нам часто придётся работать с функциями.
Для начала, после фигурной скобки, отступим пару строк и прописываем:
Code
PHP:
void summ() { 
int a,b; 
cout << "Введите 1 число: "; 
cin >> a; // Ввод переменной с клавиатуры 
cout << "Введите 2 число: "; 
cin >> b; 
cout << "Сумма чисел = " << a+b << endl; 
}
Соответственно в итоге, у нас должно получиться вот что:
Code
PHP:
#include <iostream> 
using namespace std; 

int main() {  
setlocale(LC_ALL,"Russian"); 
void summ(); // Объявляем нашу функцию 
summ(); // Выполняем функцию 
system("pause");  
}
PHP:
void summ() { 
int a,b; 
cout << "Введите 1 число: "; 
cin >> a; // Ввод переменной с клавиатуры 
cout << "Введите 2 число: "; 
cin >> b; 
cout << "Сумма чисел = " << a+b << endl; 
}


Итак, сегодня мы создадим нашу вторую полноценную программу "калькулятор".
Соответственно, вот её код:

[ОТРЕДАКТИРОВАННО]
Code
PHP:
#include <iostream>  
  using namespace std;  

  int main() {  
    setlocale(LC_ALL,"Russian"); 
    float a,c; // Объявляем "дробные" либо целые перемнные  
    char b; // Объявляем "символьную" переменную  
    cout << "Введите пример: ";  
    cin >> a >> b >> c;  
    if (b == '+') cout << "Сумма чисел = " << a+c << endl;  
    else if (b == '-') cout << "Разность чисел = " << a-c << endl;  
    else if (b == '*') cout << "Произведение чисел = " << a*c << endl;  
    else if (b == '/') {    
    if (c) cout << "Деление чисел = " << a/c << endl;  
      else cout << "Деление на ноль недопустимо" << endl;  
    }  
    else {  
       cout << "Проверьте правильность введённых данных" << endl; 
    } 
    system("pause"); 
    return 0; 
}

Теперь более подробное описание строк кода:
1.Цикл for -
Code
PHP:
for(;;)
полноценно, он бы выглядел следующим образом -
Code
f
PHP:
or(переменная = "" ; условие ; действие ) 
// Например 
for(i = 0; i < 10; i++) 
// Переменнпя i принимает значение = 1 
// Если i < 10 то i++ 
// Иначе, если i > 10 то выходим из цикла

2. Char -
Code
PHP:
char b;
Здесь ничего особенного нет, мы просто объявляем символьную переменную.
Т.е. содержащую 1 символ. Если же мы хотим в "будущем" поместить в неё строку,
то мы объявим её следующим образом -
Code
PHP:
char b[20];
[20] - максимальное кол-во символов. Вместо 20 может быть сколько угодно.

3. Ввод сразу нескольких чисел -
Code
PHP:
cin >> a >> b >> c;
То-есть, мы должны будем ввести, например - "1+2" и программа считает
сначала все числа до символа, затем все числа после символа и выведет результат. Например,
мы можем ввести - "100+43", но не можем ввести "100+43-2".
Скомплимировав данную программу, вам будет намного легче понять, как она работает.

4. Проверка "правильности" -
Code
PHP:
if (c) cout << "Деление чисел = " << a/c << endl; 
else cout << "Деление на ноль недопустимо" << endl;
В строке:
Code
PHP:
if (c) cout << "Деление чисел = " << a/c << endl;
Мы проверяем правильность числа 'c'. Как мы знаем, на ноль
делить нельзя и при попытке деления, программа выдаст ошибку.
Следовательно, если мы введём 0, то программа выполнит следующий фрагмент кода -
Code
PHP:
else cout << "Деление на ноль недопустимо" << endl;
Ну впринципе, всё остальное должно быть Вам понятно.
Переходим далее...

Циклы.


Циклы бывают 3 видов:

1.
Code
PHP:
do { 
//тело цикла 
} while( условие, при котором выполняется тело цикла )
2.
Code
PHP:
while(условие, при котором выполняется тело цикла ) { 
//тело цикла 
}
3.
Code
PHP:
for(переменная; условие; действие) { 
//тело цикла 
}

Чем же они отличаются друг от друга ?
В 1 цикле, изначально выполняется тело цикла, затем сверяется условие,
и если оно неверно, то мы выходим из цикла.
Во 2 цикле, изначально проверяется условие, и если оно верно, то выполняется
тело цикла.
3 цикл значительно сложнее в изучении, нежели 1 и 2. В условии данного цикла,
переменная принимает значение, "проходит" через условие и принимает
соответственное значение. Только лишь после всего этого, выполняется тело цикла.

Пример №1 ( выводит числа от 1 до 9 ) -
Code
PHP:
#include <iostream> 
using namespace std; 

int main() 
{ 
    setlocale(LC_ALL,"Russian"); 
    int i = 1; 
    do { 
     cout << i << " "; 
     i++; 
    } while(i < 10); 
    system("pause"); 
    return 0; 
}

Пример №2 ( выводит числа от 1 до 4 ) -
Code
PHP:
#include <iostream> 
using namespace std; 

int main() 
{ 
    setlocale(LC_ALL,"Russian"); 
    int i = 1; 
    while(i < 5) { 
     cout << i << " "; 
     i++; 
    } 
    system("pause"); 
    return 0; 
}

Пример №3 ( выводит числа от 20 до 2 ) -
Code
PHP:
#include <iostream> 
using namespace std; 

int main() 
{ 
    setlocale(LC_ALL,"Russian"); 
    int i; 
    for(i=20; i > 1; i--) cout << i << " "; 
    system("pause"); 
    return 0; 
}


Итак... как я и обещал, сегодня мы разберём массивы и строки.
Для начала, небольшое вступление.
Переменные бывают нескольких типов и некоторые из них мы уже знаем -
int "имя переменной" - целочисленный тип переменной ( integer );
char "имя переменной" - символьная переменная;
double "имя переменной" - будем называть дробной переменной ( например: 1,2 ; 5,12 и т.д. );
float "имя переменной" - переменная с "плавающей" точкой.

Далее... Например в
Code
PHP:
cout << "Текст" << endl;
Можно, вместо
Code
PHP:
<< endl;
Дописать
Code
PHP:
"Текст\n"
Например -
Code
PHP:
cout << "Наша первая программа\n";

"\n" можно расшифровать, как "endline" - "конец строки".
Массивы.


Ну во-первых, начнём с того, что массивы бывают:
1) Одномерные ( mass[3] );
2) Двумерные ( mass[5][2] );
3) Многомерные ( mass[8][4][2] ).

Объявляются они следующим образом -
1) тип имя[размер] ( например: int ar[5] );
2) тип имя[размер1][размер2] ( например: int ar[5][2] );
3) тип имя[размер1][размер2][размер3]...[размерXXXX] ( например: int ar[5][2][3][10] );

Разберём сразу небольшую программу, выводящую на экран числа от 0 до 9 -
Code
PHP:
#include <iostream> 
using namespace std; 

int main() { 
    int mass[10]; 
    int e; 
      for(e=0; e<10; e++) mass[e]=e; // Помещаем в массив значения от 0 до 9 
      for(e=0; e<10; e++) cout << mass[e] << "\n"; // Выводим все значения на экран 
    return 0; 
}
Теперь, возьмём фрагмент кода и разберём его -
Code
PHP:
for(e=0; e<10; e++) mass[e]=e;
Войдя в цикл, 'e' принимает значение = 0;
Выполняется тело цикла ( mass[e]=e ).
То-есть, первое число ( счёт в массиве начинается от 0 ) в массиве
примет значение = 0; 2 число = 1 и т.д. до 9.
Далее, выводим все значение на экран -
Code
PHP:
for(e=0; e<10; e++) cout << mass[e] << "\n";
Как видите, снова попадаем в цикл.
И его тело будет выполняться до тех пор, пока мы не выведем
на экран - mass[9], то-есть число 9.

Думаю, с массивами пока-что закончим, но мы всё-павно рано или поздно к ним верёмся, так-как при написании практически любой программы, Вам придётся с ними поработать.

Строки.


Чаще всего одномерные массивы используются для создания символьных строк.
Однако, в отличии от массивов, хранящих в себе числа, при объявлении символьного массива, мы должны зарезервировать место для нулевого символа в конце строки. Например -
Code
PHP:
char stroka[11];
_________________________

Итак, если мы через "cin >>" будем выводить строку, то -
"Hello World", выведится следующим образом - "Hello".
Так-что, вместо "cin >>", следует использовать - "gets('имя переменной')".
Однако для работы функции "gets()", следует прописать в самом начале, после -
Code
PHP:
#include <iostream>
Вот это -
Code
PHP:
#include <cstdio>
То-есть подключить библиотеку - "cstdio".

Часть I. Циклы.


Циклы бывают трёх видов. Повторим все три поочерёдно.
1 вид цикла - While ( условие ) { тело цикла }. Здесь, сначала проверяется условие, затем выполняется тело.
Пример программы, которая выводит на экран числа от 1 до 8 -
Code

PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a; 
  a = 0; 
  while(a < 8) { 
   a++; 
   cout << a << " число: " << a << endl; 
  } 
     system("pause>>null");  
     return 0;  
}

2 вид цикла - do { тело цикла } while ( условие );. Здесь сначала выполняется тело, затем сверяется условие.
Пример программы, аналогичной той, что была приведена ранее -
Code

PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a; 
  a = 0; 
  do { 
   a++; 
   cout << a << " число: " << a << endl; 
  } while (a < 8); 
     system("pause>>null");  
     return 0;  
}

3 вид цикла - for( условие; условие; действие ) { тело цикла }. Обратите внимание на то, что первое условие должно выглядеть так - имя_переменной = значение, либо тип имя_переменной = значение.
Пример программы -
Code

PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a; 
  a = 0; 
  for (int i = 0; i < 8; i++) { 
   a++; 
   cout << a << " число: " << a << endl; 
  } 
  system("pause>>null");  
     return 0;  
}
Обратите внимание на то, что все 3 программы выводят на экран один и тот-же результат.

Часть II. Массивы.


Массивы бывают трёх видов, о чём мы неоднократно с Вами говорили.
Например, заполним одномерный массив числами от 1 до 8 -
Code

PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a[8]; 
  for (int i = 0; i < 8; i++) { 
   a[i]=i+1; 
   cout << i+1 << " число: " << a[i] << endl; 
  } 
  system("pause>>null");  
     return 0;  
}
Программа с двумерным массивом, выведет на экран число 9 -
Code
PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a[8][2] = { 
   1,2, 
   2,3, 
   3,4, 
   4,5, 
   5,6, 
   6,7, 
   7,8, 
   8,9, 
  }; 
  cout << a[7][1] << endl; 
  system("pause>>null");  
     return 0;  
}
Давайте разберёмся, почему. Для начала напомню, для того чтобы вывести первое значение массива, мы должны воспользоваться след.инструкцией -
Code
PHP:
a[0];

Но никак не - 
Code
a[1];
В двумерном массиве, числа распределяются таблицей. Примеры таблиц можете посмотреть на просторах интернета.

Часть III. Указатели.


Рассмотрим -
Code

PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int *a,x; 
  x = 500;  
  a = &x;  //  Теперь переменная-указатель 'a' указывает на 'x'. 
  for (int i = 0; i < 10; i++) (*a)++;  //  Здесь фигурные скобки не нужны, т.к. в теле одно действие. 
  cout << *a;  //  Выводим на экран значение 'x'. 
  system("pause>>null");  
     return 0;  
}
Данная программа, выведет на экран - 510, то-есть конечное значение переменной x.


Пожалуй начнём.
________________________________________________________________________________
Не будем останавливаться на строках, просто повторим пройденное и я Вам расскажу о ещё 2 функциях с ними.

В предыдущем уроке, мы с Вами разобрали две функции со строками -
Code
PHP:
strcpy()  //  Копирует 2 строку в первую 

strcat()  //  Присоединяет 2 строку к концу 1
Существуют ещё две функции -
Code
PHP:
strcmp()  //  Сравнивает 2 строку с первой, и если они равны, то значение будет = FALSE 

strlen()  //  Возвращает длину строки в символах
___________________________
Разберём их детальнее.
Функция "strlen()" в действии -
Code
PHP:
#include <iostream> 
#include <cstdio> 
#include <cstring> 
using namespace std; 

int main() { 
     setlocale(LC_ALL,"Russian"); 
     char strok[80];  //  Массив, в который мы "внесём" нашу строку 
     cout << "Введите строку: "; 
     gets(strok);  //  Считываем нашу строку, т.е. вводим 
     cout << "Длина строки: " << strlen(strok) << " символов" << endl; 
     system("pause"); 
     return 0; 
}
Скомплимированная программа в действии (пример) -
Code
PHP:
Введите строку: Привет 
Длина строки: 6 символов
Или например -
Code
PHP:
Введите строку: 1234567 
Длина строки: 7 символов
Думаю принцип работы функции "strlen()" Вам понятен.
___________________________
___________________________

Функция "strcmp()" в действии -
Code
PHP:
#include <iostream> 
#include <cstdio> 
#include <cstring> 
using namespace std; 

int main() { 
     setlocale(LC_ALL,"Russian"); 
     char strok[80];  //  Массив, в который мы "внесём" нашу строку 
     cout << "Введите строку: "; 
     gets(strok); 
     if (strcmp(strok, "12345")) {  //  Если строки различны 
     cout << "Строки различны" << endl; 
     } 
     else cout << "Строки одинаковы" << endl;  //  Иначе, если строки равны 
     system("pause"); 
     return 0; 
}
Скомплимированная программа в действии (пример) -
Code
PHP:
Введите строку: Привет 
Строки различны
Или например -
Code
PHP:
Введите строку: 12345 
Строки одинаковы

И запомните, что если строки РАВНЫ, то будет значение FALSE.
___________________________

Думал изучим сегодня указатели, но всё-же рано к ним ещё переходить.
Пока-что на сегодня всё. Напишите в комментах, стоит ли нам переходить к указателям в след.уроке или не стоит.

Ну и Д/z на сегодня:
1. Написать любую программу, при включении которой, необходимо будет ввести пароль.
Пример -
Code
PHP:
Введите пароль:  qwerty 
Неверно ! 
Введите пароль: 1234q 
Верно, доступ открыт... 
Введите строку: 12345 
Длина строки: 5 символов
Это только-лишь пример !

2. Написать такую программу (пример в действии) -
Code
PHP:
Введите 2 строки, через пробел: Привет  мир 
Итог: Привет мир

Сегодня будет не совсем урок. Собственно сейчас сами всё увидите.


Итак, сегодня мы напишем случайную программу и соответственно разберём её.
Программа - Калькулятор случайных чисел.
Собственно сам код -
Code
PHP:
#include <iostream> 
#include <cstdlib> 
#include <cstdio>   
#include <conio.h>   
#include <windows.h> 
   using namespace std;   

   int main() {   
     setlocale(LC_ALL,"Russian"); 
     void chgen();  //  Объявляем нашу функцию 
     int a; 
     cout << "* Калькулятор случайных чисел *" << endl; 
     Sleep(2000);  //  Ждём 2 секунды 
     system("cls");  //  Очищаем консоль 
     cout << "Введите 1 для генерации числел и действий над ними\n"; 
     cout << "Введите 2 для выхода из программы\n"; 
     cout << "Ввод: "; cin >> a;  //  Соответственно ввод числа 
     switch(a) { 
     case 1: { chgen(); break; }  //  Если ввели 1 
     case 2: { break; }  //  Если ввели 2 
     default: { cout << "Вы ошиблись при вводе" << endl; break; }  //  Если ввели не 1 и не 2 
     break; }  //  Выходим из switch 
     system("pause");  // Не даём программе "резко" выключиться 
     return 0; 
}
PHP:
void chgen() {  //  Наша функция 
   system("cls");    
   int c,d,e,f,h,g;  //  Объявляем локальные переменные ( есть ещё глобальные ) 
   char l; 
   cout << "Задайте интервал 1 числа ( Например - от 10 до 1 )\n"; 
   cout << "Ввод (2 числа через пробел): "; cin >> c >> d; 
   e = rand()%c+d;  //  Случайное число в промежутке от 'c' до 'd' 
   cout << "Задайте интервал 2 числа ( Например - от 10 до 1 )\n"; 
   cout << "Ввод (2 числа через пробел): "; cin >> f >> h; 
   g = rand()%f+h; 
   cout << "Введите знак действия\n"; 
   cout << "Ввод: "; cin >> l; 
   if (l=='+') cout << e << l << g << "=" << e+g << endl; 
   else if (l=='-') cout << e << l << g << "=" << e-g << endl; 
   else cout << "Вы ошиблись при вводе" << endl; 
   Sleep(4000);  // Ну и соответственно ждём 4 секунды и выкл. 
}

Насчёт переменных.
Бывают локальные и глобальные переменные -
1) Локальные - действуют только в функции, но ни за пределами её.
2) Глобальные - действуют на протяжении "всей программы".

_________________________________________________
"Урок" получился чрезвычайно коротким. Настроя совершенно никакого сегодня нет...
Если Вы заинтересованы, то мы можем вместе написать программу и разобрать её.
Достаточно лишь отписаться по коду -
Code
PHP:
[b]Действия программы:[/b] [i]text[/i] 
[b]Нравятся ли Вам мои уроки:[/b] [i]text[/i]
Сразу говорю, я не заставляю Вас отписываться и т.п. Если хотите - то пожалуйста, если нет - я не обижусь.
А так-же предлагайте тему след.урока.

умаю всё то, что Вам пригодится в программировании на данный момент, мы изучили. Так-что перейдём так-сказать к "глобальному" повторению материала.
Начнём.

Существует множество типов переменных, но мы коснулись всего четырёх типов. Так-вот, напомню, что переменные бывают целочисленные и с "плавающей точкой".
К первому типу относятся такие, как -
Code
PHP:
int, char, short, long
Ко второму -
Code
PHP:
double, float
Быть может существуют ещё какие-либо типы, но мне известны только эти.
short, long не являются типами, как таковыми, а скорее являются приставками к целочисленным типам.
Например -
Code
PHP:
short int  содержит диапазон чисел от -32768 до 32767  ; 
long int  содержит диапазон чисел от -2147483648 до 2147483647.
Но в основном мы используем просто int и грубо говоря "не заморачиваемся".
_____________________
Что касается оформления программы. Мы совершенно не уделяли этому времени, но теперь уделим:D
Например, чтобы наша программа не было черно-белой, а цветной, сделаем следующее -
Подключаем инклуды по принципу "все до кучи", дабы потом не заморачиваться.
Code

PHP:
#include <iostream> 
#include <conio.h> 
#include <stdlib.h> 
#include <windows.h> 
#include <stdio.h> 
#include <string>
Далее в любом месте вашего кода прописываем следующее -
Code
PHP:
system("color 2A");
Где "2" - грубо говоря цвет фона в VMC, а "A" - цвет текста. Посмотреть все номера Вы можете на просторах интернета.

Функция очистки экрана -
Code
PHP:
system("cls");
Чтобы подождать кол-во миллисекунд -
Code
PHP:
Sleep(кол-во мс);
____________________

Вернёмся к массивам и сразу разберём небольшую и достаточно интересную для рассмотрения программу -
Code

PHP:
  #include <iostream>  
  #include <cstring> 
  #include <cstdlib> 
  #include <cstdio> 
  #include <conio.h> 
  #include <windows.h> 
  using namespace std;  
   
   int main() { 
   setlocale(LC_ALL,"Russian"); 
   int mass[100],k,i; 
   cout << "Введите кол-во чисел: "; cin >> k; 
   for (i = 0; i < k; i++) { 
    cout << "Введите " << i+1 << " число: "; 
    cin >> mass[i]; 
   } 
   system("cls"); 
   Sleep(1500); 
   for (i = 0; i < k; i++) { 
    cout << "Ваше " << i+1 << " число = " << mass[i] << endl; 
    Sleep(2000); 
   } 
   return 0; 
   system("pause"); 
  }
Данная программа считывает Ваши числа, а затем выводит их на экран.
Разберём её.
Code
PHP:
cout << "Введите кол-во чисел: "; cin >> k;
В этом фрагменте кода, программа считывает переменную k, то-есть кол-во чисел.
Code
PHP:
for (i = 0; i < k; i++) {
Условие цикла так-сказать. i принимает значение = 0 и увеличивается на единицу. Если i меньше переменной k, то выполняется тело цикла.
Code
PHP:
cout << "Введите " << i+1 << " число: "; 
cin >> mass[i];
Собственно тело цикла, в котором мы вводим поочереди столько чисел, сколько содержит в себе переменная k грубо говоря... И соответственно "заполняем" наш массив этими числами.
Code
PHP:
system("cls"); 
Sleep(1500);
Очищаем консоль и ждём полторы секунды.
Code
PHP:
for (i = 0; i < k; i++) { 
  cout << "Ваше " << i+1 << " число = " << mass[i] << endl; 
  Sleep(2000); 
  }
Выводим наши числа на экран. Например если mass = mass[0], то выводим первое число.
___________________

Ну собственно на сегодня всё. Заостряю много внимания на массивах, так-как они Вам пригодятся больше всего при написании профессиональных программ.


так. Сегодня будет сложный для понимания урок и соответственно не каждый его поймёт.
Начнём.


Повторение.


Прежде всего, хочу напомнить, что переменные бывают двух видов:
Глобальные ;
Локальные .

Глобальные объявляются вне функции ( будь-то main() или любая другая ), а с локальными соответственно всё наоборот и более запутанно.
Например, локальная переменная может быть объявлена в цикле for -
Code
PHP:
for (int i; i < 5; i++)
и она потеряет своё значение, после выхода из цикла.

Указатели.


Ну прежде всего, указатель - это переменная, которая содержит в себе адрес другой переменной. Объявляется она след. образом -
Code
PHP:
int *b  //  Вместо 'b' может быть любая другая переменная
Ну в общем, формат объявления указателя таков -
Code
PHP:
тип *переменная
С указателями используются лишь два оператора: * и &.
Например -
Code
PHP:
a = &b
Здесь, в переменную a, помещается адрес переменной b. Например, если b = 10, то после выполнения данного фрагмента кода, переменная a тоже станет равна 10.

Рассмотрим небольшую программу -
Code
PHP:
#include <iostream> 
usinf namespace std; 

int main() { 
   int a; 
   int *b; 
   int c; 
   a = 100;  //  Присваиваем значение переменной 
   b = &a;  //  Помещаем адрес переменной a, в переменную b 
   c = *b;  //  Присваиваем переменной c, значение a, на которую указывает переменная b. 
   cout << "C = " << c << endl;  //  Выводим на экран значение переменной c 
   system("pause"); 
   return 0; 
}
Так-вот, при выполнении этой программы получаем вот такой результат -
Code
PHP:
C = 100

_______________________________________________________________

На сегодня всё. Завтра напишу вторую часть урока.

предыдущей части урока, мы остановились на рассмотрении программы, с использованием указателей. Чтож... продолжим.
--------------------
Начнём с ошибок, которые новички допускают довольно-таки часто. Рассмотрим сразу на примерах.
Error №1 -
Код
PHP:
int *a; 
double b; 
// основной код 
a = &b  //  Ошибка.
Здесь ошибка кроется в том, что мы присваиваем double указатель, int указателю, что является грубой ошибкой.
Этот фрагмент кода можно заменить на -
Код
PHP:
a = (int *) &b;  //  Преобразуем double в int
--------------------
Error №2 -
*Не столь важная информация. Или не хватило фантазии *
--------------------

Арифметические действия над указателями.


Например, чтобы инкрементровать указатель, мы должны заключить его в скобки, так-как опертатор *, грубо говоря имеет больший приоритет, по сравнению с ++.
Код
PHP:
(*q)++;
И сразу рассмотрим пример программы -
Код
PHP:
#include <iostream> 
using namespace std; 

int main() { 
     int *p, num; 
     p = &num  //  Присваиваем переменной num, адрес p 
     *p = 10; 
     cout << num << endl; 
     (*p)++;  //  Инкрементируем указатель 
     cout << num << endl; 
     (*p)--;  //  Декрементируем и не забываем про скобки 
     cout << num << endl; 
     return 0; 
     system("pause"); 
}
Программа выведет следующие результаты -
Код
PHP:
10 
11 
10

---------------------
На этом всё, продолжения ( III части ) не будет
Д/z опубликовано в I части урока.
Удачи !

Часть I. Циклы.


Циклы бывают трёх видов. Повторим все три поочерёдно.
1 вид цикла - While ( условие ) { тело цикла }. Здесь, сначала проверяется условие, затем выполняется тело.
Пример программы, которая выводит на экран числа от 1 до 8 -
Code
PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a; 
  a = 0; 
  while(a < 8) { 
   a++; 
   cout << a << " число: " << a << endl; 
  } 
     system("pause>>null");  
     return 0;  
}
2 вид цикла - do { тело цикла } while ( условие );. Здесь сначала выполняется тело, затем сверяется условие.
Пример программы, аналогичной той, что была приведена ранее -
Code
PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a; 
  a = 0; 
  do { 
   a++; 
   cout << a << " число: " << a << endl; 
  } while (a < 8); 
     system("pause>>null");  
     return 0;  
}

3 вид цикла - for( условие; условие; действие ) { тело цикла }. Обратите внимание на то, что первое условие должно выглядеть так - имя_переменной = значение, либо тип имя_переменной = значение.
Пример программы -
Code
PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a; 
  a = 0; 
  for (int i = 0; i < 8; i++) { 
   a++; 
   cout << a << " число: " << a << endl; 
  } 
  system("pause>>null");  
     return 0;  
}
Обратите внимание на то, что все 3 программы выводят на экран один и тот-же результат.

Часть II. Массивы.


Массивы бывают трёх видов, о чём мы неоднократно с Вами говорили.
Например, заполним одномерный массив числами от 1 до 8 -
Code

PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a[8]; 
  for (int i = 0; i < 8; i++) { 
   a[i]=i+1; 
   cout << i+1 << " число: " << a[i] << endl; 
  } 
  system("pause>>null");  
     return 0;  
}
Программа с двумерным массивом, выведет на экран число 9 -
Code
PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int a[8][2] = { 
   1,2, 
   2,3, 
   3,4, 
   4,5, 
   5,6, 
   6,7, 
   7,8, 
   8,9, 
  }; 
  cout << a[7][1] << endl; 
  system("pause>>null");  
     return 0;  
}
Давайте разберёмся, почему. Для начала напомню, для того чтобы вывести первое значение массива, мы должны воспользоваться след.инструкцией -
Code
PHP:
a[0];
Но никак не -
Code
PHP:
a[1];
В двумерном массиве, числа распределяются таблицей. Примеры таблиц можете посмотреть на просторах интернета.

Часть III. Указатели.


Рассмотрим -
Code
PHP:
#include <iostream>  
#include <conio.h>  
#include <cstdio>  
#include <windows.h>  
using namespace std;  

int main() { 
  setlocale(LC_ALL,"Russian");  
  int *a,x; 
  x = 500;  
  a = &x;  //  Теперь переменная-указатель 'a' указывает на 'x'. 
  for (int i = 0; i < 10; i++) (*a)++;  //  Здесь фигурные скобки не нужны, т.к. в теле одно действие. 
  cout << *a;  //  Выводим на экран значение 'x'. 
  system("pause>>null");  
     return 0;  
}
Данная программа, выведет на экран - 510, то-есть конечное значение переменной x.

--------------------------------------------------------------

Вот и наступил тот момент, когда я прекращаю выпускать новые уроки. Но быть может через недельку или месяцок я продолжу, но уже в новом стиле и под другим названием, а может-быть и на другую тематику.
Д/z -
1) Написать сложную программу, которая будет в себя включать указатели, циклы и т.п.;
2) Написать программу, включающую в себя массивы / либо все 3 вида циклов.

+ не прошу, я лишь хочу заполнить данный раздел
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу