2 / 2 / 1
Регистрация: 28.11.2010
Сообщений: 102
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте,
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)
{
}
Как теперь работать с этим массивом?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2010, 16:59
Ответы с готовыми решениями:

Три задачи для чайника.
Помогите пожалуйста решить пару задач. 1.Определить третью справа цифру натурального числа N...

Три вопроса
Доброго времени суток,форумчане!Помогите разобраться кое в чем:) 1.Есть некий форматированный...

Три вопроса
1) Как повернуть компонент Edit на определенное количество градусов? 2) Как запретить ввод текста...

Три вопроса по Ubuntu 9.10
Собственно: 1) Каждый раз при запуске системы запускается проверка диска (уже надоело отменять)....

10
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
06.12.2010, 18:01 2
1. Простые массивы присваивать друг другу нельзя(только копировать поэлементно). Гораздо удобнее использовать valarray вместо обычного массива(ну, или vector, в зависимости от того, что вам нужно).
2. Через конструкцию if-else if-else
3. Работать с ar также, как с обычным массивом.
0
2 / 2 / 1
Регистрация: 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. Как перегрузить оператор = для массивов?
0
Фрилансер
3705 / 2077 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
08.12.2010, 19:13 4
Цитата Сообщение от Matlabist Посмотреть сообщение
Если я передаю элемент массива по значению, в конце процедуры с массивом ничего не случится?
Ничего. Передача по значению работает как присваивание - никакой обратной связи с переданным параметром внутри функции нет.

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

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

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

И почему бы не убрать последний if ? А если уж хочется видеть условие, то его ведь можно и в комментарии привести.
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
08.12.2010, 20:10 5
3.
C++
1
std << "x = " << x;
4. Никак. Использовать valarray либо vector.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
08.12.2010, 20:56 6
Цитата Сообщение от Matlabist Посмотреть сообщение
1. Как возможно присвоить один массив другому?
C++
1
2
for(int i=0;i<n;i++)
y[i]=x[i];
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
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;   
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
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;
0
2 / 2 / 1
Регистрация: 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];
не работает?
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
12.12.2010, 21:05 10
Цитата Сообщение от Black Fregat Посмотреть сообщение
Формально последний оператор может пропустить поток управления на выход функции без возврата значения
Да и не только формально, например, x может быть NaN.
1
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
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];
не работает?
Это и не должно работать(см. выше).
0
13.12.2010, 17:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2010, 17:20
Помогаю со студенческими работами здесь

Три простых вопроса...
1) Как получить путь к папке, из которой запущена моя программа; 2) Есть ли более простой способ...

У меня три вопроса
Вопросы такие:1)Как на Visual C++ 2008 произвести переименование папки 2)Как сделать Restart но не...

Три вопроса по ASP+VBScript
Привет! 1) В VBasic 6.0 я конектился к MSSQL server через ADO так: mcnn.Open...

Три вопроса для демона
Напишите программу, которая найдет максимальную сумму вопросов из двух попыток выведать у демона...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru