Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2011-06-23 13:29:25.453333   
ganjibasa13

Сообщений: 18
Оценки: 0
Присоединился: 2011-06-16 11:48:39.600000
privet, vsem, ia chainik v programirovani, xochu izuchit C ++,
s chevo nachat ili est kakoi nibud video kursi po izucheniu.
spasibo.

Большая просьба, в дальнейшем пользоваться услугами сайта translit.ru. Или любого другого сайта предоставляющего услуги по переводу с транслита на русский. Ведь, согласитесь, одно дело, если вы переведёте единожды, другое дело, если все будут переводить. Экономьте время человечества.
____________
С уважением,
rgo.
Post #: 2161
RE: Вопросы по C/C++ (Для новичков) - 2011-06-23 13:54:56.950000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Почитай форум. А лучше начни с сайта www.google.com
Post #: 2162
RE: Вопросы по C/C++ (Для новичков) - 2011-06-23 17:44:06.620000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: GazKerosin
И еще. для чего собственно нужна функция void. По сути это пустое множество, но толкования ее предназначения я так и не нашел.

А если подумать?
Любой тип – это множество значений. Скажем int – это значения от -32 768 до 32 767, char – -128..127. Тип void – это пустое множество, то есть множество не содержащее элементов. Функция возвращающая char может вернуть любое значение из множества char, функция возвращающая void может вернуть любое значение из void. Поскольку в void нет ни одного элемента, то void-функция ничего не может вернуть.
Post #: 2163
RE: Вопросы по C/C++ (Для новичков) - 2011-06-24 08:28:47.213333   
Tolias

Сообщений: 16
Оценки: 0
Присоединился: 2011-03-28 13:08:36.890000
Есть кусок кода некоторой программы на C++
LPWSTR dir; GetModuleFileName(NULL, dir, 300); //dir[3]='!'; int i, j=0; for(i=0;dir[i]!='\0';i++) if(dir[i]=='\\') j=i; dir[j]='\0'; j++;
Пишу в Visual Studio 2010.
Вопрос такой: Почему строка dir[j]='\0'; игнорируется и не выполняется как будто в коде ее вообще нет?
Вот поставил я брекпоинты на всех строках этого кода, запустил, и брекпоинт со строки dir[j]='\0'; исчезает! И когда программа выполняется, то эту строку вообще пропускает, как будто там ничего нет.

В коде, что я привел выше, вы видите третью строку закоментированной. Если ее раскоментировать, то эта строчка выполнится без проблем. Но как только ее поместить ниже цикла, так тут же она игнорируется!
Я вообще не въежаю, как объяснить такое странное поведение?? Объясните пожалуйста, а то у меня от этого странного поведения уже мозг кипит.


P.S. Сама задача этого кода в следующем: получить полный путь к текущей программе и отбросить в пути имя программы, оставив таким образом только путь к папке программы.
Post #: 2164
RE: Вопросы по C/C++ (Для новичков) - 2011-06-24 13:12:48.483333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
0) Ты пошаговую отладку делал, чтобы утверждать, что что-то игнорируется? По коду вообще нифига не понятно, что ты хочешь сделать.
1) ты забыл выделить память в LPWSTR dir
2)Как-то так:
TCHAR path[MAX_PATH]; int n; n = strlen( path ); for ( int i = path - 1; i &gt;= 0; i-- ) if ( path[i] == '\\' ) { path[i] = '\0'; break; } // В path - обрезанный путь
Post #: 2165
RE: Вопросы по C/C++ (Для новичков) - 2011-06-24 16:06:41.026666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: rgo
Тип void – это пустое множество, то есть множество не содержащее элементов. Функция возвращающая char может вернуть любое значение из множества char, функция возвращающая void может вернуть любое значение из void. Поскольку в void нет ни одного элемента, то void-функция ничего не может вернуть.


аналогия неверна: функций, отображающих на пустое множество, не существует (за исключением пустой функции из пустого множество в него же). корректней сказать, что void - это единичный тип, имеющий единственное значение (причём этот тип не является полным в смысле C++, потому явно создать переменную типа void нельзя). к слову, void является терминальным объектом соответствующей категории (а пустое множество - инициальным)

впрочем, даже так аналогия будет натянутой: функции в C++ являются процедурами, неявным параметром (и возвращаемым значением) в них присутствует RealWorld: возможность совершать сайд-эффекты
Post #: 2166
RE: Вопросы по C/C++ (Для новичков) - 2011-06-30 17:48:38.423333   
hrantabe

Сообщений: 203
Оценки: 0
Присоединился: 2009-08-11 11:05:12.030000
Сново Привет всем, Я на VC++ 6.0 MFC пишу одну прогу небольшую , я бы хотел чтобы она один .dat файл из своих ресурсов (Resources) кинула на жесткий диск , но незнаю как , уже многое время искал по интернету , и не смог найти решение , дайте работающий (проверенный) код плиз
Post #: 2167
RE: Вопросы по C/C++ (Для новичков) - 2011-07-08 20:09:57.333333   
AleXX_mirny

Сообщений: 6
Оценки: 0
Присоединился: 2011-07-08 19:32:33.940000
int main(int argc, cha*r argv[], char* envp[]) нужно создать массив в котором количество строк равно кол-ву строк из enpv.
Post #: 2168
RE: Вопросы по C/C++ (Для новичков) - 2011-07-09 15:15:10.676666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: AleXX_mirny

int main(int argc, cha*r argv[], char* envp[]) нужно создать массив в котором количество строк равно кол-ву строк из enpv.

char **p = envp; int n = 0; while ( *p ) { n++; p++; } std::vector&lt; std::string &gt; m( n );
Post #: 2169
RE: Вопросы по C/C++ (Для новичков) - 2011-07-13 01:11:34.770000   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Вечер добрый, вот код программы, которая должна выводить на экран текст, содержащийся в файле. Однако вместо текста выходит абракадабра. Пробовал менять расширение на .txt, но в этом случае вообще ничего не выдает. Подскажите, пожалуйста, в чем проблема?
#include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main() { ifstream File1("text.txt"); while (!File1.eof()) { char *t=new char[30]; File1&gt;&gt;t; cout&lt;&lt;t; delete[] t; } File1.close(); getchar(); getchar(); return 0; }
Post #: 2170
RE: Вопросы по C/C++ (Для новичков) - 2011-07-13 01:32:30.580000   
Alianna

Сообщений: 1922
Оценки: 356
Присоединился: 2010-03-02 11:27:12.343333
В кодировке?
Post #: 2171
RE: Вопросы по C/C++ (Для новичков) - 2011-07-13 23:00:27.146666   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
И в кодировке тоже, дело в том, что в файле *txt текст идет сплошняком, но программа в консоль каждое слово пишет с новой строки.

Кстати, Alianna, подскажи, пожалуйста, как менять кодировку в wxDev C++? замена компилятора и обновления не помогли. какие есть еще варианты.

З.Ы. Кстати, при использовании system("PAUSE"); программа выдает "Для продолжения работы нажмите любую клавишу…", то есть кириллицу текущий компилятор распознает?
Post #: 2172
RE: Вопросы по C/C++ (Для новичков) - 2011-07-13 23:59:54.816666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: El perro rabioso
И в кодировке тоже, дело в том, что в файле *txt текст идет сплошняком, но программа в консоль каждое слово пишет с новой строки.
Это загадочно. Я легко мог бы объяснить обратный эффект – пропажу пробелов и переводов строк, но появление… Откуда взялся этот файл?
quote:

ORIGINAL: El perro rabioso
З.Ы. Кстати, при использовании system("PAUSE"); программа выдает "Для продолжения работы нажмите любую клавишу…", то есть кириллицу текущий компилятор распознает?

Дело не в компиляторе. Кодировка файла не совпадает с кодировкой консоли. Если тебе удаётся просмотреть файл в вендовс, то, скорее всего, кодировка его CP1251. Попробуй в начале main воткнуть строчку:setlocale(LC_ALL, NULL);Ну и, чтобы компилятор знал, что это за setlocale, придётся добавить #include &lt;locale.h&gt;
Post #: 2173
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 10:26:24.490000   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Файл самый обычный *.txt в который вставлен текст. Там всего-навсего около 10 строк.

rgo, сделал все как ты сказал, текст выводится сплошным потоком, но там все равно нечитаемые символы.

Попробовал изменить кодировку с ANSI на Unicode и программа выдала системную ошибку: "количество символов и слов в тексте.exe - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства."

И еще вопрос: какую функцию выполняет указанная команда?
Post #: 2174
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 13:47:35.700000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
std::string + std::getstring попробуй вместо шаманства с выделением памяти

Чтобы не извращаться с локалями - пиши исходник программы и сам текстовый файл в одном и том же редакторе.
Post #: 2175
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 18:23:08.403333   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Можешь, пожалуйста, описать эти функции?

И как потом откомпилировать .txt с кодом? Если скопировать его в редактор и откомпилировать через него, то повторится та же история.
Post #: 2176
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 20:26:06.283333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: _SaZ_
std::string + std::getstring попробуй вместо шаманства с выделением памяти

+1
Там в программе баг, под названием переполнение буфера. Если слово окажется больше 30 символов, то буфер будет переполнен, буфер на стеке, значит пойдут затираться локальные переменные и адреса возврата. Это кранты программе.

quote:

ORIGINAL: _SaZ_
Чтобы не извращаться с локалями - пиши исходник программы и сам текстовый файл в одном и том же редакторе.

А это скорее всего не поможет. Текстовые редакторы в венде, если не указано специально, всё пишут в CP1251, а консоль вендовая, если не шаманить с локалями, предполагает CP866. Кстати это не "извращение с локалями", а указание стандартной C'шной библиотеке, чтобы она работала с той локалью, которая указана в переменных окружения. То есть чтобы она работала бы естественным образом. Без этого, она как-то странно работает.

quote:

ORIGINAL: El perro rabioso
rgo, сделал все как ты сказал, текст выводится сплошным потоком, но там все равно нечитаемые символы.

Да. Это я ступил слегка. Надо setlocale(LC_ALL, "");Щаз заглянул в man – оказывается я позабыл уже всё. :(
То есть текст выводится без пробелов и переводов строк? Ну это же как раз естественно: ты читаешь слово за словом, и выводишь слово за словом, но между словами ты не вставляешь не пробелов, ни переводов строк.
Post #: 2177
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 21:48:58.413333   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
rgo
Вставил твою строку, безрезультатно. Очевидно проблема все-таки в кодировке. Пока отложу вопрос до лучшего понимания.

Есть такая задача про АТС: за 10 секунд работы АТС она обрабатывает определенное число вызовов <30. Нужно вывести на экран количество вызовов за определенную секунду и определить момент времени, когда оно было максимальным.

Компилятор ругается на функцию randomize();

#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; void randomize(void); using namespace std; int main() { randomize(); register int y[10]; register int S=0; cout&lt;&lt;"Second\tNumber of dials"; for (register int k=0;k&lt;10;k++) { *(y+k)=rand() % 30; cout&lt;&lt;k+1&lt;&lt;"\t\t"&lt;&lt;*(y+k); S+=*(y+k); } register int max=*y; int num=0; for (register int k=0;k&lt;10;k++) { if (*(y+k)&gt;max) max=*(y+k); num=k; } cout&lt;&lt;"\n\nMasimum number of dials: "&lt;&lt;max; cout&lt;&lt;"\n\nSecond with maximum number of dials: "&lt;&lt;num&lt;&lt;endl; system("PAUSE"); return 0; }
Буду признателен всем, кто выскажет свои соображения.
Post #: 2178
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 23:13:14.733333   
ololo__schoolboy

Сообщений: 118
Оценки: 0
Присоединился: 2011-06-14 12:42:52.573333
Для отображения кириллицы допиши setlocale(LC_ALL, "Russian");
randomize(); а какой компилятор ? только в borland
Post #: 2179
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 23:30:40.030000   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Компилятор стандартный от wxDevC++ (default GCC Compiler). Странно, ведь функция описана в stdlib.h, по идее эта стандартная библиотека должна интерпретироваться всеми компиляторами одинаково.

З.Ы. Замена строки не помогла, увы…[:(], но все равно большое спасибо за вклад в копилку знаний. ))
Post #: 2180
RE: Вопросы по C/C++ (Для новичков) - 2011-07-15 08:55:12.596666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: El perro rabioso
Странно, ведь функция описана в stdlib.h, по идее эта стандартная библиотека должна интерпретироваться всеми компиляторами одинаково.

Стандартная библиотека может содержать нестандартные дополнения. А randomize не описан в стандартах.
quote:

ORIGINAL: ololo__schoolboy
Для отображения кириллицы допиши setlocale(LC_ALL, "Russian");

Это так в венде именуются локали? А где указание кодировки? Может лучше вместо Russian вписать ru_RU.CP1251?
quote:

ORIGINAL: El perro rabioso
Вставил твою строку, безрезультатно. Очевидно проблема все-таки в кодировке. Пока отложу вопрос до лучшего понимания.

Скажи мне откуда ты взял этот файл? Может он не в cp1251? Может он в cp866, koi8-r, utf8 или utf16?
Post #: 2181
RE: Вопросы по C/C++ (Для новичков) - 2011-07-15 11:40:13.226666   
ololo__schoolboy

Сообщений: 118
Оценки: 0
Присоединился: 2011-06-14 12:42:52.573333
quote:

Это так в венде именуются локали? А где указание кодировки? Может лучше вместо Russian вписать ru_RU.CP1251?
хз у меня win1251, UTF и так работают

ТС, выложи файл посмотрим
Post #: 2182
RE: Вопросы по C/C++ (Для новичков) - 2011-07-15 13:45:51.563333   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Файл сделал сам: открыл блокнот и Ctrl+V.

Кодировка по умолчанию ANSI, средствами Блокнота возможна замена на Unicode, UTF-7 и Unicode Big Endian, но ни одна из них не помогает.

пробовал вписать "ru_RU.CP1251", не помогает.

Хорошо, поставим вопрос по-другому: я открываю файл с помощью MS Word. Выбираю: Сервис Параметры Общие Параметры веб-документа Кодировка. с помощью этого меню я могу выбрать кодировку, в которой будет сохранен файл.

Какую кодировку выбрать?
Post #: 2183
RE: Вопросы по C/C++ (Для новичков) - 2011-07-15 14:02:31.043333   
ololo__schoolboy

Сообщений: 118
Оценки: 0
Присоединился: 2011-06-14 12:42:52.573333
выбери cp866 тогда ничего ставить не надо будет, если файл в ansi то посмотри почитай http://trivialcoding.ru/Programs/Borland-C-Builder/russian-symbols-c-builder.html
Post #: 2184
RE: Вопросы по C/C++ (Для новичков) - 2011-07-19 12:43:35.510000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
С++
Как можно объявить следующую конструкцию без использования typedef? Функция должна возвращать ссылку на константный массив

typedef char Hash[20]; const Hash& foo() { static Hash gHash = {0}; return gHash; }
Post #: 2185
RE: Вопросы по C/C++ (Для новичков) - 2011-07-19 14:49:39.010000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Получилась вот такая вот загогулина:
class SomeClass { const char (&hash() const)[20]; // ... };
Post #: 2186
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 17:34:26.783333   
forser

Сообщений: 4
Оценки: 0
Присоединился: 2009-07-11 04:27:26.140000
Привет, всем. Не знаю туда ли я поместил тему, но все же.
Я внезапно для самого себя купил книгу по программированию,
 в котором я полный ноль. Называется "C++ для чайников"
И вот в чем проблема: там рассматривается использование C++
с помощью компилятора (или как это там называется?..) GNU C++.
Но разве GNU- это не программы для Линкса?.. У меня просто форточки стоят.
 на винте 2 раздела ХР и 7-ка
Объсните, пожалуйста, возможно ли использование GNU С++ на Windows,
полазил по сети но нахожу только dev c++
вопросы :
C++ делает программы под винду?
 и возможно ли в С++ создавать программы с привязкой
к графическим библиотекам?
Подскажете,может, где же скачать GNU C++,
а то в dev c++ команды как бы не те
Спасибо за ответы, извините за много слов. 
Post #: 2187
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 18:46:35.076666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Скачай MSVS 2010 express и не заморачивайся
Post #: 2188
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 19:20:11.896666   
KwanzaBot

Сообщений: 129
Оценки: 0
Присоединился: 2011-04-18 19:45:33.773333
А что значит "в dev c++ команды как бы не те " ?
Просто у меня в dev c++ все команды те, а у тебя не те =)
Post #: 2189
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 21:03:41.490000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: forser
Привет, всем. Не знаю туда ли я поместил тему, но все же.
Я внезапно для самого себя купил книгу по программированию,
в котором я полный ноль. Называется "C++ для чайников"
И вот в чем проблема: там рассматривается использование C++
с помощью компилятора (или как это там называется?..) GNU C++.
Но разве GNU- это не программы для Линкса?.. У меня просто форточки стоят.
[…]

GNU – это аббревиатура, которая раскрывается как GNU is Not Unix. gcc работает не только в *nix. Но тебе не стоит искать именно gcc. Возьми, например, Dev-C++ – это среда разработки (IDE) в которую встроен компилятор gcc. Или как советовали выше возьми MSVS 2010 express. Просто компилятором можно делать всё что надо, но сложно – это же надо где-то набрать программу (в блокноте?), зайти в командную строку и оттуда скомпилировать. Весь этот геморрой с командной строкой конечно же должен преодолеваться без проблем настоящим программистом, но как правило, он больше мешает чем помогает. Во-всяком случае тебе он точно будет мешать.

Насчёт "не тех команд" – отвлекись от книжки, и почитай какой-нибудь туториал к dev-c++. ;)
Post #: 2190
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 22:23:04.760000   
Apathy^^

Сообщений: 96
Оценки: 10
Присоединился: 2011-07-01 17:14:09.226666
Доброго времени суток, уважаемые
хотелось бы попросить у вас помощи в написании прог под интернет в borland builder c++
за спиной только год  программирования и то в институте… подскажите как это реализуется хотелось бы для начала написать спамер сообщениями с анонимного номера через какой-нибудь сайт например http://shelkovo.org/raznoe/mail/
в идеале поднять свой сайт=)
как это все сделать подскажите с чего начать ведь желание есть=)
ps  слышал что проще всего это сделать через INDY
pss интересует код и доки препочтительней на с++
Post #: 2191
RE: Вопросы по C/C++ (Для новичков) - 2011-07-27 20:35:25.626666   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
Банальный код:
#include &lt;iostream&gt; using namespace std; int main() { int answer = 4; while(answer--) cout &lt;&lt; answer &lt;&lt; endl; cout &lt;&lt; answer &lt;&lt; endl; // -1 return 0; почему имеем такой вывод: 3 2 1 0 -1 почему выход из цикла происходит по -1, а не по 0?
Post #: 2192
RE: Вопросы по C/C++ (Для новичков) - 2011-07-27 20:50:06.473333   
btf

Сообщений: 29
Оценки: 0
Присоединился: 2010-05-10 14:43:16.530000
Все дело в постдекрименте. У тебя сначала проверяется значение на истиность (т.е. не равно нулю), а затем уменьшается и выводится.
Используй преинкремент
int answer=4; while(--answer) cout&lt;&lt;answer&lt;&lt;endl;
Post #: 2193
RE: Вопросы по C/C++ (Для новичков) - 2011-07-27 21:05:35.716666   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666

btf, точно. Ерунду какую-то спросил не подумав.
Post #: 2194
RE: Вопросы по C/C++ (Для новичков) - 2011-07-30 00:08:17.743333   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Добрый вечер. Поставлена задача сортировки массива тремя способами: пузырьком, методом минимального элемента и методом вставки. Два первых алгоритма написал и вставил в код в рамках int main(). Все прекрасно получилось Потом попробовал выделить каждый алгоритм в отдельную функцию, возвращающую отсортированный массив в main(). Вот тут и начались проблемы: компилятор выдает две ошибки:

строка 17 expected unqualified-id before "return"
строка 18 expected declaration before '}' token

вот код:
#include &lt;iostream&gt; using namespace std; int *sorting1(int n,int *arr) { for (int i=0;i&lt;n-1;i++) for (int j=0;j&lt;n-i-1;j++) { int temp; if (*(arr+j)&gt;*(arr+j+1)) { temp=*(arr+j+1); *(arr+j+1)=*(arr+j); *(arr+j)=temp; } } } return *arr; } int sorting2(int n,int *arr) { int temp,n; for (int k=0;k&lt;14;k++) { int min=*(arr+k); for (int j=k+1;j&lt;15;j++) { if (*(arr+j)&lt;min) { temp=min; min=*(arr+j); *(arr+j)=temp; } } *(arr+k)=min; } return arr; } int sorting3(int n,int arr) { return arr; } int main() { register int n; printf("Give the number of elemets in the array: "); scanf("%d",&n); register int brd; printf("\n\nGive the maximum permissible value of array elements: "); scanf("%d",&brd); register int arr[n]; printf("\n\nYour array is: "); for (register short int i=0;i&lt;n;i++) { *(arr+i)=rand() % brd; printf("%d ",*(arr+i)); } int method; int size=sizeof arr; printf("\nThe size of the array is: %i", size); printf("\n\n\nPlease, choose the ordering method:\n\n"); printf("- for bubble sort please press 1.\n"); printf("- for transport method please press 2.\n"); printf("- for input method please press 3.\n\n"); scanf("%d",&method); switch (method) { case 1: sorting1(n,arr); case 2: sorting2(n,arr); case 3: sorting3(n,arr); default: cout&lt;&lt;"Wrong key!"&lt;&lt;endl; } printf("The array sorted is: "); for (int m=0;m&lt;n-1;m++) printf("%d ",*(arr+m)); printf("\n\n"); system("PAUSE"); return 0; } самое обидное в том, что я не понимаю в чем дело. Есть у кого идеи?
Post #: 2195
RE: Вопросы по C/C++ (Для новичков) - 2011-07-30 17:33:45.913333   
KwanzaBot

Сообщений: 129
Оценки: 0
Присоединился: 2011-04-18 19:45:33.773333
Ты забыл "{" на 5 строке:
for (int i=0;i&lt;n-1;i++){
Post #: 2196
RE: Вопросы по C/C++ (Для новичков) - 2011-07-30 23:36:10.310000   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Скорее забыл удалить } на 16, но это неважно. Отладил сегодня утром, все работает вот код:

#include &lt;iostream&gt; using namespace std; void sorting1(int n,int *arr) { for (int i=0;i&lt;n-1;i++) for (int j=0;j&lt;n-i-1;j++) { int temp; if (*(arr+j)&gt;*(arr+j+1)) { temp=*(arr+j+1); *(arr+j+1)=*(arr+j); *(arr+j)=temp; } } } void sorting2(int n,int *arr) { int temp; for (int k=0;k&lt;14;k++) { int min=*(arr+k); for (int j=k+1;j&lt;15;j++) { if (*(arr+j)&lt;min) { temp=min; min=*(arr+j); *(arr+j)=temp; } } *(arr+k)=min; } } void sorting3(int n,int *arr) { } int main() { register int n; printf("Give the number of elemets in the array: "); scanf("%d",&n); register int brd; printf("\n\nGive the maximum permissible value of array elements: "); scanf("%d",&brd); register int arr[n]; printf("\n\nYour array is: "); for (register short int i=0;i&lt;n;i++) { *(arr+i)=rand() % brd; printf("%d ",*(arr+i)); } int method; int size=sizeof arr; printf("\n\nThe size of the array is: %i", size); printf("\n\n\nPlease, choose the ordering method:\n\n"); printf("- for bubble sort please press 1.\n"); printf("- for transport method please press 2.\n"); printf("- for input method please press 3.\n\n"); scanf("%d",&method); switch (method) { case 1: sorting1(n,arr); break; case 2: sorting2(n,arr); break; case 3: sorting3(n,arr); break; default: cout&lt;&lt;"Wrong key!"&lt;&lt;endl; } printf("\nThe array sorted is: "); for (int m=0;m&lt;n-1;m++) printf("%d ",*(arr+m)); printf("\n\n"); system("PAUSE"); return 0; }
сейчас пытаюсь реализовать алгоритм сортировки методом вставки. Есть у кого какие соображения по этому поводу?
Post #: 2197
RE: Вопросы по C/C++ (Для новичков) - 2011-07-31 15:26:31.596666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
В интернете всё есть :), инетерсно, каких "соображений" ты ожидаешь?
Post #: 2198
RE: Вопросы по C/C++ (Для новичков) - 2011-07-31 19:10:54.640000   
El perro rabioso

Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
Понятно, что в интернете все есть, но не хочется при первом намеке на трудности передирать чужой код.

Под соображениями я подразумеваю совет, например какие операторы цикла лучше использовать, как рационально организовать код и т.д.

Попробовал я его написать сам, но он работает некорректно.

Вот код:
#include &lt;iostream&gt; using namespace std; int main() { short int n=12,arr[n],i=0; cout&lt;&lt;"Your array:\n"&lt;&lt;endl; while (i&lt;n) { *(arr+i)=rand()%99; cout&lt;&lt;*(arr+i)&lt;&lt;" "; i++; } cout&lt;&lt;endl; for (i=0;i&lt;n-1;i++) { int input=*(arr+i); int min,index; for (int j=i+1;j&lt;n;j++) { if (*(arr+j)&lt;input) { min=*(arr+j); index=j; } while (index) { *(arr+index)=*(arr+index-1); index--; } } *(arr+i)=min; } cout&lt;&lt;endl; cout&lt;&lt;"Sorted array:\n"&lt;&lt;endl; for (i=0;i&lt;n;i++) cout&lt;&lt;*(arr+i)&lt;&lt;" "; cout&lt;&lt;"\n"&lt;&lt;endl; system("PAUSE"); return 0; }
А вот результат:

Your array is:

41 53 97 67 62 82 93 54 34 11 62 29

The array sorted is:

29 29 29 29 62 62 62 62 62 62 62 97

Единственный положительный результат: максимальный элемент переставлен в конец массива.

Где ошибка?
Post #: 2199
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 11:48:35.186666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
В интернете есть готовые реализации. Если хочешь разобраться сам и найди ошибку - делай пошаговую отладку.
Post #: 2200
Страниц:  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 53 54 [55] 56 57 58 59 60
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.