Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
1

Структуры в функциях

03.06.2009, 03:35. Показов 3397. Ответов 41
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет вот у меня есть такой код

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
 
struct box
{    
                  char nme[20];
                   int vol;
 };
void sin ( box cn);
void cot (box ct);
int main ()
{
                       box snw;
                       sin (snw);
                       cot (snw);
             return 0 ;
}
void sin (box cn)
{
             cin >> cn.nme ;
             cin >> cn.vol ;
}
void cot (box ct)
{
                 cout << " nme = " << cn.nme << endl;
                 cout << "  vol = " << cn.vol << endl;
}
но все вроде нормально ввожу даные,но вывод какойто непонятный не то что ввел?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2009, 03:35
Ответы с готовыми решениями:

Помещение структуры в вектор, удаление структуры, изменение элементов структуры
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный...

This в функциях
У меня простой вопрос, почему некоторые люди постоянно в функциях-членах чуть ли не везде...

Окончание W и A в функциях
Привет. Объясните пожалуйста допустим: GetCurrentDirectoryW (Unicode) and GetCurrentDirectoryA...

Указатели в функциях
Проблема с указателями в классе дерево. Есть такой вот класс: template &lt;class T&gt; class tree_elem...

41
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.06.2009, 03:59 2
Код
void cot (box ct)
заменить на
Код
void cot (box cn)
0
8 / 8 / 5
Регистрация: 30.05.2009
Сообщений: 47
03.06.2009, 04:32 3
sin (box cn) заменить на sin (box& cn)
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
03.06.2009, 05:02  [ТС] 4
чето у меня выводит что опасность:(
ввод один
а вывод вабще левый какой-то=-O
0
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
03.06.2009, 05:13 5
Мегатрон,
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
28
29
30
31
32
33
34
35
36
37
#include <iostream.h>
#include <conio>
 
//-----------------
struct box
{
    char nme[20];
    int  vol;
};
//-----------------
void sin(void);
void cot(void);
 
//=======================================
 
void main (void)
{
    box snw;
    sin();
    cot();
 
getch();
}
//=======================================
 
void sin()
{   box cn;
    cin >> cn.nme;
    cin >> cn.vol;
}
//--------------------------------------
 
void cot()
{   box ct;
    cout << " nme = " << ct.nme << endl;
    cout << " vol = " << ct.vol << endl;
}
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
03.06.2009, 05:21  [ТС] 6
C++
1
2
sin();
    cot();
не так я пробывал получается)
мне другим способом который я в начале написал чето не выходит?
а пачему непойму
0
18 / 18 / 1
Регистрация: 30.03.2009
Сообщений: 149
10.06.2009, 02:33 7
Мегатрон, привет!
Ну, разобрался? Ато могу подключиться помочь...
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
11.06.2009, 16:32  [ТС] 8
Цитата Сообщение от antropokosmizm Посмотреть сообщение
Мегатрон, привет!
Ну, разобрался? Ато могу подключиться помочь...
да разобрался=)
тока у меня там кое что еще
буду тут в этой теме писать

вот пример есть у меня массив
C++
1
int mas[5] = { 1, 2, 3, 4, 5};
можно ли его поменять местами в этом массиве 5,4,3,2,1 или нужно создать новый массив чтобы туда записать значения в обратном порядке?
0
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
11.06.2009, 17:07 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main()
{
    const int max=5;
    int array[max]={1,2,3,4,5};
    int buf;
    for(int i=0;i<max/2;i++)
    {
        buf=a[i];a[i]=a[max-i-1];a[max-i-1]=buf;
    }
    return 0;
}
0
8 / 8 / 5
Регистрация: 30.05.2009
Сообщений: 47
11.06.2009, 17:09 10
ну например так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template<typename _RnIt>
void swap_array( _RnIt _First, _RnIt _Second )
{
    std::iterator_traits<_RnIt>::value_type _Temp = *_First;
    *_First = *_Second;
    *_Second = _Temp;
}
 
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    swap_array( a, a + 3 );
}
0
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
11.06.2009, 17:10 11
Извини, масив под другим именем написал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main()
{
    const int max=5;
    int array[max]={1,2,3,4,5};
    int buf;
    for(int i=0;i<max/2;i++)
    {
        buf=array[i];array[i]=array[max-i-1];array[max-i-1]=buf;
    }
    return 0;
}
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
11.06.2009, 17:41  [ТС] 12
так а вот у меня есть такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
int main() 
{
const int N = 5;
int mas[N];
for(int i = 0;i < N; i++)
          cin >> mas[i];
snow (mas, mas + N);
retutn 0;
}
void snow (int *nh, int *kh)
{
         for ( int i = 0; kh != nh; kh--)
                       cout << i + 1 << " = " << *kh << endl;
}                                                               // тока тут он чето не все в обратном  порядке выдает
0
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
11.06.2009, 17:46 13
Цитата Сообщение от Мегатрон Посмотреть сообщение
snow (mas, mas + N);
Цитата Сообщение от Мегатрон Посмотреть сообщение
void snow (int *nh, int *kh)
сравни вызов функции и ее описание
вызываешь вторым параметром int* + const int
а в описании int*
0
18 / 18 / 1
Регистрация: 30.03.2009
Сообщений: 149
11.06.2009, 17:48 14
Мегатрон, попробуй сделать так, чтобы вместо параметра "int *nh" использовать параметр N.
Чтобы вызывалась функция не "snow (mas, mas + N);", а "snow (N, mas);"
Это первое.
И второе: попробуй сначала перевернуть массив, а только потом выводить. Чтобы это делели 2 разные функции.
------
Ну и я бы на твоём месте ещё выделил отдельно функцию swap, которая бы меняла местами значения 2-ух ячеек памяти типа int.
Вообще приучайся разделять прогу на функции. Разделяй и властвуй. Чтобы main был лаконичным.

main {

считать_массив
преобразовать_массив
вывести_на_экран_результат

}
0
Отдыхающий:)
94 / 91 / 22
Регистрация: 05.04.2009
Сообщений: 188
11.06.2009, 17:58 15
Если тебе нужно с указателями, то вот она:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
    int s[5]={1,2,3,4,5};
    int *st,*e,t;
    st=s;
    e=&s[4];
    while (st<e)
    {
        t=*st;
        *st=*e;
        *e=t;
        st++;
        e--;
    }
           for(int i=0;i<5;i++)
                    cout<<"a["<<i<<"]="<<s[i]<<endl;
    return 0;
}
1
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
11.06.2009, 18:06 16
Цитата Сообщение от mirso Посмотреть сообщение
бред
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
28
29
30
31
32
33
34
35
36
37
#include <iostream.h>
#include <conio>
 
//-----------------
struct box
{
 char nme[20];
 int vol;
};
//-----------------
void sin(void);
void cot(void);
 
//=======================================
 
void main (void)
{
    box snw;
    sin();
    cot();
 
getch();
}
//=======================================
 
void sin()
{  box cn;
    cin >> cn.nme;
    cin >> cn.vol;
}
//--------------------------------------
 
void cot()
{  box ct;
    cout << " nme = " << ct.nme << endl;
    cout << " vol = " << ct.vol << endl;
}
mirso Я конечно извиняюсь но что это за бред? вы хоть сами поняли что написали или это прикол такой?
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
11.06.2009, 18:15  [ТС] 17
лана шас я спать иду завтра проверю
у меня там задача ,код там большой сильно не стал весь писать вылаживаю по кусочкам

считать_массив
преобразовать_массив
вывести_на_экран_результат
это как раз там и требуют тока использовать диапазоные значения
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
14.06.2009, 02:24  [ТС] 18
вот у меня такой код

Добавлено через 35 минут 45 секунд
модератор хелп удали мой код
у меня чето лагануло такую фигню выдал
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
14.06.2009, 02:44 19
Цитата Сообщение от SONNY Посмотреть сообщение
ну например так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template<typename _RnIt>
void swap_array( _RnIt _First, _RnIt _Second )
{
    std::iterator_traits<_RnIt>::value_type _Temp = *_First;
    *_First = *_Second;
    *_Second = _Temp;
}
 
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    swap_array( a, a + 3 );
}
Вы сами-то этот код понимаете?
Судя, по тому, какую программу пытается написать автор, то он явно НИЧЕГО из Вашего кода не поймет. До STL ему явно еще далеко.
Мегатрон, если Вам нужна функция разворота целочисленного массива то вот:
C++
1
2
3
4
5
6
7
8
void Reverse(int* arr, int size)
{
  for(int i = 0; i < size / 2; ++i){
    int tmp = arr[i];
    arr[i] = arr[size - i - 1];
    arr[size - i - 1] = tmp;
  }
}
0
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 348
14.06.2009, 04:17  [ТС] 20
я ее уже написал функции
у меня тут еще кое что другое
шас код откоректирую а то он у меня такую лабуду выдает

Добавлено через 12 минут 20 секунд
такой код
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
using namespace std;
const int Max = 5;
int Fill_array (double ar[], int lem);
void show_array (const double ar[], int n);
void rev_array (double w, double ar[] ,int n);
int main ( )
{
      setlocale (LC_ALL,".1251");
      double perr[Max];
      int size= Fill_array (perr,Max);
      show_array (perr,size);
      cout<<"Ввести число:\n";
      double fak;
      cin>>fak;
      rev_array (fak,perr,size);
      show_array (perr,size);
      return 0;
}
int Fill_array (double ar[] , int lem)
{
      double temp;
      int i;
      for(i=0;i<lem;i++)
      {
            cout<<"Ввести число #"<<(i+1)<<":";
            cin>>temp;
            if(!cin)
            {
                  cin.clear();
                  while(cin.get()!='\n')
                        continue;
                  cout<<"Нет ввода:\n";
                  break;
            }
            else if(temp<0)
                  break;
            ar[i]=temp;
      }
      return i;
}
void show_array (const double ar[],int n)
{
      using namespace std;
      for(int i=0;i<n;i++)
      {
            cout<<"Элемент #"<<(i+1)<<":";
          cout<<ar[i]<<endl;
      }
}
void rev_array (double w,double ar[],int n)
{
      for(int i=0;i<n;i++)
      {
            ar[i]*=w;
      }
}
0
14.06.2009, 04:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2009, 04:17
Помогаю со студенческими работами здесь

О виртуальных функциях
Читаю у Страуструпа 3 издание по с++ 12.2.6. Виртуальные функции и не много не догоняю что он имеет...

Ошибка в функциях с++
функция f выполняет запрос к пользователю и возвращает значение ex либо x2; • функция one...

Массивы в функциях
напишите пожалуйста 2 программы для с++ 1) составить программу, которая все элементы массивов...

vector в функциях
нужна помощь #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; void func(vector...


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

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