[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Нужен совет, какие БД в связке с С++ сейчас популярны ? Закончил изучение языка куда дальше двигаться незнаю, решил взять БД+C++ думаю это всегда пригодится? ))
    Боюсь вы ошибаетесь.
    Что значит закончил изучать С++? Прочитали 1 книгу? Опыт, практика есть?
    Советую пописать что-то простое, а потом сложнее, сложнее, а уже когда совсем будет все супер(например свое какое-нибудь полезное приложение), учите БД. Например тот же MySQL.

    Извините, если вы гуру в С++, тогда я ошибся. Просто звучит смешно :).
     
  2. arnis

    arnis Member

    Joined:
    30 Jan 2011
    Messages:
    280
    Likes Received:
    23
    Reputations:
    0
    SQL язык запросов примерно везде одинаков.
    Так что бери любую реляционную БД и практикуйся.
    Благо БД не много
     
  3. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    помогите решить пожалуйста такую задачу, а то ничего в голову не лезет)

    Имеется матрица (n*m) заполненная 1 и 0. Единицы - это острова, а нули - море. Если единицы находятся рядом по горизонтали или вертикали - то они образуют один остров. Найти количество островов. Могут быть "гнутые" и "дырявые" острова.
     
  4. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    самое простое что пришло в голову это решение этой задачи с помощью 2 дополнительных матриц: 1-ая матрица имеет следующие состояние ячейки 0 и 1 просто дублируют значения в исходной матрице, да еще 0 значит не обрабатывать эту ячейку она не является частью острова, 2 - кадидат на матрицу у которого обработаны все соседи, 3 - кадидат на матрицу у которого обработаны не все соседи. 2-ая матрица (строкового типа) содержит для единичных элементов имя родителя (начало острова имеет родителя себя)
    пример
    1 0 0
    1 1 1
    0 0 0
    2-ая матрица имеет вид
    0;0 0 0
    0;0 0;0 1;1
    0 0 0
    ну и переменной для определения состояния программы true - в поисках начала острова false - обработка острова
    Обрабатываться должны все элементы исходного массива, началом острова может быть только элемент у которого значения исходной и 1-ой матрицы равны 1, а 2-ой - 0.

    Так же можно попробывать это:
    Ищем первую попавшуюся единицу и запускаем процесс, который удалит остров (содержащий данную единицу) с поля. После удаления острова увеличиваем счётчик и ищем слудующую единицу и т.д. Удалять острова можо на оргинальном массиве, а можно и сделать копию

    Рекурсивная процедура удаления выглядит примерно так:
    Code:
    int a[10][10]; // <--- наш массив
     
    // Удаление острова, содержащего поле x, y
    void
    delete_island (int x, y)
    {
      // Для внутреннего контроля (чтобы убедиться, что мы всё делаем правильно)
      if (a[x][y] != 1)
        abort ();
     
      // Сразу сотрём данную точку, чтобы повторно сюда не зайти и не зациклиться
      a[x][y] = 0;
     
      // Обходим четырёх соседей данной точки, учитывая границы поля
      // Предполагая, что координаты соседа x1, y1, нужно на каждого
      // соседа запутить код
      if (a[x1][y1] == 1)
        delete_island (x1, y1);
    }
    
    Возможны горизонтальные, вертикальные и смешанные комбинации. Для решения задачи при нахождении единицы следует просмотреть область вокруг неё. Так как область может быть замкнутая при обходе следует заносить координаты единиц в список единиц для конкретного острова и общий список единиц. Список единиц представляют собой пару (x,y). При нахождении тупикового вариант следует откатываться назад для поиска другого пути.
     
    #6184 randman, 15 Mar 2011
    Last edited: 15 Mar 2011
  5. tim-oleksii

    tim-oleksii Member

    Joined:
    14 Mar 2011
    Messages:
    199
    Likes Received:
    10
    Reputations:
    0
    Возможны горизонтальные, вертикальные и смешанные комбинации. Для решения задачи при нахождении единицы следует просмотреть область вокруг неё. Так как область может быть замкнутая при обходе следует заносить координаты единиц в список единиц для конкретного острова и общий список единиц. Список единиц представляют собой пару (x,y). При нахождении тупикового вариант следует откатываться назад для поиска другого пути.
     
  6. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    нужно в консоль выводить некоторый данные красочно, в разных цветах. При это нужно поле консоли постоянно обновлять новыми данными, не в нис продолжать, а именно убирать стары и показывать новые.

    Нужно это сделать желательно для меня кроссплатформенно. Или же придется и для винды и для линя делать ручками.

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

    кажись нашел: http://filonenko-mikhail.blogspot.com/2010/04/blog-post.html

    Как можно заполнить все строку консоли ? ну типо сделать выравнивание по правому краю.
    Вот предположим это окно консоли
    |_____________________________________|
    мне нужно что бы текст был расположен вот так
    |некоторый текст_______________что то еще|
    для этого по иде нужно после первой строки задать выравнивание через setw... но каую длину указывать ? что бы вплотную прижаться к правой границе ?
     
    #6186 cupper, 15 Mar 2011
    Last edited: 15 Mar 2011
  7. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Ubuntu 10.04 x86_64
    IDE Code::Blocks из репов.
    Создаю проект, выбираю язык "С", пишу код, начинаю компилить - пишет g++ not found.
    Решил проблему так:
    Вопрос: Почему нужен был g++? Я ведь на Си писал.

    Сообственно код проги:
    Code:
    #include <stdio.h>
    
    #define LOWER 0
    #define UPPER 300
    #define STEP 20
    
    int main()
    {
        int fahr;
        for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
        printf("3%d %6.1f\n", fahr, (5.0/9,0)*(fahr-32));
        return 0;
    }
     
  8. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    cupper, вот вам пример под винду (не кроссплатформенно, винапи там).
     
  9. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    cupper, кажется, стандартные размеры 25(высота) на 80(ширина), ещё со времён dos'а.

    Jakeroid, думаю, это настрйока в IDE. И скорее, даже, самоуправство, если расширение у файла .cpp, а не .c то используется g++, иначе cc(с compiler).
     
  10. Jakeroid

    Jakeroid Member

    Joined:
    9 May 2009
    Messages:
    199
    Likes Received:
    12
    Reputations:
    1
    Расширение *.c.
     
  11. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    да ты я смотрю шутник :) ты бы мне еще предложил бы реверснуть виндовс что бы узнать как он с консолью работает ))

    под win да, а вот под линь то нет.

    GRRRL Power так же я почти уверен что в приведеном терисе нету заморочек с определение размеров консоли, там все стандартно скорее всего.
     
    #6191 cupper, 16 Mar 2011
    Last edited: 16 Mar 2011
  12. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    cupper, условную компиляцию тогда делай. Вот кое что по теме. И вот.
     
  13. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Там размер консоли меняется (не 80x25, как сказали выше) и создаются две страницы консоли, которые меняются. Я не шутник, потому что там исходники есть вообще-то.
     
  14. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    да видел я что они есть. Эту сурово ради столь не значительной проблемки разбирать все приложение. Но на крайний случай придется.

    то что условная компиляция это само собой. За ссылки спасибо, где то уже натыкался на системные переменный консоли COLUMN и LINE, надо будет повнимательней посмотреть.
     
  15. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    подскажите пожалуйста, почему может вылетать такая ошибка при компиляции программы на асм:
    fatal error: Can't open file 'c'.
    у меня прописано так:
    include c:/masm32/include/user32.inc
     
  16. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    maked0n, "\" вместо "/"
     
  17. maked0n

    maked0n New Member

    Joined:
    14 Sep 2010
    Messages:
    144
    Likes Received:
    3
    Reputations:
    0
    все равно такое же( вчера тоже проблемы были с линковкой, с трудом благодаря тов. DooD слинковал, а сегодня вот опять(
    оно скомпилилось потом через консоль, но вот так:
    polink srcfile.obj rsrc.res
    ошибок не выдает, но меню все равно в проге нет( в гугле пытался искать, но не нашел
    ЗЫ: упс, походу не в ту тему отписался)
     
  18. bad_boy

    bad_boy Elder - Старейшина

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    Попробуй указывать относительные пути, или, если файл в папке include просто
    Code:
    include user32.inc
    А, может быть, меню не правильно оформлено?! Оконная процедура неверно обрабатывает сообщения?!
     
  19. Raine

    Raine New Member

    Joined:
    14 Feb 2010
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Дана последовательности чисел. Надо найти наименьшее. Попытался но программа почему то выдаёт 0 вместо 2. Вот код, что не так:
    Code:
    #include <cstdio>
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main ()
    {
        char stroka[]="78392";
        int min=0;
        for (int i=0;i<4;i++)
        {
            if (stroka[i]<min)
            {
                              min=stroka[i];
                              }
        }
        cout << min;
        system("pause");
        return 0;
    }
    
     
  20. UnameR

    UnameR New Member

    Joined:
    23 Jun 2010
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    или так:
    Code:
    int main()
    {
    	char stroka[]= "78392";
    
    	char charN[2];
    	charN[0] = stroka[0]; // одно число
    	charN[1] = 0; // завершаем строку, чтобы atoi не преобразовал лишнего
    	int min = atoi(charN);
    
    	for (int i=0;i<=4;i++)
    	{
    		charN[0] = stroka[i];
    		int curent = atoi(charN);
    
    		if (curent<min) min=curent;
    	}
    
    	cout << min << endl;
    	system("pause");
    
    	return 0;
    }
    или так:
    Code:
    int main()
    {
    	char stroka[]= "78392";
    
    	int min = stroka[0]-48;
    
    	for (int i=0;i<=4;i++) if (stroka[i]-48<min) min=stroka[i]-48;
    
    	cout << min << endl;
    	system("pause");
    
    	return 0;
    }
    Обои варианты работают.

    Минус 48 в втором, потому что код символа цифры семь = 55
    Соответственно 55-48=7
    С остальными цифрами так же.
     
Thread Status:
Not open for further replies.