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

Стеки на Си

24.09.2013, 12:50. Показов 1129. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать файл записей с полями: фамилия, номер телефона. За один просмотр файланайти номера телефонов абонентов, имеющих длинные фамилии.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2013, 12:50
Ответы с готовыми решениями:

Стеки на Си
В строке записан без ошибок логическое выражение (ЛВ) в следующей...

Стеки на Си
В строке записан без ошибок логическое выражение (ЛВ) в следующей...

стеки
создать файл записей с полями: фамилия, возраст. за один просмотр файла вывести фамилии наиболее...

Стеки
Ребят вот само задание,Используя стек, переписать содержимое текстового файла, разделенного на...

2
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
24.09.2013, 17:46 2
Лучший ответ Сообщение было отмечено fallen94 как решение

Решение

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
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct info_t
{
    unsigned phone;
    char surname[32];
}   TInfo;
 
typedef struct node_t
{
    TInfo info;
    struct node_t* next;
}   TNode;
 
//-----------------------------------------------------------------------------
TNode* Push(TNode** stack, const TInfo* info)
{
    TNode* node = malloc(sizeof(TNode));
    node->info = *info;
    node->next = *stack;
 
    *stack = node;
 
    return *stack;
}
//-----------------------------------------------------------------------------
TInfo Pop(TNode** stack)
{
    TNode* node = *stack;
    TInfo info = node->info;
 
    *stack = node->next;
 
    free(node);
 
    return info;
}
//-----------------------------------------------------------------------------
void Clear(TNode** stack)
{
    while (*stack)
    {
        Pop(stack);
    }
}
//-----------------------------------------------------------------------------
void Print(const TNode* stack)
{
    for (; stack; stack = stack->next)
    {
        printf("%d\t%s\n", stack->info.phone, stack->info.surname);
    }
}
//-----------------------------------------------------------------------------
TNode* GetInfo(FILE* f)
{
    TNode* stack = NULL;
    TInfo info = {0, {0}};
    size_t length;
    size_t maxlen = 0;
 
    while (fscanf(f, "%u %31s", &info.phone, info.surname) == 2)
    {
        length = strlen(info.surname);
 
        if (maxlen < length)
        {
            Clear(&stack);
            maxlen = length;
        }
 
        if (maxlen == length)
        {
            Push(&stack, &info);
        }
    }
 
    return stack;
}
//-----------------------------------------------------------------------------
 
int main(int argc, const char* argv[])
{
    if (argc != 2)
    {
        fprintf(stderr, "Usage: program <FILE>\n");
        return EXIT_FAILURE;
    }
 
    FILE* f = fopen(argv[1], "r");
 
    if (f == NULL)
    {
        perror(argv[1]);
        return EXIT_FAILURE;
    }
 
    TNode* stack = GetInfo(f);
 
    fclose(f);
 
    Print(stack);
 
    Clear(&stack);
 
    return EXIT_SUCCESS;
}

Стеки на Си
1
0 / 0 / 1
Регистрация: 07.09.2013
Сообщений: 15
29.09.2013, 12:02  [ТС] 3
anmartex, можете пожалуйста написать коментарии к коду и да у меня что-то ошибку выдает при запуске пишет "Usage: program <FILE> я понял,что ,что-то не выполняется тут
C
1
2
3
4
5
if (argc != 2)
    {
        fprintf(stderr, "Usage: program <FILE>\n");
        return EXIT_FAILURE;
    }
только что??

Добавлено через 7 минут
anmartex, можете пожалуйста написать коментарии к коду и да у меня что-то ошибку выдает при запуске пишет aa.txt : No such file or directory вроде бы и создал файл с данными и все равно...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(void)
{
  
 
    FILE* f = fopen("aa.txt", "r");
 
    if (f == NULL)
    {
        perror("aa.txt");
        return EXIT_FAILURE;
    }
 
    TNode* stack = GetInfo(f);
 
    fclose(f);
 
    Print(stack);
 
    Clear(&stack);
 
    return EXIT_SUCCESS;
}
0
29.09.2013, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2013, 12:02
Помогаю со студенческими работами здесь

Стеки С++
Добрый вечер.Задание следующие нужно сделать добавление в стек после елемента L.Дано 2 стека X Y из...

стеки
Здравствуйте. Я создал шаблон класса стек. Как мне перегрузить операторы -- и += для извлечение и...

Стеки
Вот код как к первому стеку прикрипить 2 стек?????? #include &quot;stdafx.h&quot; #include &quot;iostream&quot;...

Стеки
Помогите разобраться со стеками.Вылетает 3 ошибки при компеляции. #include &lt;stdio.h&gt; #include...


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

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