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

Три вопроса от чайника по С++ - C++

Восстановить пароль Регистрация
 
Matlabist
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 98
06.12.2010, 16:59     Три вопроса от чайника по С++ #1
Здравствуйте,
1. Как возможно присвоить один массив другому? Или придется перегружать7

2. Как конструкцию в Basic можно переделать в с++

PureBasic
1
2
3
4
5
Select Case s
 Case Is <= 0:  Ko = 1
 Case Is >= 1:  Ko = 0
 Case Else:  Ko = s
End Select
В си оператор выбора выглядит вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int caseSwitch = 1;
switch (caseSwitch)
{
    case 1: 
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}
А где можно поставить больше и меньше здесь?

3. Передаю в функцию массив посредством указателя на первый элемент.
Например
void func(float* ar)
{
}
Как теперь работать с этим массивом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2010, 16:59     Три вопроса от чайника по С++
Посмотрите здесь:

C++ У меня три вопроса
C++ Три задачи для чайника.
C++ Вопрос чайника
как найти три максимальных и три минимальных значения 10 случайных чиселых C++
Вопрос чайника C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
06.12.2010, 18:01     Три вопроса от чайника по С++ #2
1. Простые массивы присваивать друг другу нельзя(только копировать поэлементно). Гораздо удобнее использовать valarray вместо обычного массива(ну, или vector, в зависимости от того, что вам нужно).
2. Через конструкцию if-else if-else
3. Работать с ar также, как с обычным массивом.
Matlabist
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 98
08.12.2010, 18:24  [ТС]     Три вопроса от чайника по С++ #3
1. Если я передаю элемент массива по значению, в конце процедуры с массивом ничего не случится? Просто помню, что если передавать массивы по значению, то в конце процедуры С++ его удаляет. Например:
C++
1
2
3
4
5
6
7
int n=10;
float ar[n];
void func(float x) {
}
int main() {
func(ar[5]);
}
2. Можно ли достать информацию о том вернула ли функция значение или нет, т.е. прошла ли она через return? Или после return она выходит из функции?
Есть функция
C++
1
2
3
4
5
double y(double x) {
    if (x<=0) return 0;
    if (x>=1) return 1;
    if ((x>0)&&(x<1)) return x; 
}
warning C4715: y: значение возвращается не при всех путях выполнения
Почему студиа делает предупреждение?
3. Я пишу:
C++
1
2
int x=10;
cout << “x = ”, x;
Почему он пишет только «x ==» ?
4. Как перегрузить оператор = для массивов?
Black Fregat
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
08.12.2010, 19:13     Три вопроса от чайника по С++ #4
Цитата Сообщение от Matlabist Посмотреть сообщение
Если я передаю элемент массива по значению, в конце процедуры с массивом ничего не случится?
Ничего. Передача по значению работает как присваивание - никакой обратной связи с переданным параметром внутри функции нет.

Цитата Сообщение от Matlabist Посмотреть сообщение
Просто помню, что если передавать массивы по значению, то в конце процедуры С++ его удаляет.
Обычные массивы в С/C++ вообще нельзя передавать по значению.

Цитата Сообщение от Matlabist Посмотреть сообщение
Или после return она выходит из функции?
После return она выходит из функции.

Цитата Сообщение от Matlabist Посмотреть сообщение
Почему студиа делает предупреждение?
Она ведь не обязана проверять, покрывают ли условия все возможные варианты. Формально последний оператор может пропустить поток управления на выход функции без возврата значения, что будет ошибкой. Студия ведь только предупреждает, а не фиксирует ошибку.

И почему бы не убрать последний if ? А если уж хочется видеть условие, то его ведь можно и в комментарии привести.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
08.12.2010, 20:10     Три вопроса от чайника по С++ #5
3.
C++
1
std << "x = " << x;
4. Никак. Использовать valarray либо vector.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.12.2010, 20:56     Три вопроса от чайника по С++ #6
Цитата Сообщение от Matlabist Посмотреть сообщение
1. Как возможно присвоить один массив другому?
C++
1
2
for(int i=0;i<n;i++)
y[i]=x[i];
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
08.12.2010, 21:13     Три вопроса от чайника по С++ #7
Цитата Сообщение от Matlabist Посмотреть сообщение
1. Как возможно присвоить один массив другому?
Если без велосипедов, то вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include<cstring>
using std::cout;
int main(){
  int mas1[10];
  int mas2[10];
  for(int i=0;i<10;i++){
    mas1[i]=i;
    cout<<mas1[i]<<std::endl;
   }
  memcpy(mas2,mas1,10*sizeof(int));
    cout<<std::endl<<std::endl;
  for(int i=0;i<10;i++)
    cout<<mas2[i]<<std::endl;   
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
08.12.2010, 22:08     Три вопроса от чайника по С++ #8
C++
1
memcpy(mas2,mas1,10*sizeof(int));
C++
1
memcpy(mas2, mas1, sizeof mas1);
PureBasic
1
2
3
4
5
SELECT CASE s
 CASE IS <= 0:  Ko = 1
 CASE IS >= 1:  Ko = 0
 CASE ELSE:  Ko = s
END SELECT
C
1
    int n = (s <= 0) ? 1 : (s >= 1) ? 0 : s;
C
1
2
3
4
5
6
    if (s <= 0)
        n = 1;
    else if (s >= 1)
        n = 0;
    else
        n = s;
Matlabist
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 98
12.12.2010, 20:01  [ТС]     Три вопроса от чайника по С++ #9
Благодарю.

Чем отличается

C++
1
double[] Buffer1 = new double[1000];
от

C++
1
double Buffer1[1000];
?


Почему только у меня код

C++
1
double[] Buffer1 = new double[1000];
не работает?
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
12.12.2010, 21:05     Три вопроса от чайника по С++ #10
Цитата Сообщение от Black Fregat Посмотреть сообщение
Формально последний оператор может пропустить поток управления на выход функции без возврата значения
Да и не только формально, например, x может быть NaN.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 17:20     Три вопроса от чайника по С++
Еще ссылки по теме:

C++ Задачи для чайника
C++ кнопки с++ для чайника:)
C++ Книга для чайника

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
13.12.2010, 17:20     Три вопроса от чайника по С++ #11
Цитата Сообщение от Matlabist Посмотреть сообщение
Чем отличается
C++
1
double[] Buffer1 = new double[1000];
от
C++
1
double Buffer1[1000];
?
В первом случае массив динамический, во втором статический(подробнее в книгах для начинающих). Только естесвенно не double[], а double*.
Почему только у меня код
C++
1
double[] Buffer1 = new double[1000];
не работает?
Это и не должно работать(см. выше).
Yandex
Объявления
13.12.2010, 17:20     Три вопроса от чайника по С++
Ответ Создать тему
Опции темы

Текущее время: 21:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru