RE: Вопросы по C/C++ (Для новичков)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
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.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-06-23 13:54:56.950000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Почитай форум. А лучше начни с сайта www.google.com
|
|
|
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-функция ничего не может вернуть.
|
|
|
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. Сама задача этого кода в следующем: получить полный путь к текущей программе и отбросить в пути имя программы, оставив таким образом только путь к папке программы.
|
|
|
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 >= 0; i-- )
if ( path[i] == '\\' )
{
path[i] = '\0';
break;
}
// В path - обрезанный путь
|
|
|
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: возможность совершать сайд-эффекты
|
|
|
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) кинула на жесткий диск , но незнаю как , уже многое время искал по интернету , и не смог найти решение , дайте работающий (проверенный) код плиз
|
|
|
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.
|
|
|
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< std::string > m( n );
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-13 01:11:34.770000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Вечер добрый, вот код программы, которая должна выводить на экран текст, содержащийся в файле. Однако вместо текста выходит абракадабра. Пробовал менять расширение на .txt, но в этом случае вообще ничего не выдает. Подскажите, пожалуйста, в чем проблема?
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream File1("text.txt");
while (!File1.eof())
{
char *t=new char[30];
File1>>t;
cout<<t;
delete[] t;
}
File1.close();
getchar();
getchar();
return 0;
}
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-13 01:32:30.580000
|
|
|
Alianna
Сообщений: 1922
Оценки: 356
Присоединился: 2010-03-02 11:27:12.343333
|
В кодировке?
|
|
|
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"); программа выдает "Для продолжения работы нажмите любую клавишу…", то есть кириллицу текущий компилятор распознает?
|
|
|
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 <locale.h>
|
|
|
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 - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства." И еще вопрос: какую функцию выполняет указанная команда?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 13:47:35.700000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
std::string + std::getstring попробуй вместо шаманства с выделением памяти Чтобы не извращаться с локалями - пиши исходник программы и сам текстовый файл в одном и том же редакторе.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-14 18:23:08.403333
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Можешь, пожалуйста, описать эти функции? И как потом откомпилировать .txt с кодом? Если скопировать его в редактор и откомпилировать через него, то повторится та же история.
|
|
|
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 – оказывается я позабыл уже всё. :( То есть текст выводится без пробелов и переводов строк? Ну это же как раз естественно: ты читаешь слово за словом, и выводишь слово за словом, но между словами ты не вставляешь не пробелов, ни переводов строк.
|
|
|
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 <iostream>
#include <stdlib.h>
#include <time.h>
#include <cmath>
void randomize(void);
using namespace std;
int main()
{
randomize();
register int y[10];
register int S=0;
cout<<"Second\tNumber of dials";
for (register int k=0;k<10;k++)
{
*(y+k)=rand() % 30;
cout<<k+1<<"\t\t"<<*(y+k);
S+=*(y+k);
}
register int max=*y;
int num=0;
for (register int k=0;k<10;k++)
{
if (*(y+k)>max)
max=*(y+k);
num=k;
}
cout<<"\n\nMasimum number of dials: "<<max;
cout<<"\n\nSecond with maximum number of dials: "<<num<<endl;
system("PAUSE");
return 0;
}
Буду признателен всем, кто выскажет свои соображения.
|
|
|
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
|
|
|
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, по идее эта стандартная библиотека должна интерпретироваться всеми компиляторами одинаково. З.Ы. Замена строки не помогла, увы…[:(], но все равно большое спасибо за вклад в копилку знаний. ))
|
|
|
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?
|
|
|
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 и так работают ТС, выложи файл посмотрим
|
|
|
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. Выбираю: Сервис Параметры Общие Параметры веб-документа Кодировка. с помощью этого меню я могу выбрать кодировку, в которой будет сохранен файл. Какую кодировку выбрать?
|
|
|
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;
}
|
|
|
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];
// ...
};
|
|
|
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++ команды как бы не те Спасибо за ответы, извините за много слов.
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 18:46:35.076666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Скачай MSVS 2010 express и не заморачивайся
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-26 19:20:11.896666
|
|
|
KwanzaBot
Сообщений: 129
Оценки: 0
Присоединился: 2011-04-18 19:45:33.773333
|
А что значит "в dev c++ команды как бы не те " ? Просто у меня в dev c++ все команды те, а у тебя не те =)
|
|
|
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++. ;)
|
|
|
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 интересует код и доки препочтительней на с++
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-27 20:35:25.626666
|
|
|
iidsp
Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
|
Банальный код:
#include <iostream>
using namespace std;
int main()
{
int answer = 4;
while(answer--)
cout << answer << endl;
cout << answer << endl; // -1
return 0;
почему имеем такой вывод:
3
2
1
0
-1
почему выход из цикла происходит по -1, а не по 0?
|
|
|
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<<answer<<endl;
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-27 21:05:35.716666
|
|
|
iidsp
Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
|
btf, точно. Ерунду какую-то спросил не подумав.
|
|
|
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 <iostream>
using namespace std;
int *sorting1(int n,int *arr)
{
for (int i=0;i<n-1;i++)
for (int j=0;j<n-i-1;j++)
{
int temp;
if (*(arr+j)>*(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<14;k++)
{
int min=*(arr+k);
for (int j=k+1;j<15;j++)
{
if (*(arr+j)<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<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<<"Wrong key!"<<endl;
}
printf("The array sorted is: ");
for (int m=0;m<n-1;m++)
printf("%d ",*(arr+m));
printf("\n\n");
system("PAUSE");
return 0;
}
самое обидное в том, что я не понимаю в чем дело. Есть у кого идеи?
|
|
|
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<n-1;i++){
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-30 23:36:10.310000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Скорее забыл удалить } на 16, но это неважно. Отладил сегодня утром, все работает вот код:
#include <iostream>
using namespace std;
void sorting1(int n,int *arr)
{
for (int i=0;i<n-1;i++)
for (int j=0;j<n-i-1;j++)
{
int temp;
if (*(arr+j)>*(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<14;k++)
{
int min=*(arr+k);
for (int j=k+1;j<15;j++)
{
if (*(arr+j)<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<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<<"Wrong key!"<<endl;
}
printf("\nThe array sorted is: ");
for (int m=0;m<n-1;m++)
printf("%d ",*(arr+m));
printf("\n\n");
system("PAUSE");
return 0;
}
сейчас пытаюсь реализовать алгоритм сортировки методом вставки. Есть у кого какие соображения по этому поводу?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-31 15:26:31.596666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
В интернете всё есть :), инетерсно, каких "соображений" ты ожидаешь?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-07-31 19:10:54.640000
|
|
|
El perro rabioso
Сообщений: 78
Оценки: 0
Присоединился: 2011-07-11 23:49:44.860000
|
Понятно, что в интернете все есть, но не хочется при первом намеке на трудности передирать чужой код. Под соображениями я подразумеваю совет, например какие операторы цикла лучше использовать, как рационально организовать код и т.д. Попробовал я его написать сам, но он работает некорректно. Вот код:
#include <iostream>
using namespace std;
int main()
{
short int n=12,arr[n],i=0;
cout<<"Your array:\n"<<endl;
while (i<n)
{
*(arr+i)=rand()%99;
cout<<*(arr+i)<<" ";
i++;
}
cout<<endl;
for (i=0;i<n-1;i++)
{
int input=*(arr+i);
int min,index;
for (int j=i+1;j<n;j++)
{
if (*(arr+j)<input)
{
min=*(arr+j);
index=j;
}
while (index)
{
*(arr+index)=*(arr+index-1);
index--;
}
}
*(arr+i)=min;
}
cout<<endl;
cout<<"Sorted array:\n"<<endl;
for (i=0;i<n;i++)
cout<<*(arr+i)<<" ";
cout<<"\n"<<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 Единственный положительный результат: максимальный элемент переставлен в конец массива. Где ошибка?
|
|
|
RE: Вопросы по C/C++ (Для новичков) - 2011-08-01 11:48:35.186666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
В интернете есть готовые реализации. Если хочешь разобраться сам и найди ошибку - делай пошаговую отладку.
|
|
|
|
|