Форум программистов, компьютерный форум CyberForum.ru

C++ первые шаги (абсолютно первые) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какой unicod у номера? http://www.cyberforum.ru/cpp-beginners/thread838191.html
То есть у символа №?
C++ Проблемы с памятью Программа создает династическую двумерную матрицу. Не могу найти где происходит утечка памяти. Если несколько раз вводить большие размеры матрицы, то не происходит полная очистка памяти и программа просто закрывается. Помогите найти утечку и очищать память корректно. Often.h #ifndef _OFTEN_H_ #define _OFTEN_H_ bool Ioresult(std::istream &stream); //Функция проверки правильности ввода c... http://www.cyberforum.ru/cpp-beginners/thread838190.html
Какой код у символа ` C++
Который без шифта на копке с тильдой и буквой ё.
Сортировка С++ C++
Дано N натуральных чисел. Требуется найти минимальное натуральное число, не представимое суммой никаких из этих чисел, если в эту сумму каждое исходное число может входить не более одного раза. Входные данные Входной файл INPUT.TXT в первой строке содержит натуральное число N, не превосходящее 10^4, далее следуют N строк, в каждой из которых записано по одному натуральному числу,...
C++ Вычислить выражение http://www.cyberforum.ru/cpp-beginners/thread838148.html
Здравствуйте! Как в C++ записать вот такое выражение:
C++ Массив: Верно ли, что для каждой точки А существует точка B (A≠B) такая, что не существует двух точек множества M, лежащих по разные стороны от прямой Задано множество M точек на плоскости. Определить, верно ли, что для каждой точки А принадлежит М существует точка B принадлежит M (A≠B) такая, что не существует двух точек множества M, лежащих по разные стороны от прямой Помогите решить не силен в языке... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
23.04.2013, 18:05     C++ первые шаги (абсолютно первые)
servus_mori, я тоже в С++ недавно. Хорошая школа и цельное программистское образование это прекрасно. Желаю Вам найти приличного наставника и много терпения.
Вообще сравнение 3-х чисел, - хорошая тема для размышлений и я решил показать пару примеров. Мне они кажутся забавными, хотя на вкус и цвет...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//эта программа работает напрямую с переменными используя каждый раз их значения и не позволяет
//от этого абстрагироваться ни на одном шаге, перейдя от "этот" к "тот из всех который" или "тот из оставшихся который"
//или "тот, что остался". Имена переменных внутри програмы неразличимы. Правильность работы обеспечивается
//правильной последовательностью действий, но ценность программы продемонстрировать её низкий уровень абстракции
//в соседстве с некоторой избыточной техникой применения 3-нарного оператора (он сам по себе - вещь незаменимая и не виноват))
#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
setlocale(0,"rus");
int one=1,two=2, three=3;
int minim=0;
minim=((((one<two)?one:two)<three)?((one<two)?one:two):three);//мин из 3-x
cout<<minim<<" ";
minim=(minim==one)?((two<three)?two:three):((one<three)?one:three);//мин из 2-x отавшихся
cout<<minim<<" ";
cout<<((((one>two)?one:two)>three)?((one>two)?one:two):three);//печатем максимум
cout<<endl;
system("pause");
return 0;
}
и другой вариант:
C++
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
//Тут всё иначе, потому что данные доступны косвенно, то есть по индексам массива и это позволяет оперировать с ними,
//например сравнивать и переставлять не зная имён но формируя шаги к которым возвращаться уже не нужно. 
//это простенькая программка, но она неизмеримо лучше предшественницы
#include <iostream>
using namespace std;
//два глобальных объявления - целое и функция вызываемая из main
const int arrSz=3;
void fooChageIfFindAbnormalByGrow(int (&arr)[arrSz]){//функция найдя убывающий порядок у 2-x соседей меняет их местами. Одна перестановка за вызов
int chengerBox=0;
for(int i=1; i<arrSz; ++i)//тут один простой цикл все же необходим
if(arr[i-1]>arr[i]){
chengerBox=arr[i-1];
arr[i-1]=arr[i];
arr[i]=chengerBox;
}
}
int main(int argc, char* argv[]){
setlocale(0,"rus");
int someOnes[]={5,2,3};
while(true){//этот цикл - трясем пока не вытрясем
fooChageIfFindAbnormalByGrow(someOnes);//будем трясти пока не станут по местам все
if((someOnes[0]<=someOnes[1])&&(someOnes[0]<=someOnes[1]))break;//если вытрясли - выходим
}
cout<<someOnes[0]<<" "<<someOnes[1]<<" "<<someOnes[2]<<endl;
system("pause");
return 0;
}


Добавлено через 1 час 29 минут
Извините, хоть оно и так работает, но для порядку (если увеличить количество элементов в массиве, а это легко, то не заработает)) :
Цитата Сообщение от IGPIGP Посмотреть сообщение
if((someOnes[0]<=someOnes[1])&&(someOnes[0]<=someOnes[1]))break;//если вытрясли - выходим
нужно бы:
C++
1
if((someOnes[0]<=someOnes[1])&&(someOnes[1]<=someOnes[2]))break;//0<1<2
 
Текущее время: 23:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru