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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
#1

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

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2009, 03:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры в функциях (C++):

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

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

Переменные в функциях - C++
Разбираясь с передачей и приемом функциями различных типов данных, столкнулся с такой проблемой.Написал 2 похожие функции и стал объявлять...

vector в функциях - C++
нужна помощь #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; void func(vector &lt;int&gt; ob) { ob=111; ...

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

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

41
ISergey
Maniac
Эксперт С++
1375 / 886 / 52
Регистрация: 02.01.2009
Сообщений: 2,661
Записей в блоге: 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
Сообщений: 355
11.06.2009, 18:15  [ТС] #17
лана шас я спать иду завтра проверю
у меня там задача ,код там большой сильно не стал весь писать вылаживаю по кусочкам

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

Добавлено через 35 минут 45 секунд
модератор хелп удали мой код
у меня чето лагануло такую фигню выдал
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 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
Сообщений: 355
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
inter
9703 / 2457 / 47
Регистрация: 06.03.2009
Сообщений: 8,503
14.06.2009, 04:19 #21
Мегатрон, где форматирование?
0
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
14.06.2009, 04:23  [ТС] #22
дано такое задание
замените 3 функции версиями работающими с диапазонами значений
функция
C++
1
Fill_array ()
вместо возврата действительного числа прочитаных значений
должна возвращать указатель на место,следующие за последним введеным элементом
прочите функции должны использовать его в качестве второго аргумента для индефекации
конца диапазона даных

Добавлено через 1 минуту 22 секунды
Цитата Сообщение от inter Посмотреть сообщение
Мегатрон, где форматирование?
я сохранил сразу из копилятора
если ставлю теги то такую лабуду выдает шо страшно смотреть
0
inter
9703 / 2457 / 47
Регистрация: 06.03.2009
Сообщений: 8,503
14.06.2009, 04:27 #23
Мегатрон, http://www.cyberforum.ru/about-forum...tml#post191988 сюда напишите что происходит, может поправимо
Или через блокнот может попробовать сюда постить?
0
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
14.06.2009, 12:16  [ТС] #24
Или через блокнот может попробовать сюда постить?
ок попробую через блокнотик

Добавлено через 25 минут 37 секунд
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
57
58
 
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)
{
 using namespace std;
 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;
 }
}
Добавлено через 5 часов 56 минут 14 секунд
дано такое задание
замените 3 функции версиями работающими с диапазонами значений
функция
Код C++1Fill_array ()
вместо возврата действительного числа прочитаных значений
должна возвращать указатель на место,следующие за последним введеным элементом
прочите функции должны использовать его в качестве второго аргумента для индефекации
конца диапазона даных

Добавлено через 7 минут 39 секунд
вот что я сделал согласно заданию

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
#include <iostream>
using namespace std;
const int N = 5;
int Fill_array (int *pa, int *pz);
void show_array (int *pa, int *pz);
void revalue (int *px, int *pa, int *pz);
int main()
{
 int ary[N];
 cout << " Fill_array = \n";
 int sum = Fill_array (ary, ary + N);
 cout << " show_array = \n";
 show_array (ary, ary + sum);
 cout << " cin >> gh = ";
 int gh;
 cin >> gh;
 int *ph = &gh;
 revalue (ph, ary,ary + sum);
 show_array (ary, ary + sum);
 return 0;
}
int Fill_array (int *pa, int *pz)
{
 int t, i;
 for(i = 0; pa < pz; pa++, i++)
 {
  cout<< i + 1 << " = ";
  cin >> t;
  if(!cin)
  {
   cin.clear();
   while(cin.get() != '\n')
    continue;
   cout << " exit \n";
   break;
  }
  else
   *pa = t;
 }
 return i;
}
void show_array (int *pa, int *pz)
{
 for(int i = 0; pa < pz; pa++, i++)
  cout << i + 1 << " = " << *pa << endl;
}
void revalue (int *px, int *pa, int *pz)
{
 for(int i = 0; pa < pz; pa++, i++)
  *pa *= *px;
}
Добавлено через 1 час 7 минут 8 секунд
у меня есть еще одно задание я его слелал ,но тока кое что неполучается
вот кусочек кода
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
 
const int N = 30;
struct student
{
            char name [N];
            char hobby [N];
             int opl;
};
int main ()
{
         int cls;
         cin >> cls;
         student  *pst = new student [cls];
         int ent = getinfo ( pst, cls);
}
int getinfo ( student pa[], int n)
{
             int i;
             for ( i = 0; i < n; i++)
        {
          cout << i + 1 << " = \n";
          cin >> pa [i].name;
          cin >> pa [i].hobby;
          cin >> pa [i].opl;
       }      
             return i;
}
нужно чтобы функция
C++
1
2
 
 getinfo ()
запрашивает и сохраняет даные о студентах
ввод прекращается либо после наполнениея массива
либо при вводе пустой строки вместо имени ( name ) студента ?
0
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
15.06.2009, 13:03  [ТС] #25
так что некто нече не знает
0
antropokosmizm
18 / 18 / 1
Регистрация: 30.03.2009
Сообщений: 149
15.06.2009, 23:46 #26
А в чём проблема(-ы)?

Цитата Сообщение от Мегатрон Посмотреть сообщение
ввод прекращается либо после наполнениея массива
либо при вводе пустой строки вместо имени ( name ) студента ?
это у тебя уже реализовано в предыдущем задании - что тебе мешает взять оттуда?

Добавлено через 4 часа 13 минут 34 секунды
Кстати, Мегатрон, если хочешь научиться, привыкай к работе с отладчиками и хэлпами. К очень плотной работе с ними. Они будут твоими руками и глазами. На полном серьёзе. Только у оч. долго практикующего (один язык) программиста код слёту получается без ошибок, да и то, если он в хорошей форме, а у новичков и учащихся ошибок всегда много.
От этого (ошибок) не надо огорчаться, - просто каждую ошибку исправлять, пока код не станет чистый. Иногда работа над ошибками может потребовать (или "порекомендовать" ) переписать какие-то фрагменты кода или изменить их структуру, что-то обобщить может быть, вынести в отдельныю функцию и др... Таким требованиям ("рекомендациям" ) желательно следовать (особенно в процессе обучения) - они всё равно что ступеньки на довольно длинной лестнице развития умения кодить. На первых ступенях бывает даже всю прогу нужно переписать, от и до.
0
Мегатрон
нубик программист)
96 / 10 / 0
Регистрация: 04.06.2008
Сообщений: 355
16.06.2009, 03:05  [ТС] #27
это у тебя уже реализовано в предыдущем задании - что тебе мешает взять оттуда?
да не последний код

C++
1
2
3
4
5
6
7
8
9
10
11
12
int getinfo ( student pa[], int n)
{
             int i;
             for ( i = 0; i < n; i++)
        {
          cout << i + 1 << " = \n";
          cin >> pa [i].name;
          cin >> pa [i].hobby;
          cin >> pa [i].opl;
       }      
             return i;
}
ввод прекращается либо после наполнениея массива
либо при вводе пустой строки вместо имени ( name ) студента ?


при ввода пустой строки он не завершает цикл
вот и думаю что может быть

0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
16.06.2009, 13:23 #28
Цитата Сообщение от Мегатрон Посмотреть сообщение
при ввода пустой строки он не завершает цикл
вот и думаю что может быть
а почему доолжен завершаться цикл?, для досрочного выхода надо использовать
break;
0
antropokosmizm
18 / 18 / 1
Регистрация: 30.03.2009
Сообщений: 149
16.06.2009, 13:28 #29
Цитата Сообщение от kazak Посмотреть сообщение
а почему доолжен завершаться цикл?
потому что пустая строка - признак окончания заполнения списка студентов...
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
16.06.2009, 13:33 #30
Цитата Сообщение от antropokosmizm Посмотреть сообщение
потому что пустая строка - признак окончания заполнения списка студентов...
ну это по условию, а где это реализовано сдесь?
C++
1
2
3
4
5
6
7
8
9
10
11
int getinfo ( student pa[], int n)
{
             int i;
             for ( i = 0; i < n; i++)
        {
          cout << i + 1 << " = \n";
          cin >> pa [i].name;
          cin >> pa [i].hobby;
          cin >> pa [i].opl;
       }      
             return i;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2009, 13:33
Привет! Вот еще темы с ответами:

Ошибки в функциях - C++
В общем задание такое: Даны матрицы А(4,3) и В(3,5). Для каждой матрицы вычислить сумму элементов над главной диагональю. Ввод, вывод...

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

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

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


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
16.06.2009, 13:33
Ответ Создать тему
Опции темы

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