Форум программистов, компьютерный форум CyberForum.ru

Непонятки с итераторами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск элемента в массиве http://www.cyberforum.ru/cpp-beginners/thread678678.html
Почему не выводится цифра 6? #include <stdio.h> #include <string.h> int main () { char szInput = "1234567890"; int k, n = 6; for(k=0; k<strlen(szInput); k++) if(szInput==n) printf("%d\n", szInput);
C++ Задача про новогодний подарок Даны целые неотрицательные A, X, Y, Z. Известно, что в каждые новогодний подарок необходимо положить A конфет, одно или два яблока, одну или две груши, причем количество фруктов в подарке должно равняться трем. Какое максимальное количество подарков можно скомплектовать из X конфет, Y яблок и Z груш. http://www.cyberforum.ru/cpp-beginners/thread678675.html
C++ Лабараторная работа
Здравствуйте, прошу помочь с лабораторной работой. Попалась очень сложная. Заранее Спасибо. 1.Найти значение выражения: http://i44.***********/big/2012/1023/95/b3f7a1883994f732201d494928d66c95.png 2.Найти значение сумму ряда с точностью e: http://i44.***********/big/2012/1023/8a/10aa7793c166552aa605b0b60bf3468a.png http://i45.***********/big/2012/1023/4b/204be962077665a7de94124ad28d554b.png...
Найти количество строк матрицы, содержащих нулевые элементы C++
В общем написал такую вот программу но есть проблемка-http://i037.***********/1210/47/d753a3df6509.jpg,не могу понять в чем дело,пожалуйста помогите кто может. #include"stdafx.h" #include<locale> #include<conio.h> #include<math.h> #include<stdlib.h> #include<iostream> #include<time.h> #include<memory.h>
C++ Что дальше http://www.cyberforum.ru/cpp-beginners/thread678665.html
Здравствуй те Господа программисты ! Хотел бы спросить следующее - более или менее ( не мне судить ) изучил с++ , ооп , и не мало прикоснулся к api , так вот вопрос , что посоветуй те почитать , изучать дальше для более высокого уровня развитие , конечно хотелось бы именно в этом же языке програмирования . Заранее всем ОГРОМНОЕ спасибо !!! :)
C++ Рекурсивная функция вычисления факториала В коде #include "stdafx.h" #include <iostream> #include "fact.h" int main() { using namespace std; cout<<"Enter the number of N:"; подробнее

Показать сообщение отдельно
UmKaM
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 5
23.10.2012, 20:14  [ТС]     Непонятки с итераторами
У всех контейнеров есть метод find( T item ), возвращающий итератор на запрошенный элемент.
Сделай typedef для list<int> и list<int>::iterator, а то читать нереально.
- сделал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <list>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
typedef list<int>::iterator it;
typedef list<int> lis;
 
it find(int h, lis l)
{
    it i=l.begin();
    for(i++; (*i)!=h && i!=l.end(); ++i);
    return i;
}
 
void spisker(lis l, it z, int a1, int a2, int a3, int a4, int b1, int b2, int c)
{   //функция вычисляет очередной элемент последовательности.
    it i=z;
    z--;
    int h=(*z)*(a1*(*i)+a2)+(*i)*a3+a4;
    if(h>b1 && h>b2)
    {
        h=h-c*(((h-b2)%c!=0)+(h-b2)/c);
    }
    z=find(h, l); //возвращает l.end()
    if((z!=l.end()) && (z!=l.begin())) //но какой-то неведомой мне магией проходит эту проверку и заходит в блок.
    {
        z--;
        i--;
        h=(*i);
        if(h==(*z)) //в итоге тут происходит обращение к "левой" памяти.
            c=-1;
    }
    l.push_back(h);
}
 
int main()
{
    int a1,a2,a3,a4,b1,b2,c;
    a1=0;           //ввод значений упускаю, даже на этом примере не работает.
    a2=0;
    a3=2;
    a4=3;
    b1=20;
    b2=5;
    c=7;           //cin >> a1 >> a2 >> a3 >> a4 >> b1 >> b2 >> c;
    lis l;
    int q, p=0;
    q=0;            //cin >> q;
    l.push_back(q);
    q=1;               //cin >> q;
    l.push_back(q);
    while(p==0) //происходит обращение к "левой" памяти уже на первом проходе цикла
    {
        it z=l.end();
        z--;
        spisker(l, z, a1, a2, a3, a4, b1, b2, c);
        if(c==-1)
        {
            q=1;
            p=1;
            for(it i=l.begin(); i!=z; i++)
                p++;
            for(it i=z; i!=l.end(); i++)
                q++;
        }
    }
    cout << p << ' ' << q;
    return 0;
}
Добавлено через 12 минут
Герц, сделал.
Кликните здесь для просмотра всего текста
сорри за два поста, ещё не до конца всё понял
 
Текущее время: 19:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru