[C++] [Уроки от Cool_Story] [Урок №5] - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
[C++] [Уроки от Cool_Story] [Урок №5]
Cool_Story_Bro=) Дата: Четверг, 01.11.2012, 14:30 | Сообщение # 1
Любитель
Сообщений: 49
Статус: Offline
Урок №5
"Повторение изученного"


Отныне уроки будут иметь немного другой внешний вид и включать в себя больше информации.
Итак, пожалуй начнём.
________________________________________________________
[След.информация будет полезна в основном для начинающих]
--------------------------------------------------------------------------------------------------
Мы все знаем, что практический любой язык программирования, включает в себя конструкции -
Code
if (условие) {
// действие
}
else if (условие) {
// действие
}
else (условие) {
// действие
}

Примечание: фигурные скобки нужны лишь тогда, когда тело конструкции будет включать в себя несколько действий. В иных случаях, фигурные скобки можно "опустить". Например -
Code
if (a>5) {
   a--;
   cout << "A = " << a << endl;
}
   else cout << "A меньше 5" << endl;

Переведём код на "понятный нам всем язык" -
Code
Если (a больше 5) то
    // действия
Иначе, действия


Думаю, насчёт - "if , else, else if и т.д.", Вам всё понятно.
Переходим далее...
_________________________________________________
В некоторых случаях, условные конструкции можно заменить следующим образом -
Фрагмент кода программы
Code
int a;
cout << "Введите a: ";
cin >> a;

switch(a) {
    case 1:  // если переменная 'a' = 1
       cout << "A = 1" << endl;
       break; // выходим из кейса
    case 2:
       cout << "A = 2" << endl;
       break;
    default:  // если переменная 'a' не равна ни единице, ни двойке
       cout << "A не равна единице или двойке" << endl;
   break;  // выходим из switch
}

Что-же такое "switch" ?
Так-вот, "switch" - это инструкция многонаправленного ветвления ( то-есть имеет несколько значений так-сказать ).
Code
switch(a) {
// кейсы и т.д.
}

Конструкция "switch" подобна конструкции "if".
Например, данный фрагмент кода -
Code
int a;
cout << "Введите a: ";
cin >> a;

switch(a) {
    case 1:  // если переменная 'a' = 1
       cout << "A = 1" << endl;
       break; // выходим из кейса
    case 2:
       cout << "A = 2" << endl;
       break;
    default:  // если переменная 'a' не равна ни единице, ни двойке
       cout << "A не равна единице или двойке" << endl;
   break;  // выходим из switch
}

Можно заменить на -
Code
int a;
cout << "Введите a: ";
cin >> a;
if (a == 1) cout << "A = 1" << endl;
else if (a == 2) cout << "A = 2" << endl;
else cout << "A не равна единице или двойке" << endl;

Но согласитесь, что с инструкциями "switch" код смотрится намного опрятнее и в нём Вам будет сложнее запутаться, нежели в инструкциях "if", что немало важно.
!!А так-же, пример использования символов в кейсе -
Code
case 'a':   
    // Действие


Переходим далее...
_____________________________________________
Теперь, вернёмся к циклам.
Итак, надеюсь Вы помните те три их вида, что мы недавно с Вами изучали.
Хотя... циклы это не такая-уж и сложная часть, чтобы на ней зацикливаться
Да да, именно зацикливаться ( то-есть, повторять до тех пор, пока Вам не станет ясно, или пока условие не станет неверно ).
Ладно, идём дальше...
_____________________________________________
Что такое такое массивы ? Мы уже отвечали на данный вопрос, но сейчас копнём, так-сказать глубже.
Представьте себе обычную коробку. Допустим она может вместить в себя десять яблок. На каждом яблоке имеется наклейка с его номером ( от 0 до 9 ).
Вот так будет выглядить эта пустая коробка -
Code
int box[10];

Теперь начнём поочерёдно загружать в неё яблоки -
Code
int t;
for(t = 0; t < 10; t++) box[i]=t;  // Погружаем яблоки, до тех пор, пока наша коробка не заполнится ( box[0] будет с номером 0 )

Теперь, допустим мы их привезли на склад и должны выгрузить -
Code
for(t = 0; t < 10; t++) cout << box[t] << endl;

На экране это будет выглядеть след.образом -
Code
0
1
2
3
4
5
6
7
8
9

Теперь, когда мы выгрузили яблоки, их не помешало-бы отсортировать, но в нашем случае они уже отсортированы. Самый простой и понятный для новичков метов сортировки массива - "Метод пузырьковой сортировки". О нём, Вы сможете почитать в интернете, так-как там слишком много придётся объяснять.

С массивами на данный момент - всё. Идём далее...
________________________________________________
Новая функция - "rand()". Думаю по названию уже стало понятно, что это способ получить "рандомное" число, ну или - случайное. Например -
Code
int a = rand();

Но для её использования, необходимо подключить следующую библиотеку ( то-есть дописать в инклуды ) -
Code
#include <cstdlib>

Но если мы не зададим интервал для "rand()", то мы получим очень большое число, которое мало кого устроит smile . Так вот, чтобы задать интервал, мы должна дописать -
Code
int a - rand()%10+1  // Случайное число от 1 до 10

Ну в принципе всё, идём далее...
_________________________________________________
Как и обещал, рассмотрим функции со строками.
Для начала ко всем инклудам мы должны добавить -
Code
#include <cstring>

Все видов функций немного и сегодня мы разберём две из них.
1 - "strcpy()". Что-же это такое ?
Общий формат вызоа данной функции таков -
Code
strcpy(stroka1, stroka2);  // Вместо stroka1 и stroka2 должны быть Ваши объявленные переменные/ массивы...

Функция "strcpy()" копирует содержимое строки "stroka2" в строку "stroka1".
Вот пример программы с её использованием -
Code
#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char str[100];  // Объявляем символьный массив
    strcpy(str, "World");  // Копируем в наш массив, строку - "World"
    cout << str;  // Выводим на экран наш массив, то-есть строку - "World"
    return 0;
}

Думаю принцип понятен, переходим ко второй функции.

2 - "strcat()".
Функция "strcat()" присоединяет вторую строку к концу первой, при этом вторая строка не изменяется.
Пример программы -
Code
#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char str1[30], str2[30];  // Объявляем символьный массив
    strcpy(str1, "Hello");  // Копируем в первый наш массив, строку - "Hello"
    strcpy(str2, "  World");  // Копируем во второй наш массив, строку - "  World"
    strcat(str1, str2);  // Присоединяем "  World" к "Hello".
    cout << str1;  // Выводим на экран понлноценную строку - "Hello World"
    return 0;
}


Функции со строками достаточно лёгкие, так-что думаю не стоит их так уплотнённо разбирать.
Одного - два примера вполне достаточно для начала.
И на этом мы заканчиваем 5 урок...

_________________________________________________
Домашнее задание:
1) Написать свою программу, с использованием "switch", которая при вводе буквы, выводит слово, начинающееся на эту букву.
Программа в действии -
Code
Введите букву: а
Слово на эту букву: Апельсин

И соответственно выложить код в эту тему.
2) Написать программу - "угадай число", с использованием функции - "rand()"
Программа в действии -
Code
Ваше число: 3
Неверно!
Ваше число: 5
Правильно!

Я не спорю, что Вы сможете найти готовые коды программ на просторах интернета, или вовсе проигнорировать это задание. Но помните, что Вы это делаете не для меня, а для себя в первую очередь...
_________
The End !

Добавлено (01.11.2012, 14:30)
---------------------------------------------
Ах-да, забыл в конце программ, перед последней фигурной скобкой, перед "return 0", добавить - system("pause"); чтобы программа внезапно не вылетала после её исполнения.


Сообщение отредактировал Cool_Story_Bro=) - Четверг, 01.11.2012, 14:31
alex3931 Дата: Четверг, 01.11.2012, 15:14 | Сообщение # 2
Боец
Сообщений: 129
Статус: Offline
Д\З




Пишу софт на заказ.Скайп sprilt

Сообщение отредактировал alex3931 - Четверг, 01.11.2012, 15:30
Cool_Story_Bro=) Дата: Пятница, 02.11.2012, 12:27 | Сообщение # 3
Любитель
Сообщений: 49
Статус: Offline
Quote (alex3931)
Code
#include <iostream>   
#include <cstdlib>   
using namespace std;   

int main()  {    
setlocale(LC_ALL,"Russian");    
int a;  
int i; - rand()%10+1;     
cout << "Введите число: ";    
cin >> a;    
if (a = i)     
cout << "Вы угадали!";    
else     
cout << "Неверно!";    
system("PAUSE>>null");    
return 0;   
}

Следующая программа выдаст ошибку.
Почему ?
Потому-что в этом фрагменте -
Code
if (a = i)

Мы должны были сравнить два числа, а не присвоить одно другому, сделующий фрагмент кода будет работать правильно -
Code
if (a == i)  


А так-же в этом фрагменте есть грубая ошибка -
Code
int i; - rand()%10+1;

Вот так правильно -
Code
int i;
i = rand()%10+1;


И не совсем понимаю эту строчку -
Code
system("PAUSE>>null");

Почему-бы не написать вот-так -
Code
system("pause");
alex3931 Дата: Пятница, 02.11.2012, 15:49 | Сообщение # 4
Боец
Сообщений: 129
Статус: Offline
Почему-бы не написать вот-так -
Code
system("pause");
Потому что когда включиш программу там будет текст"Для продолжения нажмите любую клавишу" >> Null это убирает


Пишу софт на заказ.Скайп sprilt
Pro100Gad Дата: Понедельник, 05.11.2012, 23:13 | Сообщение # 5
Новичок
Сообщений: 20
Статус: Offline
D/z №1

Д/з №2
4elovek1 Дата: Четверг, 29.11.2012, 21:17 | Сообщение # 6
Боец
Сообщений: 83
Статус: Offline
Д/З
Code
#include <conio.h>
#include <iostream>
#include <clocale>

using namespace std;

int main()
{
  setlocale(LC_ALL,"Russian");  
  int x;
     int r;  
r = rand()%10+1;
    cout << "Специально для Cheat-Master" << endl;
    cout << "by 4elovek1" << endl;

    cout << "Ваше число" << endl;
    cin >> x;
    if (x == r)
     cout << "Вы угадали" << endl;
    else
     cout << "Вы не угадали!" << endl;

     

  _getch();
    return 0;
}


Второго нет, т.к случаено стер)


Ронни1 Дата: Пятница, 04.01.2013, 19:05 | Сообщение # 7
mdk
Сообщений: 235
Статус: Offline
Было б хорошо если б ты рассказал про функцию srand() ,потому что употребление rand() без нее не всегда удобно

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



скайп man.ronny(нажми на няшку, чтобы добавить меня в скайп)
Toplivo Дата: Понедельник, 14.01.2013, 18:44 | Сообщение # 8
Советник
Сообщений: 728
Статус: Offline
1
Код
char x;
cout << "Введите букву" << endl;
cin >> x;
switch(x) {
case 'a':
cout << "Слово на эту букву: апельсин" << endl;
break;
case 'b':
cout << "Слово на эту букву: белка" << endl;
break;
case 'c':
cout << "Слово на эту букву: самокат" << endl;
break;
case 'd':
cout << "Слово на эту букву: дружба" << endl;
break;
case 'e':
cout << "Слово на эту букву: ель" << endl;
break;
case 'f':
cout << "Слово на эту букву: фокус" << endl;
break;
case 'g':
cout << "Слово на эту букву: глина" << endl;
break;
default:
cout << "Допустимые буквы: a-g" << endl;
break;
}


2.Я чуть-чуть изменил его)
Код
int a = rand()%10+1;
int b;
cout << "Угадайте число" << endl;
cin >> b;
if(b == a) {
cout << "Ваше число: " << b << endl;
cout << "Правильно " << a << endl;
}
else {
cout << "Ваше число: " << b << endl;
cout << "Не верно!Правильный ответ: " << a << endl;
}



Дурак дает,умный берет.


Сообщение отредактировал egor7878 - Понедельник, 14.01.2013, 18:51
MyCrofon Дата: Вторник, 09.07.2013, 15:28 | Сообщение # 9
Новичок
Сообщений: 5
Статус: Offline
1 код:
#include <iostream>
using namespace std;
int main () {
setlocale(LC_ALL,"Russian");
char i;
cout <<"Введите букву"<<endl;
cin >> i;
switch (i) {
case 'a':
cout <<"Ваше слово: Апельсин"<<endl;
break;
case 'c':
cout <<"Ваше слово: Самолет"<<endl;
break;
case 'p':
cout <<"Ваше слово: Пакетик"<<endl;
break;
default:
cout <<"Неправильно"<<endl;
break;
}
system("pause");
return 0;
}

2 код:
#include <iostream>
#include <cstdlib>
using namespace std;
int main () {
setlocale(LC_ALL,"Russian");
int a;
int b;
b = rand()%5+1;
cout <<"Введите ваше число"<<endl;
cin >> a;
if(a==b)
cout <<"Вы выиграли!"<<endl;
else
cout <<"Попробуйте еще раз"<<endl;
system("pause");
return 0;
}
heartless_schoolboy Дата: Вторник, 09.07.2013, 16:06 | Сообщение # 10
Любитель
Сообщений: 42
Статус: Offline
Да уж, как в школе, один ошибся, другой списывает и повторяет за ним. biggrin Лучше д\з в личку кидать!
MyCrofon Дата: Вторник, 09.07.2013, 21:35 | Сообщение # 11
Новичок
Сообщений: 5
Статус: Offline
biggrin .А в чем у меня ошибка?
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7210]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи
PUPS12124 [02:09]

Bioksit [00:15]

Dafdaf [23:27]

ячеченец [21:00]

balbesbizad [12:02]

cpark [11:40]

Mario_Imperator [11:33]

leonovichstas97 [22:40]

ubeyefudu [18:53]

zheniakuzma [17:47]

Moonberg [16:04]

tamararl6 [15:04]

consuelobm3 [08:03]