Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: veronica b
Дата сообщения: 08.01.2007 16:00
LuckyELF
Сам, по себе, Си язык не большой. За месяц ты его легко выучищь. Но что ты можешь написать только на Си? Очень немного, в осповном только те задачи, которые дают студентам для обучения. Дольше, несколько месяцев и даже полгода, пойдет на изучение стандартной библиотеки. Потом, если вы программируете встроенный компютер, то несколько месяцев у вас займет изучение самой системы. Короче, если у вас есть голова, то через нод вы начальный программист на Си встроенных систем!
Если вы пойдете программировать под Windows, то вам надо выучить API WIN32. Это пару лет. Через три года вы тогда на Си можете написать любую программу. Кто либо за полгода, на каком либо Билдере научится писать программы, но, правда, они не всегда и не везде будут работать, но это другой вопрос.
Вы это хотели спросить?
Автор: MFPSoftware
Дата сообщения: 08.01.2007 17:40
xdude

Вот такой код поставил компилироваться:


Код: #include <iostream>

using namespace std;

void mas(int **x, int n);

int main()
{
int M[3][3] = {1,2,3,4,5,6,7,8,9};
mas(M, 2);
return 0;
}

void mas(int **x, int n)
{
int i, j;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
x[i][j] *= n;
}
Автор: veronica b
Дата сообщения: 08.01.2007 19:17
MFPSoftware

Это минимально, что у тебя будет работать.

#include <iostream>

using namespace std;

void mas(int x[3][3], int n);

int main()
{
     int M[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
     mas(M, 2);
     return 0;
}

void mas(int x[3][3], int n)
{
     int i, j;
for (i=0; i<3; i++)
for (j=0; j<3; j++)
x[i][j] *= n;
}


Цитата:
Указатели на функции. Модификатор const


Подскажите, что это такое? А то я в замешательстве


Имя функции есть адрес точки входа. А адрес и есть указатель.
При попытке изменить величину, помеченную модификатором const, компилятор покажет ошибку!
Автор: MFPSoftware
Дата сообщения: 08.01.2007 20:54
veronica b

Цитата:
void mas(int x[3][3], int n)


Что-то все учебники твердят, что таким образом функция не может менять переменные, что туда передается копия, хотя данный код опровергает это. Как такое возможно?

ЗЫ: а можно как-то без привязок к тройкам? Что бы функция могла принять массив любого объема.
Автор: veronica b
Дата сообщения: 08.01.2007 21:18
MFPSoftware
Я же написал

Цитата:
Это минимально, что у тебя будет работать


Если без троек, то согласитесь, так было в условии, именно 3.
Матрица прямоугольная или квадратная?
Автор: MFPSoftware
Дата сообщения: 08.01.2007 21:41
veronica b
я хочу это написать не для препода, а для себя. Хочу понять, как правильно описывать функции, а то мало где об этом пишут =( Опишут самые элементарные и все (

Поэтому и взял в качестве примера умножение матрицы на число.
Автор: veronica b
Дата сообщения: 08.01.2007 22:03
MFPSoftware
Смотрите, для студента самое главное - сдать. Если же вы хотите знать, то для этого вам нужно взять стабильный учебник. И поверьте, не начинать учить, как передать матрицу в функцию. Это далеко от начала. Учите постепенно!
Удачи на экзамене!
Автор: MFPSoftware
Дата сообщения: 08.01.2007 22:49
veronica b
да сдать то я сдам =) Экзамен, кстати, завтра.

Просто мне это самому интересно. Иначе бы просто забил )

А базис у меня есть из паскаля и, отчасти, из дельфи. Так что пока изучаю особенности языка.
Автор: veronica b
Дата сообщения: 09.01.2007 08:35
MFPSoftware

Цитата:
Просто мне это самому интересно. Иначе бы просто забил )

Если это авм интерестно и вы хотите стать профессиональным програмистом, то вам надо взять стабильный учебник и учить. Ежели для интереса, то вполне хватит Дельфи, так как просто жалко усилий, которые могут быть потрачены зря.


Цитата:
А базис у меня есть из паскаля и, отчасти, из дельфи. Так что пока изучаю особенности языка.

Вот у вашего друга, который имееи международный диплом по Си, чувствовается паскалевый "акцент"
Сообщите мне результат зкзамена, хорошо.

Автор: LuckyELF
Дата сообщения: 09.01.2007 22:28

Цитата:
Сам, по себе, Си язык не большой. За месяц ты его легко выучищь. Но что ты можешь написать только на Си? Очень немного, в осповном только те задачи, которые дают студентам для обучения. Дольше, несколько месяцев и даже полгода, пойдет на изучение стандартной библиотеки. Потом, если вы программируете встроенный компютер, то несколько месяцев у вас займет изучение самой системы. Короче, если у вас есть голова, то через нод вы начальный программист на Си встроенных систем!
Если вы пойдете программировать под Windows, то вам надо выучить API WIN32. Это пару лет. Через три года вы тогда на Си можете написать любую программу. Кто либо за полгода, на каком либо Билдере научится писать программы, но, правда, они не всегда и не везде будут работать, но это другой вопрос.
Вы это хотели спросить?


А я разве что-то спрашивал?!!


Цитата:
Вот у вашего друга, который имееи международный диплом по Си, чувствовается паскалевый "акцент"


Камень в мой огород?
LOL

У меня лично обычный диплом, в котором написано "присвоена квалификация экономист по специальности информационные системы в экономике".

Друг мой учился, если мне не изменяет память на ПОВТе - программное обеспечение вычислительной техники, пообщавшись с ним понял, что на 99,9% моих вопросов он знает ответы, человек писал на асме, сях, спп, пасе, дельяфях, прогологе, последний кстати его любимый язык, и это только то о чем я знаю, но думаю список не полный, какой у него там акцент мне лично по фиг, хотите лично пообщатся лично с ним вперед! я дам координаты. Но право, давайте прекратим перемывать кости человеку, как пишет так и пишет, шла бы речь обо мне я бы сказал "я дурак!" и на этом бы закончили, за него же я так сказать не могу, вместе с тем читать фразы явно с подковыркой не особо приятно.
Надеюсь это тема закрыта.
Автор: veronica b
Дата сообщения: 10.01.2007 07:54
LuckyELF

Цитата:
человек писал на асме, сях, спп, пасе, дельяфях, прогологе, последний кстати его любимый язык, и это только то о чем я знаю, но думаю список не полный

Я вас не очем и не спрашивал. Только, что вы и потвердили, что я вам сказал! Кстати, и что такое ПОВТ, я понятие не имею.

Цитата:
Надеюсь это тема закрыта.

Не спорю.

Автор: DozUST
Дата сообщения: 11.01.2007 11:04
Люди, объясните пожалуйста, что это за хрень и как с ней боротся?
На 2 компьютерах был установлен BDS 2006 и на обоих заболел в один день. Самое интересное, что DELPHI прекрасно работает, а в С++ вылетает такая вот ошибка и компоненты не загружаются.

Exception EPackageRegistrationException in module coreide100.bpl at 000DAC7D.
Registration procedure, Cppproject.IDERegister in package C:\Program Files\Borland\BDS\4.0\Bin\bcbide100.bpl raised exception class EOleException: Object reference not set to an instance of an object.

Do you want to attempt to load this IDE package the next time BDS 2006 is run?
Автор: rain87
Дата сообщения: 11.01.2007 16:31
DozUST
ну так пошукай в соответствующем топе http://forum.ru-board.com/topic.cgi?forum=35&bm=1&topic=28572#1
Автор: DozUST
Дата сообщения: 12.01.2007 12:46
rain87 Спасибо. Все понятно.
Автор: blackdevil
Дата сообщения: 12.01.2007 21:37
Ребят,подскажите пож-та!
Опять на счет функции rand().Вот допустим у меня есть прога которая загадывает число из диапазона и пользователь должен его отгадать.Естесс-но используется rand() для генерации псевдослучайного числа.Но проблемка в том что когда экзешник собран программа будет все время загадывать одно и то же число при запуске.Нам что-то на лекциях рассказывал препод,то ли "надо сначала вызвать пустой rand а потом уже для заполнения",толи "используется функция srand()"...короче я так этот момент и непонял ((( Может какой-нить добрый чел пояснить,плиз!?
Автор: rain87
Дата сообщения: 12.01.2007 21:47
blackdevil
ртфм
Цитата:

srand <STDLIB.H>

Initializes random number generator

Declaration: void srand(unsigned seed);

Remarks:
The random number generator is reinitialized by calling srand with an
argument value of 1.

The generator can be set to a new starting point by calling srand with a
given seed number.

Return Value: None

Example:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(void)
{
int i;
time_t t;

srand((unsigned) time(&t));
printf("Ten random numbers from 0 to 99\n\n");
for(i=0; i<10; i++)
printf("%d\n", rand() % 100);
return 0;
}
Автор: blackdevil
Дата сообщения: 12.01.2007 22:00
спасибо щас попробую )

Добавлено:
только вот непонятно причем тут переменная t...она вроде как меняет точку отсчета?
Автор: rain87
Дата сообщения: 12.01.2007 22:28
blackdevil
ну дык переменная t - текущее время. крайне маловероятно, что программа запустится дважды в один и тот же машинный квант времени, посему это довольно таки неплохой вариант инициализации генератора
Автор: DoctorLans
Дата сообщения: 14.01.2007 20:17
Всем добрый вечер.
Мой вопрос прост: как подключить MFC к Visual C++ 2005 Express (которого в нем просто нет), из Platform SDK (где MFC как раз имеется)?
Автор: veronica b
Дата сообщения: 15.01.2007 09:04
DoctorLans
Как я понимаю, Visual C++ 2005 Express был выпощен специально только для изучения "чистого" С++. Не встроено там программирование под Windows. Поэтому он и раздавался бесплатно. Вполне в сети можно найти Visual C++ 2005, правда его размер примерно 2.5 Г.
Автор: Abs62
Дата сообщения: 15.01.2007 09:12
veronica b

Цитата:
Не встроено там программирование под Windows.

"программирование под Windows"!=MFC.
Автор: veronica b
Дата сообщения: 15.01.2007 12:12
Abs62

Цитата:
программирование под Windows"!=MFC.


Правильно, программирование под MFC это частный и практически не оптимальный способ программирования под Windows. Или что то в этом мире изменилось?
Автор: Qraizer
Дата сообщения: 15.01.2007 13:08
Что значит "практически не оптимальный"? Совсем капельку "оптимальный" или "неоптимальный на практике?" MFC - это куда как более тонкая оболочка над API, чем VCL, так что если имелось в виду "неоптимальный по скорости исполнения", то это к Борланду.
Автор: veronica b
Дата сообщения: 15.01.2007 13:24
Qraizer

Цитата:
Что значит "практически не оптимальный"? Совсем капельку "оптимальный" или "неоптимальный на практике?" MFC - это куда как более тонкая оболочка над API, чем VCL,

Ну совсем не тонкая, а достаточно толстая и крепко ограничивающая работу прогамист. Я согласен, что через пару дней знакомства с MFC можно написать достаточно развитое приложение, например редактор. Для начала сойдет, ну а потом конечно. если тебе не нужен слишком развитый интерфейс, висело путами. У Борланда было OWL, а MFC он приклепал у своей 5.0 версии, видимо, для юмора!

Автор: XPEHOMETP
Дата сообщения: 15.01.2007 15:19
veronica b

Цитата:
Как я понимаю, Visual C++ 2005 Express был выпощен специально только для изучения "чистого" С++. Не встроено там программирование под Windows.

Visual C++ 2005 Express был выпущен специально для изучения платформы .NET и не позволяет писать программы на основе Win32 API (и, следовательно, MFC). Об этом прямо заявляется при первом же его запуске в окошечке с правой стороны. А также о том, что для написания прог под Win32 (чтобы запускать их без помощи монстра .NET)нужно еще дополнительно скачать SDK (+ справка и примеры в нехилом объеме, это по желанию). Вот если тут кликнуть на ссылочку "скачать", все должно установиться и интегрироваться нормально. А как самому интегрировать, ручками... Это не знаю.
Автор: Qraizer
Дата сообщения: 15.01.2007 19:20

Цитата:
Ну совсем не тонкая, а достаточно толстая и крепко ограничивающая работу прогамист. Я согласен, что через пару дней знакомства с MFC можно написать достаточно развитое приложение, например редактор. Для начала сойдет, ну а потом конечно. если тебе не нужен слишком развитый интерфейс, висело путами. У Борланда было OWL, а MFC он приклепал у своей 5.0 версии, видимо, для юмора!
Ну, во-первых я и не сказал, что тонкая. Я сказал, что тоньше, чем VCL. Во-вторых, неплохо было бы сначала сравнить MFC и VLC с некоторыми более другими. wxWidget, например, или Qt. Они местами и потолще окажутся, но это не значит, что они неоптимальны. Я-то ведь не зря просил уточнить смысл термина "практически". А ответа так и не услышал. Ну и в-третьих - никак не могу согласиться с остальными тезисами в адрес MFC. Щупал достаточно и её, и VCL, чтобы сравнивать.
Борланд не шутила, а почувстовала, что проигрывает Microsoft-у, вот и попыталась простейшим методом заинтересовать девелоперов в своём продукте. ИМХО зря. Сразу надо было на VCL уповать.
Автор: veronica b
Дата сообщения: 15.01.2007 20:15
Qraizer
Программировать под Windows я начал в 1993 году на Борланде 3.1. Программировал на Win16 API и OWL. Но в 1995 году мне понадобилось многопоточность и появилась книга Дж.Рихтера "Windows для профессионалов". Я стал программировать на Win32 API, поэтому имею только небольшой опыт MFC. Что такое VLC имею совсем не большое понятие, но впечатление произвела лучшее, чем MFC. Лучше программировать Win32 API, так мне кажется!
Автор: RedLord
Дата сообщения: 15.01.2007 20:37
veronica b
Qraizer

Ребята, перестаньте пиписьками меряться.
Автор: veronica b
Дата сообщения: 15.01.2007 21:47
RedLord
Извинте, если что не понятно, мы больше не будем вести разговоры на сложные темы.
Автор: FMeat
Дата сообщения: 15.01.2007 23:28
Доброго времени суток.

Есть вредная задача, с кучей непонятных строк, да и к тому же упорно не собирающаяся. Немогли бы вы происнить значения некоторых операторов и сообственно заставит её работать.

Задача посвещена перегрузке операторов << и >> (Что и делает её запутанной для понимания, хотя это и не основная проблема).
Среда: Visual C++ 2005 от МИКРософт. Програма написана как пустой проект консольного приложения. Вопросы задам по ходу программы в коментариях и полсе неё. Учебник "Как програмировать на С++" Харви и Пола Дейтлов.

Вот исходник:

#include "iostream"

using namespace std;

class PhoneNumber
{
    friend ostream &operator << (ostream &, const PhoneNumber &);
    friend istream &operator >> (istream &, PhoneNumber &);
//...Заметим что функции operator<< и operator>> объявленны в class PhoneNumber не как функции элементы а как друзья класса. Эти операции не могут ыбть элементами, так как объект класса PhoneNumber появляеться в каждом случае как правый операнд операции; а для перегруженной операции, записанной как функция - элемент, операнд класса должен проявляться с права... ©Учебник.
//Сам едва мудрень эту понял, так что объснить более понятным языком не берусь.
//Вот и первый вопрос! что это за классы такие ostream и istream и где про них прочитать на русском можно?
private:
    char areaCode[4];
    char exchange[4];
    char line;
};

ostream &operator << (ostream &output, const PhoneNumber &num)
{
    output << "(" << num.areaCode << ")" << num.exchange << "-" << num.line;

    return output;
}

istream &operator>> (istream &input, PhoneNumber &num)
{
    input.ignore();
    input.getline(num.areaCode, 4);
    input.ignore(2);
    input.getline(num.exchange, 4);
    input.ignore();
    input.getline(num.line, 5);
//Вопрос номер два. "get" это какой - то оператор?
//Вопрос номер три. ignore - классная вещ! А что ещё может с++? Откуда это взять можно? (Встроено это в С++ или в iostream.h реализованно?)

    return input;
}

void main ()
{
    PhoneNumber phone;

    cout << "Vvedite nomer telefona v vide (123) 456-7890. Telefon:" << endl;

    cin << phone;

    cout << "Bill vveden nomer telefona: " << phone << endl;
}

Вот ошибки возникающие при попытке собрать проект (2):
1::: error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'char' to 'char *'
2::: error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)

PS
Надеюсь такая громозкось поста вас не огорчает! Я стремился описать проблему как можно более ёмко. Ведь телепатов среди вас нет?

PPS
Пусть победы твои будут быстрыми и многочисленными.

Добавлено:
Жутко извеняюсь за ошики! Я бы был не внимателен при переносе программы из учебнка на компьютер! Не надо на наих отвечать!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.