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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Matlabist
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 102
#1

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

06.12.2010, 16:59. Просмотров 823. Ответов 10
Метки нет (Все метки)

Здравствуйте,
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)
{
}
Как теперь работать с этим массивом?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
06.12.2010, 18:01     Три вопроса от чайника по С++ #2
1. Простые массивы присваивать друг другу нельзя(только копировать поэлементно). Гораздо удобнее использовать valarray вместо обычного массива(ну, или vector, в зависимости от того, что вам нужно).
2. Через конструкцию if-else if-else
3. Работать с ar также, как с обычным массивом.
Matlabist
2 / 2 / 0
Регистрация: 28.11.2010
Сообщений: 102
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
1363 / 993 / 215
Регистрация: 31.05.2009
Сообщений: 4,152
08.12.2010, 19:13     Три вопроса от чайника по С++ #4
Цитата Сообщение от Matlabist Посмотреть сообщение
Если я передаю элемент массива по значению, в конце процедуры с массивом ничего не случится?
Ничего. Передача по значению работает как присваивание - никакой обратной связи с переданным параметром внутри функции нет.

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

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

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

И почему бы не убрать последний if ? А если уж хочется видеть условие, то его ведь можно и в комментарии привести.
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
08.12.2010, 20:10     Три вопроса от чайника по С++ #5
3.
C++
1
std << "x = " << x;
4. Никак. Использовать valarray либо vector.
^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,227
Завершенные тесты: 1
08.12.2010, 20:56     Три вопроса от чайника по С++ #6
Цитата Сообщение от Matlabist Посмотреть сообщение
1. Как возможно присвоить один массив другому?
C++
1
2
for(int i=0;i<n;i++)
y[i]=x[i];
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 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
4819 / 3239 / 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
Сообщений: 102
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
2781 / 1595 / 143
Регистрация: 03.12.2007
Сообщений: 4,179
Завершенные тесты: 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++ Книга для чайника
Дано слово. Переставить первые три и последние три буквы C++
C++ В интервале от 1 до 100, вывести все числа, кроме делящихся на три или имеющих в записи цифру три

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

Или воспользуйтесь поиском по форуму:
rangerx
1931 / 1540 / 141
Регистрация: 31.05.2009
Сообщений: 2,905
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     Три вопроса от чайника по С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru