Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 71 из 87<  1 ... 68  69  70  71  72  73  74 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
Danmerpro писал(а):
А так же в размеры самой матрицы, ну и для них гет/сет. От него унаследовать Square_Matrix.

так нельзя наследовать
при наследовании мы не можем обрезать методы

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс



Партнер
 

Member
Статус: Не в сети
Регистрация: 15.02.2009
Откуда: Лангепас
manya писал(а):
Код:
char *str = (char *)malloc(N); 
  while ((str[i++] = getchar()) != '\n');      
     str[i] = '\0';

1. Ощибка - если вводим больше чем N-1 символов, то и будет "segmentation fault". (произойдёт выход за границы массива char*)
2. Если ошибаемся в махинациях с arglist будет как каз вылет в
manya писал(а):
 for (i = 0; i<N; i++)  //при первом же заходе сюдЫ падает


 

Member
Статус: Не в сети
Регистрация: 10.12.2007
Откуда: Санкт-Петербург
Danmerpro спасибо
oxy Я знаю про переполнение. Это не код, а некоторая "выжимка с обрезками":) спасибо

_________________
Семь бед, один Reset. 95, 98 - это количество багов. В пpоцентах...
DCN - наше все


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
Russian писал(а):
при наследовании мы не можем обрезать методы

Я Вас не понял, где это я собрался обрезать методы?

_________________
Задачи бывают простыми и очень простыми...


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
Danmerproу нас есть класс прямоугольник,с методами длина и ширина, и вы от него наследовали новый класс квадрат,так ведь?
соответственно метод ширина уже не может использоваться в классе квадрат,я про это обрезание методов

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 15.02.2009
Откуда: Лангепас
manya
Я про то, что сперва надо искать ошибки в коде перед free()...


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
Russian писал(а):
так ведь?

Нет ;) Есть класс матрица. У неё, помимо виртуальных функций, есть длина и ширина. Если наследуемая матрица квадратная, то у квадратной матрицы просто длина равна ширине.

_________________
Задачи бывают простыми и очень простыми...


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
Danmerproтак вот у наследуемой квадратной матрицы тоже будет метод и ширина и длина
и сможем установить и длину и ширину, чего нельзя делать одновременно,
поэтому лучше создать класс квадратная матрица, и унаследовать класс просто матрица,а не наоборот

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 20.03.2009
Откуда: Санкт-Петербург
Russian
А как бы тогда осуществлялся ввод? Допустем есть только указатель на SquareMatrix. Я не знаю, какая матрица унаследована от него. В моём случае я бы использовал два цикла
Код:
for(int i=0;i<(m->get_len());i++)
     for(int j=0;j<(m->get_width());j++)
          m->set_elm(i,j,1);

get_len и get_width были бы уже у базового класса, а set_elm уже у каждого свой. Я понял Вашу логику, но так или иначе, в Вашем случае пришлось бы писать для каждого класса свои get_len и get_width(так как у квадратной матрицы они возвращали бы одно значение, а у любой другой-разные), а в моём-таскать для квадратной матрицы ненужный метод, содержащий в себе ширину. Если я правильно понял, то Ваш метод лучше :-)

_________________
Задачи бывают простыми и очень простыми...


 

Member
Статус: Не в сети
Регистрация: 09.01.2009
Откуда: Москва
Никто не знает по какой таблице определяются символы типа char в VisualStudio2008?
Проверял в ANSI http://microsin.ru/content/view/652/43/ и в ASCII http://www.asciitable.com/.
Ни одна таблица не подходит.


 

Member
Статус: Не в сети
Регистрация: 07.01.2010
1-байтные char'ы отрисовываются по 8-битной кодовой таблице из локали системы/приложения (там может быть как ansi, так и cp1251, например)
2-байтные wchar - это utf16


 

Member
Статус: Не в сети
Регистрация: 02.05.2007
Откуда: Москва-Таганка.
Заранее прошу прощения, что мой вопрос может оказаться совсем "ламерским", но нужно быстрое решение, поэтому решил крикнуть "Help!" на любимом форуме.
Ведётся обработка на Perl документов XML.
Есть С-шная библиотека - libxml2 c xmlsoft.org, с которой хочется работать.
К ней есть Perl API в виде Perl модуля XML::LibXML (стандартный с search.cpan.org), который кажется очень тяжёлым и на 90% излишним для моих задач.
Решил попытаться сделать свой (усечённый) API для этой библиотеки (а заодно и для Libxslt - в одном флаконе).
До этого работал естественно на Perl (опыт более 10 лет) и на всяких разных "билдерах" типа Delphi и ему подобных. Т.е непосредственно с процессами компиляции, компоновки, связывания используемыми в зыках С/С++ знаком очень приблизительно (если не сказать - "никак").
Отсюда вопрос - Что почитать и где порыться, чтобы максимально быстро разобраться в этих вещах. Справочников/учебников по самим С и С++ тонны, перерыл с десяток, но там в основном только сам язык. Что бы точнее обьяснить что же я всё таки хочу - несколько подвопросов:
- что такое makefile - его структура, синтаксис, руководство по разработке.
- что такое файлы *.h - тоже структура, синтаксис, руководство.
- что такое файлы *.o?
- какие библиотеки называют - "стандартными" и как собственно обращаться к их функциям? Подгрузку и обращение к *.dll библиотекам из Delphi (object pascal), когда-то делал, но здесь, как мне показалось, принцип совершенно другой - подключения должны быть определены ещё до процесса компиляции.
Я не жду развёрнутых ответов и уж точно прошу не давать ответов типа "файл - *.* это ... , подробнее ищи в мануалах". Я прошу именно ссылки на эти самые мануалы, где подобные вещи описаны.
Желательно конечно по короче и на русском, но ... уж как получится. Благодарен буду за любую информацию.

Извините, если вопрос показался совсем дилетантским.
Заранее спасибо.

_________________
Делать надо как надо, а как не надо делать не надо.


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
Principal_AG писал(а):
Что почитать и где порыться, чтобы максимально быстро разобраться в этих вещах

керниган и ритчи, но он по си

Principal_AG писал(а):
что такое makefile

файлик нужный для программы make, которая преобразует исходный код в объектный файл
вообще ide должно заниматься созданием

Principal_AG писал(а):
что такое файлы *.h - тоже структура, синтаксис, руководство

файлы библиотек, содержит реализацию прототипа функции. Собственно все так же как и в файле *.c

Principal_AG писал(а):
что такое файлы *.o

объектный файл, в нем содержится ассемблерский код, преобразованный из вашего исходного кода.

Principal_AG писал(а):
какие библиотеки называют - "стандартными"

ну очевидно те которые включены по умолчанию в ваш компилятор
Principal_AG писал(а):
и как собственно обращаться к их функциям

функция(параметр1,параметр2,...)

мог чего и напутать в 4 часа ночи

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 02.05.2007
Откуда: Москва-Таганка.
Russian, спасибо конечно за попытку помочь.
Principal_AG писал(а):
Я не жду развёрнутых ответов и уж точно прошу не давать ответов типа "файл - *.* это ... , подробнее ищи в мануалах". Я прошу именно ссылки на эти самые мануалы, где подобные вещи описаны.
Очень хочется как раз разобраться - что действительно твориться внутри, а не тихо радоваться тому, что тебе нагенерил "билдер". Особенно то, что касается этой самой программы "make" и всем, связанным с ней.

Деннис Ричи / Брайен Керниган и Бьярн Страуструп - уже давно лежат в моём "золотом фонде", с них и начал. Но это, как я писал - сам язык, а с этим как раз проблем нет.

Russian писал(а):
Principal_AG писал(а):
и как собственно обращаться к их функциям
функция(параметр1,параметр2,...)
Собственно программированием занимаюсь более 20-ти лет и это ... вообще без комментариев.

Про "Стандартные библиотеки" хотелось бы понять - где искать их описания (назначение / состав функций).
Если применительно к компиляторам, то основной - MinGW (разрабатывать собираюсь во фрэймворке Eclipse_3.6/CDT под ХРюшой), но в дальнейшем результат разработки должен быть перенесён под FreeBSD (на ВЭБ сервер под Апачем).
В качестве учебно/отладочной среды поставил себе Визуал-Студию 2008, но это чисто для изученя С++ (по ней больше всего материалов удалось нарыть). А вообще в Майкрософтовские технологии влезать не особо хочется.

_________________
Делать надо как надо, а как не надо делать не надо.


 

Member
Статус: Не в сети
Регистрация: 01.05.2007
Откуда: Тель-Авив
Фото: 1
Principal_AG писал(а):
- что такое makefile - его структура, синтаксис, руководство по разработке.

http://www.gnu.org/software/make/manual/make.html
ИМХО, руководство избыточно, но что есть, то есть.

Principal_AG писал(а):
- что такое файлы *.h - тоже структура, синтаксис, руководство.

Это - как раз часть Си. У К&R должно быть описано.

Principal_AG писал(а):
- что такое файлы *.o?

Результат работы компилятора. :-)
Описание (в общем виде) не существует, т.к. зависит от конкретной платформы.

Principal_AG писал(а):
- какие библиотеки называют - "стандартными" и как собственно обращаться к их функциям? Подгрузку и обращение к *.dll библиотекам из Delphi (object pascal), когда-то делал, но здесь, как мне показалось, принцип совершенно другой - подключения должны быть определены ещё до процесса компиляции.

Так называемая стандартная библиотека - то, что входит в стандарт ANSI. Это то, что описано у K&R и еще много чего. В хелпе от MSVC про каждую функцию сказано, на каких платформах она поддерживается. Если надо писать программу, работающую (после перекомпиляции) как на Вин, так и на *никсах, придется ограничиться ANSI.
Подключение библиотек бывает как статическим (.lib/.obj/.o), так и динамическим (.dll/.so). Для начала предлагаю оставить нюансы на откуп линкера/компилятора/ОС.
Кстати: http://www.acm.uiuc.edu/webmonkeys/book/c_guide/


 

Member
Статус: Не в сети
Регистрация: 02.05.2007
Откуда: Москва-Таганка.
Herod, вот это уже по делу, вот это действительно спасибо!
Буду разбираться.

З.Ы. А постановка "придется ограничиться ANSI" к сожалению хорошо знакома.
В своё время, когда получил в руки Oracle, вместе с ним получил однозначное указание - не выходить за стандарты ANSI SQL-92 (т.к приложение в дальнейшем планировалось переносить и под DB2). Долго, помню тогда плевался т.к. 2/3 "вкусностей" Oracle оказались под запретом. Но ... что делать.
Сори, за оффтоп.

_________________
Делать надо как надо, а как не надо делать не надо.


Последний раз редактировалось Principal_AG 13.06.2011 15:14, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 01.05.2007
Откуда: Тель-Авив
Фото: 1
Principal_AG писал(а):
З.Ы. А постановка "придется ограничиться ANSI" к сожалению хорошо знакома.

Чтобы выйти из оффтопа: конструкция типа
Код:
#ifdef WIN32
....
#endif
#ifdef LINUX
...
#endif

позволяет вздохнуть чуть свободнее.
ЗЫ. Но при слишком активном использовании замусоривает код до нечитаемого состояния.


 

Member
Статус: Не в сети
Регистрация: 02.05.2007
Откуда: Москва-Таганка.
Ещё раз Сэээнкс.
А это уже напоминает письмо "кросс-браузерности" под JavaScript, до того как IE начал подерживать W3C-сную DOM модель.
Сори, я опять в оффтоп, но ... выходной :D .

_________________
Делать надо как надо, а как не надо делать не надо.


 

Junior
Статус: Не в сети
Регистрация: 31.05.2009
Откуда: Санкт-Петербург
Добрый вечер. Помогите пожалуйста. Я разработал алгоритм сортировки одномерного массива, проверил его с разными вариантами всё работает. Но не могу запилить прогу. Фотки кликабельны. Язык - обычный си.
Фото задания и описание переменных:
#77

Фото алгоритма:
#77


Код програмы : (я там смог сделать начало и конец)
Код:
#include <stdio.h>
#include <conio.h>

void main(void)
{
   int *B;
   int i=0, j=0,n,k,t,v, m=1;
   printf("\n Vvedite razmernost' massiva : ");
   scanf("%d", &n);
   while (n<=0)
   B = new int[n];

   for(i=0; i<n; i++)
      {
        printf("\n vvedite %d element massiva B ", i);
        scanf("%d", &B[i]);
      }
   printf("\n Vvedite nekotoroe chislo ");
   scanf("%d", &k);

   for(m=1; m<j; m++)


for(i=0; i<n; i++)
      if(B[i] >= k)
      {
   for(i=0; i<n; i++)
           if(j=0)
   




   for(i=0; i<n; i++)
      printf("\n%d", B[i]);
   getch();
}


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
while (n<=0)
B = new int[n];

что это за ерунда?


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 71 из 87<  1 ... 68  69  70  71  72  73  74 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan