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

При построений выдаёт ошибку... - C++

Восстановить пароль Регистрация
 
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
23.05.2010, 18:13     При построений выдаёт ошибку... #1
Добрый день, уважаемые. Имеется код, при построений которого выдаёт ошибку
1fatal error LNK1120: 1 unresolved externals
2error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
Подскажите пожта, в чём может быть проблема.

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
73
74
75
76
77
78
79
const char* LCSubstring(const char* a, const char* b, size_t& slen)
{
    if(a == NULL || b == NULL)
        return NULL;
 
    slen = 0;
    size_t pos = 0;
 
    size_t a_len = sizeof(a);
    size_t b_len = sizeof(b);
 
    if(a_len == 0 || b_len == 0)
        return NULL;
 
    for(size_t i = b_len - 1; i >= 1; i--)
    {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = b_len - i, k = 0; j < b_len; j++, k++)
        {
            if(a[k] == b[j])
            {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
            {
                if(s_count > slen)
                {
                    slen = s_count;
                    pos  = s_pos;
                }
                s_count = 0;
                s_pos   = -1;
            }
        }
        if(s_count > slen)
        {
            slen = s_count;
            pos  = s_pos;
        }
    }
 
    for(size_t i = 0; i < a_len; i++)
    {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = 0, k = i; j < b_len; j++, k++)
        {
            if(a[k] == b[j])
            {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
            {
                if(s_count > slen)
                {
                    slen = s_count;
                    pos  = s_pos;
                }
                s_count = 0;
                s_pos   = -1;
            }
        }
        if(s_count > slen)
        {
            slen = s_count;
            pos  = s_pos;
        }
    }
 
    if(slen == 0)
        return NULL;
 
    return (a + pos);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
23.05.2010, 18:16     При построений выдаёт ошибку... #2
нету главной функции main
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
23.05.2010, 21:39  [ТС]     При построений выдаёт ошибку... #3
При добавлении main
(7): this line contains a '{' which has not yet been matched
(9) : error C2601: 'LCSubstring' : local function definitions are illegal


Добавлено через 3 часа 10 минут
Поправил код... теперь выдаёт (92) : error C2440: 'return' : cannot convert from 'const char *' to 'char *'
Помогите пожта разобраться с проблемой
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "stdafx.h"
const char * one;
const char * two;
char a;
char* LCSubstring(const char* a,const char* b, char slen);
 
int _tmain(int argc, _TCHAR* argv[])
{
 
LCSubstring(one,two,a);
}
char* LCSubstring(const char* a,const char* b, size_t& slen)
{
 if(a == NULL || b == NULL)
        return NULL;
 
    slen = 0;
    size_t pos = 0;
 
    size_t a_len = sizeof(a);
    size_t b_len = sizeof(b);
 
    if(a_len == 0 || b_len == 0)
        return NULL;
 
    for(size_t i = b_len - 1; i >= 1; i--)
    {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = b_len - i, k = 0; j < b_len; j++, k++)
        {
            if(a[k] == b[j])
            {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
            {
                if(s_count > slen)
                {
                    slen = s_count;
                    pos  = s_pos;
                }
                s_count = 0;
                s_pos   = -1;
            }
        }
        if(s_count > slen)
        {
            slen = s_count;
            pos  = s_pos;
        }
    }
 
    for(size_t i = 0; i < a_len; i++)
    {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = 0, k = i; j < b_len; j++, k++)
        {
            if(a[k] == b[j])
            {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
            {
               if(s_count > slen)
               {
                   slen = s_count;
                   pos  = s_pos;
               }
               s_count = 0;
               s_pos   = -1;
            }
       }
       if(s_count > slen)
       {
           slen = s_count;
           pos  = s_pos;
       }
   }
 
   if(slen == 0)
       return NULL;
 
   return (a + pos);
 
}
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
23.05.2010, 21:50     При построений выдаёт ошибку... #4
Цитата Сообщение от Raffy Посмотреть сообщение
int _tmain(int argc, _TCHAR* argv[])
{
LCSubstring(one,two,a);
}

C++
1
2
3
4
5
int _tmain(int argc, _TCHAR* argv[])
{
LCSubstring(one,two,a);
return 0;
}
Так лучше должно быть

Добавлено через 52 секунды
И еще у тебя что то с фигурными скобками где то ты больше закрыл чем открыл

Добавлено через 2 минуты
Цитата Сообщение от Raffy Посмотреть сообщение
char* LCSubstring(const char* a,const char* b, char slen);
Это ты объявил

Добавлено через 33 секунды
Цитата Сообщение от Raffy Посмотреть сообщение
char* LCSubstring(const char* a,const char* b, size_t& slen)
В итоге реализация совсем другая функция

Добавлено через 3 минуты
Цитата Сообщение от Raffy Посмотреть сообщение
size_t a_len = sizeof(a);
* * size_t b_len = sizeof(b);
Так вы получите размеры указателя а не содержимого

Добавлено через 2 минуты
Цитата Сообщение от Raffy Посмотреть сообщение
char* LCSubstring(const char* a,const char* b, size_t& slen)
Размеры этих двух элементов надо передать тоже в функцию.
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
23.05.2010, 22:20  [ТС]     При построений выдаёт ошибку... #5
"Так вы получите размеры указателя а не содержимого"
каким образом получить размер содержимого?
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
24.05.2010, 08:37     При построений выдаёт ошибку... #6
Цитата Сообщение от Raffy Посмотреть сообщение
size_t a_len = sizeof(a);
size_t b_len = sizeof(b);
Если в Вашем случае a и b являются строками то можно использовать функцию strlen.
C++
1
size_t a_len = strlen(a), b_len = strlen(b);
Добавлено через 1 минуту
И в функции main перед тем как вызывать функцию произведите инициализацию one и two.
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
24.05.2010, 09:23  [ТС]     При построений выдаёт ошибку... #7
Благодарю...
Цитата Сообщение от Sudoki Посмотреть сообщение
1 size_t a_len = strlen(a), b_len = strlen(b);
в довесок к этому, как я понимаю, надо подключить <string>

Цитата Сообщение от Sudoki Посмотреть сообщение
И в функции main перед тем как вызывать функцию произведите инициализацию one и two.
т.е до main их не должно быть?
вылазиет ошибка 33.cpp(95) : error C2440: 'return' : cannot convert from 'const char *' to 'char *'
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "stdafx.h"
#include <stddef.h>
#include <cstddef>
#include <string>
 
const char* one;
const char* two;
int w;
char*LCSubstring(const char*a,const char*b,size_t slen);
 
int _tmain(int argc, _TCHAR* argv[])
{
    char* one;
    char* two;
 
    LCSubstring(one,two,w);
return 0;
}
char*LCSubstring(const char*a,const char*b,size_t slen)
{
 if(a == NULL || b == NULL)
        return NULL;
 
    slen = 0;
    size_t pos = 0;
    size_t a_len = strlen(a);
    size_t b_len = strlen(b);
 
    if(a_len == 0 || b_len == 0)
        return NULL;
 
    for(size_t i = b_len - 1; i >= 1; i--)
    {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = b_len - i, k = 0; j < b_len; j++, k++)
        {
            if(a[k] == b[j])
            {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
            {
                if(s_count > slen)
                {
                    slen = s_count;
                    pos  = s_pos;
                }
                s_count = 0;
                s_pos   = -1;
            }
        }
        if(s_count > slen)
        {
            slen = s_count;
            pos  = s_pos;
        }
    }
 
    for(size_t i = 0; i < a_len; i++)
    {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = 0, k = i; j < b_len; j++, k++)
        {
            if(a[k] == b[j])
            {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
            {
               if(s_count > slen)
               {
                   slen = s_count;
                   pos  = s_pos;
               }
               s_count = 0;
               s_pos   = -1;
            }
       }
       if(s_count > slen)
       {
           slen = s_count;
           pos  = s_pos;
       }
    }
 
   if(slen == 0)
       return NULL;
 
   return (a + pos);
 
}
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
24.05.2010, 09:46     При построений выдаёт ошибку... #8
Цитата Сообщение от Raffy Посмотреть сообщение
const char*a
Эта ошибка возникает потому что Вы что a внутри функции не измениться. И пытаетесь вернуть указатель на нее.

Добавлено через 1 минуту
Я бы вернул просто pos
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
25.05.2010, 08:16  [ТС]     При построений выдаёт ошибку... #9
Не могли бы вы написать исправление, я не совсем понимаю о чём идёт речь... просто программирование не является основным предметом, поэтому и знаний минимум.
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
25.05.2010, 09:32     При построений выдаёт ошибку... #10
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "stdafx.h"
#include <stddef.h>
#include <cstddef>
#include <string>
 
char one[] = "tru la la al ala";
char two[] = "lslal slsl dl wldf wkl la";
 
int w;
size_t LCSubstring(const char*a,const char*b,size_t& slen);
 
int _tmain(int argc, _TCHAR* argv[])
{
    LCSubstring(one,two,w);
return 0;
}
size_t LCSubstring(const char*a,const char*b,size_t& slen)
{
 if(a == NULL || b == NULL)
        return NULL;
 
    slen = 0;
    size_t pos = 0;
        size_t a_len = strlen(a);
        size_t b_len = strlen(b);
 
    if(a_len == 0 || b_len == 0)
        return NULL;
 
    for(size_t i = b_len - 1; i >= 1; i--)
        {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = b_len - i, k = 0; j < b_len; j++, k++)
                {
            if(a[k] == b[j])
                        {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
                        {
                if(s_count > slen)
                                {
                    slen = s_count;
                    pos  = s_pos;
                }
                s_count = 0;
                s_pos   = -1;
            }
        }
        if(s_count > slen)
                {
            slen = s_count;
            pos  = s_pos;
        }
        }
 
    for(size_t i = 0; i < a_len; i++)
        {
        size_t s_count = 0, s_pos = -1;
 
        for(size_t j = 0, k = i; j < b_len; j++, k++)
                {
            if(a[k] == b[j])
                        {
                if(s_pos == -1)
                    s_pos = k;
                s_count++;
            }
            else
                        {
               if(s_count > slen)
                           {
                   slen = s_count;
                   pos  = s_pos;
               }
               s_count = 0;
               s_pos   = -1;
                        }
       }
       if(s_count > slen)
       {
           slen = s_count;
           pos  = s_pos;
       }
        }
 
   if(slen == 0)
       return 0;
 
   return pos;
 
}
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
25.05.2010, 12:49  [ТС]     При построений выдаёт ошибку... #11
При запуске выдаёт чёрное окно с собщением "Для продолжения нажмите любую клавишу..."
Программа должна искать наибольшую общую подстроку в двух строках... в чём ошибка?
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
25.05.2010, 13:37     При построений выдаёт ошибку... #12
Raffy, ошибки нигде нету, просто в программе не реализован вывод на экран
Raffy
1 / 1 / 0
Регистрация: 28.12.2009
Сообщений: 32
25.05.2010, 17:12  [ТС]     При построений выдаёт ошибку... #13
прописывать вывод на экран надо в функции main через printf или каким-нибудь другим способом?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2010, 22:12     При построений выдаёт ошибку...
Еще ссылки по теме:

Программа выдаёт ошибку при вызове деструктора C++
Библиотека выдаёт ошибку при определённых условиях C++
C++ Выдаёт ошибку при компиляции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
25.05.2010, 22:12     При построений выдаёт ошибку... #14
Raffy, можете через printf, можете через cout.
Только исправьте код, Sudoki допустил стилистическую ошибку при написании. Замените этот кусок кода
C++
1
2
3
4
5
6
7
8
9
10
11
char one[] = "tru la la al ala";
char two[] = "lslal slsl dl wldf wkl la";
 
int w;
size_t LCSubstring(const char*a,const char*b,size_t& slen);
 
int _tmain(int argc, _TCHAR* argv[])
{
    LCSubstring(one,two,w);
return 0;
}
На этот
C++
1
2
3
4
5
6
7
8
9
10
size_t LCSubstring(const char*a,const char*b,size_t& slen);
 
int _tmain(int argc, _TCHAR* argv[])
{
    char one[] = "tru la la al ala";
    char two[] = "lslal slsl dl wldf wkl la";
    int w;
    LCSubstring(one,two,w);
    return 0;
}
Yandex
Объявления
25.05.2010, 22:12     При построений выдаёт ошибку...
Ответ Создать тему
Опции темы

Текущее время: 22:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru