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

Работает в онлайн компиляторах, но не работает у меня - C++

Восстановить пароль Регистрация
 
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
24.12.2013, 02:26     Работает в онлайн компиляторах, но не работает у меня #1
Проверяю данные, но на компьютере не работает, в чем роблема?
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
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
#define MAX(A,B) (((A)>(B))? (A) : (B))
 
char * lcs(const char *a,const char * b) {
    int lena = strlen(a)+1;
    int lenb = strlen(b)+1;
 
    int bufrlen = 40;
    char bufr[40], *result;
 
    int i,j;
    const char *x, *y;
    int *la = calloc(lena*lenb, sizeof( int));
    int  **lengths = malloc( lena*sizeof( int*));
    for (i=0; i<lena; i++) lengths[i] = la + i*lenb;
 
    for (i=0,x=a; *x; i++, x++) {
        for (j=0,y=b; *y; j++,y++ ) {
            if (*x == *y) {
               lengths[i+1][j+1] = lengths[i][j] +1;
            }
            else {
               int ml = MAX(lengths[i+1][j], lengths[i][j+1]);
               lengths[i+1][j+1] = ml;
            }
        }
    }
 
    result = bufr+bufrlen;
    *--result = '\0';
    i = lena-1; j = lenb-1;
    while ( (i>0) && (j>0) ) {
        if (lengths[i][j] == lengths[i-1][j])  i -= 1;
        else if (lengths[i][j] == lengths[i][j-1]) j-= 1;
        else {
//          assert( a[i-1] == b[j-1]);
            *--result = a[i-1];
            i-=1; j-=1;
        }
    }
    free(la); free(lengths);
    return strdup(result);
}
 
int main()
{
    printf("%s\n", lcs("thisisatet", "testingtesting")); // tsitest
    return 0;
}
выдает
1>------ Build started: Project: 777-=, Configuration: Debug Win32 ------
1>Compiling...
1>777-=.cpp
1>c:\users\documents\visual studio 2005\projects\777-=\777-=\777-=.cpp(12) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
1>c:\users\documents\visual studio 2005\projects\777-=\777-=\777-=.cpp(13) : warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
1>c:\users\documents\visual studio 2005\projects\777-=\777-=\777-=.cpp(20) : error C2440: 'initializing' : cannot convert from 'void *' to 'int *'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
1>c:\users\documents\visual studio 2005\projects\777-=\777-=\777-=.cpp(21) : error C2440: 'initializing' : cannot convert from 'void *' to 'int **'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast
1>Build log was saved at "file://c:\Users\Documents\Visual Studio 2005\Projects\777-=\777-=\Debug\BuildLog.htm"
1>777-= - 2 error(s), 2 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.12.2013, 02:28     Работает в онлайн компиляторах, но не работает у меня #2
Дело в том, что С++ компилятор не преобразовывает явно память, выделяемую malloc, а вот С компиляторы это делают.
Вам нужно создать проект с языком С.
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
24.12.2013, 02:31  [ТС]     Работает в онлайн компиляторах, но не работает у меня #3
Да я вот не знаю его, а проверить надо - как быть?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
24.12.2013, 02:39     Работает в онлайн компиляторах, но не работает у меня #4
И кстати, strdup - это GNU extension, в VS вы скорее всего не скомпилите.
Вам лучше все-таки попробовать решить все самим.
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
24.12.2013, 02:52  [ТС]     Работает в онлайн компиляторах, но не работает у меня #5
Обычо я так и делаю - но мне неделю снится эта задача - и теперь мне просто уже интересно что же там у меня не так в моем решении
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.12.2013, 13:11     Работает в онлайн компиляторах, но не работает у меня #6
Цитата Сообщение от Aliru Посмотреть сообщение
Да я вот не знаю его, а проверить надо - как быть?
Изменить расширение файла (компилируемого) на .c. В 10 студии компилируется без ошибок (с предупреждением насчёт strdup).

Добавлено через 9 часов 26 минут
Aliru, что молчите? Скомпилировалось?
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
24.12.2013, 14:15  [ТС]     Работает в онлайн компиляторах, но не работает у меня #7
Добрый день!

Спасаю жизни в рабочее время))) поэтому не отвечал.
Утром попытался - снова выдает ошибку.
Я, к сожалению, не могу понять - как это сделать, наверное - изменил в названии на .с но ошибка выдается типа файл с, а компилятор с++.
У меня Вижуал студио 2005
Alex5
883 / 618 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
24.12.2013, 14:31     Работает в онлайн компиляторах, но не работает у меня #8
C++
1
2
3
4
5
6
7
    /* VS2008 : ok */
    int *la = (int*)calloc(lena*lenb, sizeof( int));
    int  **lengths = (int**)malloc( lena*sizeof( int*));
 
    /* в этих строках Visual Studio выдаст ошибку */
    //int *la = calloc(lena*lenb, sizeof( int));
    //int  **lengths = malloc( lena*sizeof( int*));
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.12.2013, 16:40     Работает в онлайн компиляторах, но не работает у меня #9
Цитата Сообщение от Aliru Посмотреть сообщение
Я, к сожалению, не могу понять - как это сделать, наверное - изменил в названии на .с но ошибка выдается типа файл с, а компилятор с++.
У меня Вижуал студио 2005
С 2005 студией незнаком, поэтому не знаю, как там компилятор выбрать. В 10-й студии в Свойствах проекта - С/С++ - Дополнительно - Компилировать как, тут можно выбрать: Компилировать как код С или как код С++ (если это выбрать, то будет компилироваться выбранным компилятором, вне зависимости от расширения файла). Если стоит по умолчанию, то, как я понимаю, компилятор автоматически будет выбираться, в зависимости от расширения.
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
24.12.2013, 17:05  [ТС]     Работает в онлайн компиляторах, но не работает у меня #10
А скажите, вопрос не по теме - если я учусь только онлайн и по книгам, но не работаю в ИТ, программистом мне не стать?
Или чудеса бывают?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4928 / 2671 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
25.12.2013, 01:22     Работает в онлайн компиляторах, но не работает у меня #11
Цитата Сообщение от Aliru Посмотреть сообщение
А скажите, вопрос не по теме - если я учусь только онлайн и по книгам, но не работаю в ИТ, программистом мне не стать?
Отчего же?
Если я не занимаюсь профессионально стрельбой, не значит же это что из меня плохой охотник выйдет.
Было бы желание.. и время.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 02:17     Работает в онлайн компиляторах, но не работает у меня
Еще ссылки по теме:

Не могу понять почему у меня не работает sound,delay,nosound.... C++
Почему у меня не работает программа? C++
C++ У меня не работает прога запрограмированная на Численные методы!

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

Или воспользуйтесь поиском по форуму:
Aliru
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 83
25.12.2013, 02:17  [ТС]     Работает в онлайн компиляторах, но не работает у меня #12
То есть я смогу в качестве развлечения выбирать i-го самого низкого пациента из неотсортированного списка за О(n)...
А если серьезно, я не представляю программирование как хобби
Я вот думал о изменчивости вируса ВИЧ, но написать программу не мог - а потом бац через 6 лет оказалось что этим уже занимались или в МИТе, или в Стэнфорде.
Когда учился в меде - постоянно всем говорил - вот можно медицину алгоритмизировать, а потом узнал что еще в далеких годах придумали и ген. алгоритмы и нейронные сети, а в 2014 IBM Watson запускает Гипократа - экспертную систему в медицине - но сам я не мог это придумать, а работая в команде может и помог бы общему делу.
Это, наверное, как в примере с охотником -- только не с одиночкой, а, например, как охота на волков - загоняют их собаки, а отстреливают люди = командная игра.
Думал о том, что психотерапия это неудобно и дорого и http://web.mit.edu/newsoffice/2013/h...way-0918.html# вот пример как это будут менять - использовали биоинформатику.
Сейчас я думаю, а почему бы не создать что-то которое будет разрабатывать, например, новый компилятор или Windows N-ный, а потом и писать обновления под себя - и в этом хаосе мыслей, я повторюсь не представляю как можно зимними вечерами после работы расслабиться у камина и написать пару веселых программ...
Yandex
Объявления
25.12.2013, 02:17     Работает в онлайн компиляторах, но не работает у меня
Ответ Создать тему
Опции темы

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