Программирование - это просто
Advertisement
Главная
20.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Microsoft visual c++ 2008. Урок 15. Дополнительные сведения о циклах. Оператор перехода по меткам. Печать E-mail
Автор megabax   
12.02.2012 г.
New Page 1

Microsoft visual c++ 2008. Урок 15. Дополнительные сведения о циклах. Оператор перехода по меткам.

Как мы уже знаем, циклы бывают с предусловием while, с постусловием do...while и цикл счетчик  for. Иногда бывает, что нам условие выход из цикла становиться известным только в середине тела цикла. В этом случае нам поможет оператор break - он просто прерывает цикл. Мы можем даже задать цикл без условия выхода, но  с оператором break. Другой оператор, continue, прерывает только текущую итерацию цикла, осуществляя переход к следующему шагу. 

Рассмотрим пример: пусть у нас есть несортированный массив, который содержит как положительные, так и отрицательные числа. Нам требуется найти  в нем число, заданное число и подсчитать сумму положительных чисел от первого элемента до найденного числа, не включая само найденное число. Реализация может выглядеть так:

#include "stdafx.h"

#include <stdio.h>

#include <stdlib.h>  //for atoi

#include <conio.h>

#define eof -1   //Ctrl+Z

#define maxline 100

 

// ввод строки с клавиатуры

int getline(char s[], int lim) {

    int c,i;

    for(i=0; i<lim-1 && (c=getchar())!=eof && c!='\n'; i++) s[i]=c;

    s[i]='\0';

    i++;

    return i;

}

 

 

int _tmain(int argc, _TCHAR* argv[])

{

    int v[10]={0,1,-2,3,4,-4,-8,9,-2,-1};

    int c,i,x;

    int sum;

    bool found;

    char s[maxline];

    printf("Enter new x ");

    getline(s,maxline);

    x=atoi(s);

    sum=0;

    found=false;

    for(i=0;i<10;i++) {

        if(v[i]==x) {

            found=true;

            break; //нашли - прерываем цикл (само найденное число не включаем в сумму)

        }

        if(v[i]<0) continue; //если число отрицательное, пропускаем его

        sum=sum+v[i];

    }

    if (found) printf("x fount sum=%d\n",sum); else printf("x is not found!\n");

    printf("Press any key to continue");

    _getch();  

    return 0;

}

А вот протокол работы программы:

Microsoft visual c++ 2008. Урок 15. Дополнительные сведения о циклах. Оператор перехода по меткам.

И у нам еще осталось рассмотреть такую экзотическую возможность C++, как переход по меткам при помощи оператора goto. Почему я считаю эту возможность экзотической? Впервые с таким оператором я встретился, когда изучал древний вариант языка Бэйсик. Это было более пятнадцати лет тому назад. Тогда еще компьютеры были такие с зелеными буковками на экране. В этой версии не было ни циклов с постусловием, ни с предусловием. Только цикл счетчик и возможность перехода по меткам. Но вскоре я изучил Паскаль. С тех пор (более пятнадцати лет) ни разу не использовал goto. И вам не советую. Но, раз уж такая возможность  C++ есть, все же приведу пример:

#include "stdafx.h"

#include <stdio.h>

#include <stdlib.h>  //for atoi

#include <conio.h>

#define eof -1   //Ctrl+Z

#define maxline 100

 

// ввод строки с клавиатуры

int getline(char s[], int lim) {

    int c,i;

    for(i=0; i<lim-1 && (c=getchar())!=eof && c!='\n'; i++) s[i]=c;

    s[i]='\0';

    i++;

    return i;

}

 

 

int _tmain(int argc, _TCHAR* argv[])

{

    char s[maxline];

    int x;

    lb: printf("Enter number 3 ");

    getline(s,maxline);

    x=atoi(s);

    if (x!=3) {

        printf("%d - I say 3!\n",x);

        goto lb;

    }

    printf("Press any key to continue");

    _getch();  

    return 0;

}

И протокол работы:

Microsoft visual c++ 2008. Урок 15. Дополнительные сведения о циклах. Оператор перехода по меткам.


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями   программного продукта "Microsoft Visual C++ Express Edition", авторское право на который принадлежит корпорации Microsoft.. 


 

Последнее обновление ( 09.10.2013 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги