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

Передача переменной из функции в функцию

17.05.2015, 15:43. Показов 618. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++ (Qt)
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
#include <fstream> // работа с файлами
#include <iomanip> // манипуляторы ввода/вывода
#include <string>
using namespace std;
 
 typedef struct lib {
      string       memberName[64];    //имя участника
      int          teamNum;       //номер команды
      int          earnedPoints;  //количество баллов
            
                    }l_lib;
int menu(l_lib *l, int lines_count);
int save(l_lib *l, int lines_count)
{
    char *fname = (char *)malloc(64); /* имя файла */
    FILE *f;
    printf("Введите имя файла: ");
    scanf("%s", fname);
    f = fopen(fname, "w+"); // в режиме чтения и записи
    /* проверка */
    if (f == NULL)
    {
        fprintf(stderr, "Не могу открыть файл %s\n", fname);
        return 0;
    }
    // запись в файл
    for (int i = 0; i < lines_count; i++)
    {
        fprintf(f, "%s %d %d\n", l[i].memberName, &l[i].teamNum, &l[i].earnedPoints);
    }
    fclose(f);
}
int load (l_lib *l, int lines_count ) {
    
    char *fname = ( char * )malloc (64); /* имя файла */
    FILE *file; 
    printf ("Введите имя файла: ");
    scanf ("%s" , fname);
    file = fopen (fname , "r"); //откроем в режиме чтения
    /* проверка */
    if (file == NULL)
    {
        fprintf (stderr , "Не могу открыть файл %s\n" , fname);
        return 0;
    }
    /* подсчет кол-ва строк */
    while (!feof (file) && !ferror (file))
    if (fgetc (file) == '\n')
        lines_count++;
    lines_count++;
    fseek (file , 0L , SEEK_SET); /* установим указатель в начало файла */
    while (getchar () != '\n') /* очистим буфер */
        continue;
    /* выделим память под массив структур */
    l = ( l_lib * )malloc (lines_count * sizeof(l_lib));
    /* проверка */
    fseek (file , 0L , SEEK_SET); /* установим указатель в начало файла */
    if (l == NULL)
        fprintf (stderr , "Выделить память не удалось!\n");
    /* запись данных в массив структур */
    for (int i = 0; i < lines_count; i++)
        fscanf (file , "%s %d %d" ,  &l[i].memberName, &l[i].teamNum, &l[i].earnedPoints );
    fclose (file); /* закрываем файл */
    menu (l , lines_count);
    
}
void show (l_lib *l, int lines_count)
{
    int configs[6] = { 0, 0 };
    int ch = '#'; /* комментарий в конфиге */
    int i = 0, n = 0;
    char buf[50]; //буфер
    char *str;//считываемая строка
    FILE *file;
    file = fopen("config.txt", "r"); // открываем в режиме чтения
    if (file == NULL) // проверка
    {
        fprintf(stderr, "Не могу открыть файл конфигурации!\n");
        return;
    }
    while (n < 4) // пока не дошли до 5 строки
    {
        str = fgets(buf, sizeof(buf), file); // получаем строку
        //Проверка на конец файла или ошибку чтения
        if (str == NULL)
            break;
        if (strchr(str, ch) == NULL) /* если не комментарий */
        {
            configs[i] = atoi(str);
            i++;
            n++;
        }
        else
        {
            n++;
            continue;
        }
    }
    /* выводим массив структур на экран */
    for (int i = 0; i < lines_count; i++)
 
             cout << l[i].memberName << setw(configs[0]) 
            << " "<< l[i].teamNum << setw(configs[1]) 
            << " "<< l[i].earnedPoints << setw(configs[2])
            <<    endl;
    
}
int menu(l_lib *l, int lines_count) {
    int action; 
    do {
        cout << "Выберите действие:\n"
            << "1. Чтение данных из файла\n"
            << "2. Запись данных в файл\n" 
            << "3. Вывод данных на экран\n" 
            << "4. Сортировка данных\n" 
            << "5. Выход\n";
         printf ("Примечание: команды следует выполнять последовательно одну за другой!\n");
         printf ("Введите номер команды: ");
            cin >> action;
    } while( action > 5 || action < 0 );
    return action;
    
}
 
int main (){
    l_lib *l=0;
    int lines_count=0;
    string fname;
     int action=0;
     setlocale(LC_ALL, "rus");
     
     while(action != 6)
     {
         action = menu(l, lines_count);
        
         if(action==1)
         {
             load(l, lines_count);
         }
         if(action==2)
         {
             save(l, lines_count );
         }
         if(action==3)
         {
            show(l, lines_count);
         }
         if(action==4)
         {
            
         }
         if(action==5)
         {
            
         }
     }
}

Программа, должна считывать из файла текст и сортировать по определенным условиям (Сортировки тут еще нет).... Но загвоздка в том, что после считывания из документа текст, переходим к следующей функции , например к выводу на экран.... То он ничего не выводит.... почему??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 15:43
Ответы с готовыми решениями:

Передача переменной в функцию
Здравствуйте. Подскажите пожалуйста как сделать следующее: есть класс: #pragma once #include...

Передача переменной в лямбда-функцию по значению
Ребят! А объясните, что тут происходит, позязя :). function&lt;int()&gt; f() { int x = 0;...

Передача значения переменной-члена из класса в функцию
Добрый день, имеется класс: class ZernPole{ public:...

Передача переменной из одной функции в другую
Доброго времени суток, мне нужно передать переменные *x и n из функции main в функции А10, A8, M5,...

4
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.05.2015, 17:12 2
передавайте lines_count по ссылке
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 26
17.05.2015, 18:14  [ТС] 3
retmas, а можно конкретнее????
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.05.2015, 18:17 4
C++
1
2
3
int load (l_lib* l, int& lines_count )
{
// ...
0
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 26
17.05.2015, 18:25  [ТС] 5
retmas, неа(( Не работает((
после считывания, lines_count имеет значение 2, а потом обнуляется
0
17.05.2015, 18:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2015, 18:25
Помогаю со студенческими работами здесь

Передача типа переменной через аргумент функции
Стоит задача: реализовать свой вариант динамических массивов без использования STL(т.е. без new,...

Передача функции в функцию?
Здравствуйте. Есть функция: void f (char*) В нее мне нужно записать некоторую строку и...

Передача функции в функцию?
Есть задача. Вычисление определенного интеграла тремя способами для трех функций естественно что...

Передача массива из функции в функцию
Привет народ) Объясните плиз,как возвращать массив из функции. Ниже функция из которой надо...


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

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