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

не заполняется вектор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ С++ классы visual studio http://www.cyberforum.ru/cpp-beginners/thread714567.html
помогите реализовать сумму даты и определенного количества дней. например 3.10.2012+390=28.10.2013 високосный год не учитывать наработки есть void Date::summa() { int s,t; int m={31,28,31,30,31,30,31,31,30,31,30,31}; int n={1,2,3,4,5,6,7,8,9,10,11,12};
C++ Одномерный массив и функции (сделать 3 функции ввода/решения/вывода) Ребята помогите, хоть убейте не могу эту задачу с помощью функций сделать!( Нужно сделать 3 функции ввода/решения/вывода. Кому не сложно помогите лузеру...Программирование тяжело очень дается(( #include <iostream.h> #include <conio.h> int main () { const int n=10; int i,b,A; for(i=0; i<n;i++) { cin>>A;} cout<<"Vivod"<<endl; b=A; http://www.cyberforum.ru/cpp-beginners/thread714559.html
Инициализация структуры через точку C++
Доброго юзаю MVS2012 Проблема есть структура struct ST { int a; int b; };
C++ Разработка программ содержащих функции
При передаче по значению в принимающую функцию передается не сама переменная-параметр, а только ее значение – копия. Это уже не одна переменная, а, фактически, две. Первая является локальной по отношению к главной функции, а вторая локальной по отношению к принимающей функции. Если эти переменные имеют одно и тоже имя, конфликта не возникает, т.к. они локальны. При изменении переменной в...
C++ Поиск минимального элемента на отрезке http://www.cyberforum.ru/cpp-beginners/thread714536.html
Дана последовательность n целых чисел a1, a2, ..., an, которые в процессе работы могут изменяться. Требуется написать программу, умеющую быстро находить минимум на отрезке от i до j, то есть min(ai, ai+1, ..., aj). Исходные данные В первой строке записано число элементов n. Во второй строке через пробел записаны n целых чисел. В третьей строке записано число запросов m. В следующих m строках...
C++ Механизм прерывания ввода Ребят, передо мной стоит задание написать функцию, которая принимает в качестве аргумента структуру, а возвращает целое значение. Данная функция должна предлагать пользователю ввести данные структуры, и если он вводит пустую строку, то функция возвращает "ноль", и функция прерывает свою работу. прога в принципе работает, вот только на этом этапе я и застрял, а именно - на создании механизма... подробнее

Показать сообщение отдельно
Alpi
104 / 0 / 1
Регистрация: 16.11.2012
Сообщений: 41
01.12.2012, 15:16  [ТС]     не заполняется вектор
Toshkarik, спасибо за помощь, действительно. Я почитал еще раз объяснение и т.п.
Тем не менее,
я немного поправил, но функция все равно не считается, т.е. в массиве z содержатся только нули. Но она обязана прирастать, я на желтом листочке в клеточку проверил...

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
#include <iostream>
#include <string>
#include <cstdlib>
 
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
int main ()
{
    char s[17] = "abcdabcabcdfghab";
    int z[17] = {0};
    for  (int i=1, l=0, r=0; i < 17; ++i)
        {
            if (i < r || i == r)
            {
                z[i] = min (r-i+1, z[i-l]);
            }
            while (i + z[i] < 17 && s[z[i]] == s[i+z[i]])
            {
                z[i]+=1;
            }
            if (i + z[i] - 1 > r)
            {
                l = i;
                r = i + z[i] - 1;
            }
            ++i;
 
        }
    cout << z[6];
        return 0;}
Добавлено через 24 минуты
Заработало вот так:
Вроде вывод правильный.

Всем спасибо большое, это был ценный опыт.
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
int main ()
{
    char s[17] = "abcdabcabcdfghab";
    int z[17] = {0};
    for  (int i=0, l=0, r=0; i < 17; ++i)
        {
            if (i < r || i == r)
            {
                z[i] = min (r-i+1, z[i-l]);
            }
            while (i + z[i] < 17 && s[z[i]] == s[i+z[i]])
            {
                ++z[i];
            }
            if (i + z[i] - 1 > r)
            {
                l = i;
                r = i + z[i] - 1;
            }
            cout << i << " "<< z[i] << ' ' << endl;
           
 
        }
    
        return 0;}
 
Текущее время: 08:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru