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

Изменение кода в виде функции - C++

Восстановить пароль Регистрация
 
Telses_Roman
 Аватар для Telses_Roman
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 6
09.06.2012, 20:15     Изменение кода в виде функции #1
Приветствую народ! вопрос таков: написал работающую программу, необходимо взять кусок кода и оформить в виде функции, я ни как правильно не заставлю ее работать, подскажите пожалуйста!

код:
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
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <string>
 
using namespace std;
 
void vvod(char t[20], char m[10], float s)// должна быть функция ввода в массив Price Spisok[5];
    {
        for (int i=0;i<5;i++)   
            {
                cout<<"wwedite nazwanie towara:\n";
                cin>>t;
                cout<<"wwedite nazwanie magazina:\n";
                cin>>m;
                cout<<"wwedite stoimost` towara:\n";
                cin>>s;
            }
    }   
 
int main()
{
    struct Price //создание структуры
    {
        char towar[20];
        char magazine[10];
        float stoimostb;
    };
 
    Price Spisok[5];
    Price tmp;
    char wtowar[20];
 
    vvod(Spisok[i].towar,Spisok[i].magazine, Spisok[i].stoimostb);
    cout<<endl;
 
    for (int j=0;j<5;j++)//сортируем массив по товару
        for (int i=1;i<5;i++)
        {
            if (strcmp(Spisok[i].towar, Spisok[i-1].towar)<0)
            {
                tmp=Spisok[i-1];
                Spisok[i-1]=Spisok[i];
                Spisok[i]=tmp;
            }
        }
 
        for (int i=0;i<5;i++)//Выводим отсортированный массив
            cout<<"magazine \""<<Spisok[i].magazine<<"\" towar \""<<Spisok[i].towar<<"\" stoimost` "<<Spisok[i].stoimostb<<"\n";
        cout<<"\n";
        cout<<"wwedite nazwanie towara\n";//запрос на поиск товара
        cin>>wtowar;
        cout<<"\n"; 
 
        for (int i=0;i<5;i++)//Поиск товара
        {
            if (strcmp(Spisok[i].towar,wtowar)==0)
            {
                cout<<"Towar \""<<Spisok[i].towar<<"\" est' w magazine \""<<Spisok[i].magazine<<"\", zena: "<<Spisok[i].stoimostb<<"\n";//Выводим информацию по товару
                break;
 
            }
            else
            {
                if (i == 4)//Если товар не найден, выводим сообщение
                    cout<<"Takoy towar otsutstwuet w spiske\n";
            }
        }
        system("PAUSE");
        return 0;
}
при таком исполнении ввод в массив осуществляется только первые три значения, остальные пролетают и программа выдает пипец какие результаты.
для сравнения рабочий вариант:
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
59
60
61
62
63
64
65
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    struct Price //создание структуры
    {
        char towar[20];
        char magazine[10];
        float stoimostb;
    };
    
    Price Spisok[5];
    char wtowar[20];
    Price tmp;
 
    for (int i=0;i<5;i++)//Ввод данных в массив
    {
        cout<<"wwedite nazwanie towara:\n";
        cin>>Spisok[i].towar;
        cout<<"wwedite nazwanie magazina:\n";
        cin>>Spisok[i].magazine;
        cout<<"wwedite stoimost` towara:\n";
        cin>>Spisok[i].stoimostb; 
        cout<<"\n"; 
    }
    cout<<"\n\n";
 
    for (int j=0;j<5;j++)//сортируем массив по товару
        for (int i=1;i<5;i++)
        {
            if (strcmp(Spisok[i].towar, Spisok[i-1].towar)<0)
            {
                tmp=Spisok[i-1];
                Spisok[i-1]=Spisok[i];
                Spisok[i]=tmp;
            }
        }
 
        for (int i=0;i<5;i++)//Выводим отсортированный массив
            cout<<"magazine \""<<Spisok[i].magazine<<"\" towar \""<<Spisok[i].towar<<"\" stoimost` "<<Spisok[i].stoimostb<<"\n";
        cout<<"\n";
        cout<<"wwedite nazwanie towara\n";//запрос на поиск товара
        cin>>wtowar;
        cout<<"\n"; 
 
        for (int i=0;i<5;i++)//Поиск товара
        {
            if (strcmp(Spisok[i].towar,wtowar)==0)
            {
                cout<<"Towar \""<<Spisok[i].towar<<"\" est' w magazine \""<<Spisok[i].magazine<<"\", zena: "<<Spisok[i].stoimostb<<"\n";//Выводим информацию по товару
                break;
 
            }
            else
            {
                if (i == 4)//Если товар не найден, выводим сообщение
                    cout<<"Takoy towar otsutstwuet w spiske\n";
            }
        }
        system("PAUSE");
        return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.06.2012, 20:20     Изменение кода в виде функции #2
не то кинул ,вот:
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
59
60
61
62
63
64
65
66
#include <iostream>
#include <string>
 
using namespace std;
struct Price //создание структуры
{
    char towar[20];
    char magazine[10];
    float stoimostb;
};
void vvod(Price* obj)// должна быть функция ввода в массив Price Spisok[5];
    {
        for (int i=0;i<5;i++)   
            {
                cout<<"wwedite nazwanie towara:\n";
                cin>>obj[i].towar;
                cout<<"wwedite nazwanie magazina:\n";
                cin>>obj[i].magazine;
                cout<<"wwedite stoimost` towara:\n";
                cin>>obj[i].stoimostb;
            }
    }   
 
int main()
{
    Price* Spisok=new Price[5];
    Price tmp;
    char wtowar[20];
        vvod(Spisok);
        cout<<endl;
 
    for (int j=0;j<5;j++)//сортируем массив по товару
        for (int i=1;i<5;i++)
        {
            if (strcmp(Spisok[i].towar, Spisok[i-1].towar)<0)
            {
                tmp=Spisok[i-1];
                Spisok[i-1]=Spisok[i];
                Spisok[i]=tmp;
            }
        }
 
        for (int i=0;i<5;i++)//Выводим отсортированный массив
            cout<<"magazine \""<<Spisok[i].magazine<<"\" towar \""<<Spisok[i].towar<<"\" stoimost` "<<Spisok[i].stoimostb<<"\n";
        cout<<"\n";
        cout<<"wwedite nazwanie towara\n";//запрос на поиск товара
        cin>>wtowar;
        cout<<"\n"; 
 
        for (int i=0;i<5;i++)//Поиск товара
        {
            if (strcmp(Spisok[i].towar,wtowar)==0)
            {
                cout<<"Towar \""<<Spisok[i].towar<<"\" est' w magazine \""<<Spisok[i].magazine<<"\", zena: "<<Spisok[i].stoimostb<<"\n";//Выводим информацию по товару
                break;
 
            }
            else
            {
                if (i == 4)//Если товар не найден, выводим сообщение
                    cout<<"Takoy towar otsutstwuet w spiske\n";
            }
        }
        system("PAUSE");
        return 0;
}
rofl113
10 / 10 / 1
Регистрация: 26.02.2012
Сообщений: 36
09.06.2012, 20:23     Изменение кода в виде функции #3
Структуру можно тоже описывать за главной функцией.
Telses_Roman
 Аватар для Telses_Roman
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 6
09.06.2012, 20:25  [ТС]     Изменение кода в виде функции #4
Изменение кода в виде функции

произошло еще большее зацикливание
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.06.2012, 20:33     Изменение кода в виде функции #5
Возьми выше я исправил, я просто опечатался. Я там всё исправил
Telses_Roman
 Аватар для Telses_Roman
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 6
09.06.2012, 20:36  [ТС]     Изменение кода в виде функции #6
Изменение кода в виде функции

косяк на вызове етой функции на бряке показывает непонятные значения в массивы забивает буквой М и все а дальше он просто не правильно считает
Telses_Roman
 Аватар для Telses_Roman
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 6
09.06.2012, 20:38  [ТС]     Изменение кода в виде функции #7
она компилируется нормально, но функцию ввода выполняет не правильно и пролетает после ввода первых трех элементов
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
09.06.2012, 20:40     Изменение кода в виде функции #8
Цитата Сообщение от Telses_Roman Посмотреть сообщение
она компилируется нормально, но функцию ввода выполняет не правильно и пролетает после ввода первых трех элементов
Ничего не вылетает, ты вводишь символы в поле где должна вводится целочисленная переменная. Вводи внимательно. Программа рабочая.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 20:42     Изменение кода в виде функции
Еще ссылки по теме:

Представление кода в виде функции C++
Компилятор не реагирует на изменение кода C++
Изменение кода в течении программы C++

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

Или воспользуйтесь поиском по форуму:
Telses_Roman
 Аватар для Telses_Roman
0 / 0 / 0
Регистрация: 09.06.2012
Сообщений: 6
09.06.2012, 20:42  [ТС]     Изменение кода в виде функции #9
а! все хорошо, спасибо тебе, сеня весь день программил все мозги в кашу сгреб)) кейген асемблеровский проще написать)))
Yandex
Объявления
09.06.2012, 20:42     Изменение кода в виде функции
Ответ Создать тему
Опции темы

Текущее время: 06:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru