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

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

Войти
Регистрация
Восстановить пароль
 
 
BAD-DOG
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 74
#1

Не получается лабораторная.. - C++

28.05.2010, 16:44. Просмотров 580. Ответов 15
Метки нет (Все метки)

вообщем саму прогу я сделал, но не до конца, си++ не нравится функция, пишет какую то ошибку, не могу понять в чем проблема..

код:
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
#include <iostream.h>
#include <string.h>
struct kadry {
  char rod[10];
  char mesto[20];
  union {
    char str[20];
    int k;
  };
} worker;
void fun(kadry *worker) {
  if (worker.rod="авиация") {
    cout<<"BBeguTe cTPoKy: "; cin>>worker.str;
  };
  if (worker.rod="ракетные") {
    cout<<"BBeguTe KoJI-Bo PaKeTHbIx ycTaHoBoK: "; cin>>worker.k;
  };
}
void main(void) {
  cout<<"BBeguTe Pog BoucK: "; cin>>worker.rod;
  cout<<"BBeguTe MecTo gucJIoKau,uu: "; cin>>worker.mesto;
    fun(&worker);
  cout<<endl;
  cout<<"CTPyKTyPa"<<endl;
  cout<<"Pog BoucK: "<<worker.rod<<endl;
  cout<<"MecTo gucJIoKau,uu: "<<worker.mesto<<endl;
  cout<<endl;
  cout<<("BBeguTe HoJIb gJI9I BbIxoga: "); int a; cin>>a;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2010, 16:44     Не получается лабораторная..
Посмотрите здесь:

Не получается лабораторная работа.. - C++
народ, кто поможет сделать задачу, чет я не догоняю как её делать :( задание здесь: заранее благодарен :)

лабораторная - C++
прошу написать программу чтоб выглядела наиболее простой ))) буду благодарен) 5. Заданы массивы A(3) и B(4). Построить таблицу значений...

c++ лабораторная - C++
1 Найти самое близкое целое число до настоясчго , которое вводится пользователем с клавиатуры. 2 Пользователь вводит любые целые числа с...

лабораторная по С++ - C++
Задача 1. Пользователь вводит 4-х разрядное число. Вывести всевозможные 4-х разрядные комбинации из цифр этого числа. Цифры могут...

лабораторная Строки - C++
1. Запишите ФИО . Запишите данную строку в обратном порядке. 2. Запишите ФИО . Удалите все пробелы в данной строке. 3. В тексте...

лабораторная работа - C++
Дана матрица B(2,2). Вывести на печать транспонированную матрицу. нужна помощь проффесионалов в этом деле..

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
time2die
51 / 51 / 3
Регистрация: 25.05.2010
Сообщений: 182
28.05.2010, 16:51     Не получается лабораторная.. #2
а сразу сюда было не скинуть ?
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2010, 16:56     Не получается лабораторная.. #3
Держи.
Вложения
Тип файла: rar lab.rar (306.9 Кб, 10 просмотров)
BAD-DOG
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 74
28.05.2010, 17:16  [ТС]     Не получается лабораторная.. #4
Цитата Сообщение от kazak Посмотреть сообщение
Держи.
слу а че то она не робит(. ошибок нет, но при вводе род войск, 3ю переменную не ввести все равно, и не выводит ее..(
зы. а че кста значит return 0; ? типа задержка?) ток она тож не робит)
BAD-DOG
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 74
28.05.2010, 17:20  [ТС]     Не получается лабораторная.. #5
вот на всякий пожарный еще раз задание выложу - zadanie.rar
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2010, 17:29     Не получается лабораторная.. #6
Цитата Сообщение от BAD-DOG Посмотреть сообщение
слу а че то она не робит(. ошибок нет, но при вводе род войск, 3ю переменную не ввести все равно
Это трудности работы с русским языком в консоли, как вариант добавь в начале main строку system("chcp 1251"); и в свойствах окна консоли выбери шрифт Luicida Console. Вообще про это можно прочитать сдесь Русские шрифты в консоли

Цитата Сообщение от BAD-DOG Посмотреть сообщение
и не выводит ее..(
И не будет, т.к. ее вывода ты не предусмотрел.

Цитата Сообщение от BAD-DOG Посмотреть сообщение
а че кста значит return 0;
Значение возвращаемое функцией main при своем завершении.
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
28.05.2010, 17:32     Не получается лабораторная.. #7
return 0 - возвращение из функции значения 0. А функция Ваша не работает, потому что идентификатор worker уже используется в качестве имени экземпляра структуры kadry, а поэтому не может использоватся как имя параметра функции.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2010, 17:34     Не получается лабораторная.. #8
Цитата Сообщение от vladislavchick Посмотреть сообщение
потому что идентификатор worker уже используется в качестве имени экземпляра структуры kadry, а поэтому не может использоватся как имя параметра функции.
Может ))) у них области видимости разные)
Grozaaa90
1 / 1 / 0
Регистрация: 27.05.2010
Сообщений: 15
28.05.2010, 17:37     Не получается лабораторная.. #9
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.h>
#include <string.h>
 
 
struct kadry 
{
    char rod[10];
    char mesto[20];
    union 
    {
        char str[20];
        int k;
    };
}; //worker;
 
void fun(kadry *worker) 
{
    cout<< "(I)YHKU,U9I Bbl3BAHA";
    if (worker->rod == "авиация") 
    {
        cout << "BBeguTe cTPoKy: "; cin >> worker->str;
    }
    if (worker->rod == "ракетные") // при проверке используем логическое равно( ==)
    {   // иначе значение будет просто присваиваться.
        cout << "BBeguTe KoJI-Bo PaKeTHbIx ycTaHoBoK: "; cin >> worker->k;
    } //точка запятой после цикла не нужна
}
 
int main(void) 
{
    void fun(kadry *);
    kadry *worker; // если хотите посылать структуру, то надо объявить её как указатель
    worker = new kadry;// и выделить память
    // и обращаться к её членам через стрелочку, как к членам указателя.
    // вы объявили переменную worker глобально, поэтому могли обращаться к ней
    // из любого места программы.
    
    cout << "BBeguTe Pog BoucK: "; cin >> worker->rod;
    cout << "BBeguTe MecTo gucJIoKau,uu: "; cin >> worker->mesto;
    fun (worker);
    cout << endl;
    cout << "CTPyKTyPa" << endl;
    cout << "Pog BoucK: " << worker->rod << endl;
    cout << "MecTo gucJIoKau,uu: " << worker->mesto << endl;
    cout << endl;
    cout << ("BBeguTe anykey gJI9I BbIxoga: ");// int a; cin>>a;
    cin.get();
    getchar();
    
    return 0;
}
Вот, подправил, функция вызывается, но не работает.
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
28.05.2010, 17:39     Не получается лабораторная.. #10
А в последней строчке круглые скобки не нужны.

Добавлено через 1 минуту
kazak, нет, НЕ разные. worker в первый раз определен как экземпляр структуры kadry. НЕ в теле функции.
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2010, 17:40     Не получается лабораторная.. #11
Grozaaa90,
Цитата Сообщение от Grozaaa90 Посмотреть сообщение
worker->rod == "ракетные"
Так char'овские строки не сравнивают, для этого есть функция strcmp.
vladislavchick
35 / 35 / 1
Регистрация: 22.05.2010
Сообщений: 107
28.05.2010, 17:40     Не получается лабораторная.. #12
А при определении и вызове функции кроме глобального worker появляется ещё один.
Grozaaa90
1 / 1 / 0
Регистрация: 27.05.2010
Сообщений: 15
28.05.2010, 17:56     Не получается лабораторная.. #13
Цитата Сообщение от vladislavchick Посмотреть сообщение
worker в первый раз определен как экземпляр структуры kadry. НЕ в теле функции.
+1. worker объявлен глобально.

Добавлено через 5 минут
Цитата Сообщение от kazak Посмотреть сообщение
для этого есть функция strcmp
Да, я уже посмотрел у вас. Всё равно не происходит проверка почему-то.
BAD-DOG
0 / 0 / 0
Регистрация: 06.05.2010
Сообщений: 74
28.05.2010, 17:57  [ТС]     Не получается лабораторная.. #14
чет я ваще запутался) может кто нить напишет конечный рабочий вариант лабы? я патом подразберусь хоть..) само задание на 1стр темы..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2010, 17:58     Не получается лабораторная..
Еще ссылки по теме:

Лабораторная по массивам - C++
Дан одномерный массив А, состоящий из N элементов. Переписать в одномерный массив В все элементы, заключенные между максимальным и...

Лабораторная по программированию С++ - C++
Использование библиотеки ввода-вывода языка С++ 1. Считайте файл чисел с плавающей точкой, составьте из пар считанных чисел...

лабораторная по информатике - C++
подскажите как делать, через циклы, плиз!)

лабораторная по информатике - C++
помогите с задачками, пожалуйста! 1. Поменять местами максимальный и последний отрицательный элементы массива А (40). ...


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

Или воспользуйтесь поиском по форуму:
kazak
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
28.05.2010, 17:58     Не получается лабораторная.. #15
Цитата Сообщение от vladislavchick Посмотреть сообщение
глобального worker
А вот глобальность я не учел.
Yandex
Объявления
28.05.2010, 17:58     Не получается лабораторная..
Ответ Создать тему
Опции темы

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