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

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

Автор: Crazy_Shrike
Дата сообщения: 06.05.2004 12:37
Вопросы по программированию на C/С++


[more=Справочники, книги]

[b]Формат CHM (стандартный формат для Windows)

Язык программирования Си, авторы Б. Керниган, Д. Ритчи, Издание 3-е
Основы программирования на C / С++, вариант офлайн справки с сайта cppstudio.com
Полный справочник по C, автор Герберт Шилдт, вариант офлайн справки с сайта на narod'е



Сборники книг
Подборка на rutracker.org


[/more][/b]
[more=Выбор IDE (среды программирования)]
[b]Бесплатные

CodeBlocks
wxDev-C++
eclipse
Microsoft Visual C++ 2008 Express Edition



Выбор IDE на cyberforum.ru
[/more][/b]

Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

[more=Прежде чем просить помощи в задании...]
Если вы вдруг считаете, что здесь место халявных исполнений курсовых и лабораторных работ...

Тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но при этом что-то недопонимает, что-то не получается...
Ведь С/С++ изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям.
Вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...

Короче, тут не сборище альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите что-то сделать _за_ вас.
Если позарез надо и вы даже готовы заплатить
[/more]
Если позарез надо и вы даже готовы заплатить

Как правильно задавать вопросы, если вы хотите получить ответ.

Полезные ссылки:
C++(eng)
Автор: ladutsko
Дата сообщения: 06.05.2004 14:05
а где текст ф-ции rat?
Автор: Crazy_Shrike
Дата сообщения: 06.05.2004 15:07
Да там просто вывод... Какая разница. Главное - передается правильно, почему-то, половина массива, причем, каждый раз разные элементы...
Автор: VitaliyB
Дата сообщения: 06.05.2004 15:17
Crazy_Shrike
Дай полный код!!!!!!
Не телепаты всё-таки...
Автор: Crazy_Shrike
Дата сообщения: 06.05.2004 16:17
Гм... Полного кода больше тысячи строк...
Еще раз...

void rat (int mass[][8])
{
for(int i=0;i<8;i++)
{
for(int j=0;j<4;j++)
cout<<mass[j][i];
}
cout<<endl;
}

//--------------------------------

int main()
{

int mass[4][8];
// инициализация массива....

rat(mass);

}

Когда я вывожу массив прям из main() после его инициализации, то все нормально. А если вывод происходит из функции, то он передается кусками, часть элементов передается не правильно...
Автор: ladutsko
Дата сообщения: 06.05.2004 16:20
for i & j местами поменяй ...

p.s. было бы неплохо передавать длину массива ...
Автор: Crazy_Shrike
Дата сообщения: 06.05.2004 16:59
Да, блин... Не в этом дело... Спасибо конечно, за желание помочь, но все делаю по Дейтелу...

Люди! Кто-нить еще!

Добавлено
Все, получилось... Нужно было написать первую размерность на приеме... А у Дейтела не нужно...
Автор: VitaliyB
Дата сообщения: 06.05.2004 17:12
Crazy_Shrike
Ох ты ж блин! А я как раз хотел написать про первую размерность... малость опоздал. Но вообще я бы передавал указатель и размерность массива.
Автор: Crazy_Shrike
Дата сообщения: 06.05.2004 18:44
Напиши! Всегда хотел узнать как массив указателем передать!
Автор: Arion
Дата сообщения: 06.05.2004 20:01

Код:

void MyFunc(int* pArray,int nSize)
{
for(int i=0;i<nSize\sizeof(int);i++)
printf("%d",pArray[i]);
}

int __cdecl main()
{
int myArray[10];
//.....Инициализируем, тра та та
MyFunc(myArray,sizeof(myArray));
return(0);
}
Автор: Crazy_Shrike
Дата сообщения: 07.05.2004 07:55
Спасибо. Еще вопрос.
Почему говорят, что динамический массив - это сложно? Или кроме DynamicArray есть еще че-то?
Автор: ladutsko
Дата сообщения: 07.05.2004 09:15
Crazy_Shrike

Цитата:
Да, блин... Не в этом дело...

Ты пробовал?

Цитата:
динамический массив

int mass[][8] - чем тебе не динамический массив?
Автор: Crazy_Shrike
Дата сообщения: 07.05.2004 10:35
Ты что, издеваешься? Какая разница где i, а где j !? Может у меня ряды со столбцами попутались. Привык так.

А насчет динамического массива... Дык, как же ж его размер поменять? Его размер же ж можно задать при обявлении явно или константой, а константу менять сложновато...
Автор: UncoNNecteD
Дата сообщения: 07.05.2004 10:39
SetLength(array, 100)

Добавлено
Почитай хелп Борландда по динамическим массиваи.
Автор: ladutsko
Дата сообщения: 07.05.2004 11:09
Crazy_Shrike
1. у тебя в массиве 8 столбцов, а выводишь по 4 ... вот и бросилось в глаза ... подумал, что ты инициализируешь первые 4 столбца в каждой строке ... дай код инициализации ...
2. для функции rat объявление типа mass[][8] говорит, что это массив с каким угодно кол-вом строк по 8 столбцов ...
и передать туда можно и 4x8 и 40x8 и т.д.
3. оперировать с произвольным количеством элементов можно используя коллекции - например vector.
Автор: Crazy_Shrike
Дата сообщения: 07.05.2004 11:25

Цитата:
и передать туда можно и 4x8 и 40x8 и т.д.


Т.е. когда принимаешь, нужно уже писать сколько строк... Ну, в принципе, я так и понял...



Цитата:
SetLength(array, 100)


Я пользуюсь DynamicArray и он меня пока полностью удовлетворяет...
Автор: Arion
Дата сообщения: 07.05.2004 19:35

Цитата:
Почему говорят, что динамический массив - это сложно? Или кроме DynamicArray есть еще че-то?


Код:
//"Чистый" C++
int * pArray = new int[100];
//.. Тра та та
delete[] pArray;
//Win32 API
int* pArray = (int*)HeapAlloc(GetProcessHeap(),0,100*sizeof(int));
//...Тра та та
//Увеличиваем массив в 2 раза
HeapRealloc(GetProcessHeap(),0,pArray,200*sizeof(int));
//освобождаем
HeapFree(GetProcessHeap(),0,pArray);
Автор: ArtSh
Дата сообщения: 08.05.2004 13:46
Динамический массив - я понимаю vector из STL. Работать с ним очень просто и не надо ломать голову, что где-то я забыл высвободить память.
Пример:

#include <vector>
#include <iostream>

void main()
{
vector<int> ar; //создание массива ar элементами которого являются int
int a,b,c=10;

ar.pushback(a);
ar.pushback(b);
ar.pushback(c);
ar.pushback(10); //добавляем числа в массив с зади

cout<<ar[3]; //обращаемся к 3 элементу.
ar.clear(ar.begin(),ar.end()); //уничтожаем все элементы массива
};


при создании вектор выделяет определенный объем памяти, при вставке, он копирует объект (вызывает копирующий конструктор) во внутреннюю память, если ее не хватает он выделяет больший объем памяти и снова копирует туда все свое содержимое.

А вообще на эту тему написаны горы книг.
Автор: Crazy_Shrike
Дата сообщения: 11.05.2004 09:20
#include <sysdyn.h>

DynamicArray<int> arrayOfInt;
arrayOfInt.Length = 10;
cout << "ArrayLength: " << arrayOfInt.Length << endl;

Все атрибуты:

High
Length
Low

Все.

Автор: Swappp
Дата сообщения: 12.05.2004 00:12
Crazy_Shrike
а откуда sysdyn.h? в поставке VS.NET такого нету, у GCC тоже, получается что то не стандартное, и неизвестно как будет работать на разных платформах, ИМХО лучше STL'овский vector.
Автор: react
Дата сообщения: 16.05.2004 00:23
Народ, подскажите плиз как надо обьявлять и инициализировать двухмерный
масив int'ов, чтоб потом его передать в функцию указателем ???
Автор: JonnySilver
Дата сообщения: 19.05.2004 10:41
// вообще легко... и все выводится
void rat(int mas[][8]);

int main(int argc, char* argv[])
{
int Mas[4][8] = {{1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2},{3,3,3,3,3,3,3,3},{4,4,4,4,4,4,4,4}};

rat(Mas);

return 0;
}

//
void rat(int mas[][8])
{
for (int i=0;i<4;i++) {
for (int j=0;j<8;j++) {
printf("%d", mas[i][j]);
}
}
}
Автор: react
Дата сообщения: 24.05.2004 00:10
JonnySilver

Thanks !!!
Автор: Dark_Wizard
Дата сообщения: 24.05.2004 01:44
Народ у мена проблема токая, установил себе Borland C++ 5, но вот проблема нехочет брать егоже стандартные библиотеки, ибо пытюсь например написать

Цитата:

#include <iostream>
int mai()
{
int integer1;
std::cout << "Enter first integer\n";
std::cin >> integer1;
int integer2, sum;
std::cout << "Enter second integer\n";
std::cin >> integer2;
sum=integer1 + integer2;
std::cout << "Sum is" << sum << std::endl;
return 0;
}

и он мне выдаёт такие ошибки

Цитата:

Qualifier 'std' is not a class or namespace name

Хотя по идеие должно было работать.
Что делать?
Автор: JonnySilver
Дата сообщения: 24.05.2004 03:46
Dark_Wizard

Цитата:
#include <iostream>

#include <iostream.h>
Автор: Dark_Wizard
Дата сообщения: 24.05.2004 04:31
JonnySilver

Цитата:
#include <iostream.h>

Таже х..ь вылазит
Хотя я ориентировался по книжке Х.М. Дейтела

Добавлено
Может проблема в самой сишке?
Автор: JonnySilver
Дата сообщения: 24.05.2004 05:35
Во, блин, понедельник же! Я и сам запарился - Убери везде std:: !!
Автор: Dark_Wizard
Дата сообщения: 24.05.2004 05:59
JonnySilver
Пасибо, работает!!!
А почему без std:: ?
Автор: JonnySilver
Дата сообщения: 24.05.2004 07:18
Как бы попроще объяснить...
В записи выражения "std::cout << ..." подразумевается, что std - это класс.
Нет такого класса - std. А вот "cout" - это класс вывода на консоль. Он определен и поэтому все работает.
Автор: Crazy_Shrike
Дата сообщения: 26.05.2004 10:54

Цитата:
void rat(int mas[][8]);

int main(int argc, char* argv[])
{
int Mas[4][8] = {{1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2},{3,3,3,3,3,3,3,3},{4,4,4,4,4,4,4,4}};

rat(Mas);

return 0;
}

//
void rat(int mas[][8])
{
for (int i=0;i<4;i++) {
for (int j=0;j<8;j++) {
printf("%d", mas[i][j]);
}
}
}


Люди, представляете, а у меня не работает!!! Хотя точно то же самое. Передается только часть массива, скажем, из десяти строк четыре передаются правильно, а остальные - случайные числа, как будто их просто не инициализировали и они показывают содержимое ячеек выделенной памяти. Весь смех в чем - те четые строки, которые передаются правильно не обязательно первые и даже не обязательно идут одна за другой!!! Я в такой панике, что готов разбить монитор. Еще одна фишка в том, что, если передавать этот массив в пределах файла .cpp - все нормально, но при передаче в файл с реализацией методов класса происходит такая фигня.
Может у кого-то есть мысли?
ЗЫ. Анинсталить компилер, выкинуть компьютер, погасить монитор, выдернуть сетевой кабель и т.д. - не предлагать.


Добавлено
Кстати, "void rat()" - это классический прикол программистов С или солидарность со мной?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

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


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