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

Нужно перевести из С++ в C строку с выделением памяти в куче - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ наименьшие средние арифметические элементов строк http://www.cyberforum.ru/cpp-beginners/thread744892.html
Дан двухмерный массив A. написать программу построения одномерного массива B, элементы которого соответственно равный наименьших средних арифметических элементов строк. такая вот беда. для зачета надо сдать лабы, осталось 1 задание в предпоследней лабе (это, из 5), препод не хочет объяснять, что это такое и с чем его есть. буду признателен за помощь в написании программы, либо объяснении данного...
C++ Чередование гласных и согласных Написать на языке с++ программу которая в введенной строке ищет чередующиеся гласные с согласными http://www.cyberforum.ru/cpp-beginners/thread744872.html
Сортировка двумерного массива C++
#include <iostream> // Библиотека для потокового ввода/вывода. #include <fstream> // Библиотека для работы с файлами. #include <windows.h> // Библиотека для работы с system(). using namespace std; // Пространство имент std. //=========================================================================================== int main() { ifstream in_array("array.txt"); ofstream...
C++ Вывести на экран количество и адреса нулевых элементов массива
2) Дан массив целых чисел размерностью N (1<N≤30). Вывести на экран количество и адреса нулевых элементов массива.
C++ Найти количество элементов этой последовательности, кратных числу http://www.cyberforum.ru/cpp-beginners/thread744864.html
2. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2.
C++ проверьте пожалуйста! не совсем уверен что правильно #include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> using namespace std; void main() { double i,l,k,x; подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12279 / 6966 / 784
Регистрация: 27.09.2012
Сообщений: 17,274
Записей в блоге: 2
Завершенные тесты: 1
25.12.2012, 00:26     Нужно перевести из С++ в C строку с выделением памяти в куче
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
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include <Windows.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
 
 
typedef struct node
{
    char surname[255];
    int year;
    int num;
}Node;
 
FILE *f;
 
int menu();
void addFile(Node&);
void viewFile();
void runFile(int);
int length();
void editFile(int);
void deleterecord(int);
 
int main()
{
    int repeat;
    setlocale(LC_ALL,"");
    do
    {
        system("cls");
        switch(menu())
        {
            case 1:
                f=fopen("1.txt","a");
                Node str;
                addFile(str);
                fclose(f);
                break;
            case 2:
                viewFile();
                break;
            case 3:
                int year;
                puts("Введите год установки для определения количества установленных телефонов");
                scanf("%d",&year);
                runFile(year);
                break;
            case 4:
                viewFile();
                int num;
                puts("Введите номер записи для редактирования");
                scanf("%d",&num);
                editFile(num);
                break;
            case 5:
                viewFile();
                puts("Введите номер записи для удаления");
                scanf("%d",&num);
                deleterecord(num);
                break;
            case 0:
                return 0;
        }
        puts("Продолжить?    (1/0)");
        scanf("%d",&repeat);
    }
    while(repeat);
    return 0;
}
 
void deleterecord(int num)
{
    int len;
    Node *ptr =  (Node*)malloc(sizeof(Node) * len);
    if(!(f=fopen("1.txt","r")))
        puts("Нельзя создать файл.");
    else
    {
 
        for(int i=0;!feof(f);i++)
        fscanf(f,"%s%d%d\n", &ptr[i].surname, &ptr[i].year, &ptr[i].num);
        fclose(f);
        f=fopen("1.txt","w");
        for(int i=0;i<len;i++)
        {
            if(i!=(num-1))
                fprintf(f,"%s %d %d\n",ptr[i].surname,ptr[i].year,ptr[i].num);
        }
        fclose(f);
    }
}
void editFile(int num)
{
    int len;
    Node *ptr =  (Node*)malloc(sizeof(Node) * len);
    if(!(f=fopen("1.txt","r")))
        puts("Файла не существует. Создайте файл");
    else
    {
 
        for(int i=0;!feof(f);i++)
            fscanf(f,"%s%d%d\n",&ptr[i].surname,&ptr[i].year,&ptr[i].num);
        fclose(f);
        puts("Введите фамилию");
        scanf("%s",&ptr[num-1].surname);
        puts("Введите год подключения");
        scanf("%d",&ptr[num-1].year);
        puts("Введите номер");
        scanf("%d",&ptr[num-1].num);
        f=fopen("1.txt","w");
        for(int i=0;i<len;i++)
        fprintf(f,"%s %d %d\n",ptr[i].surname,ptr[i].year,ptr[i].num);
        fclose(f);
    }
}
int length()
{
    int len=0;
    Node tmp;
    if(!(f=fopen("1.txt","r")))
        puts("Файла не существует. Создайте файл");
    else
    while(!feof(f))
    {
        if((fscanf(f,"%s%d%d\n",&tmp.surname,&tmp.year,&tmp.num)))
        len++;
    }
    fclose(f);
    return len;
}
void runFile(int year)
{
    int t=0;
        if(!(f=fopen("1.txt","r")))
            puts("Файла не существует. Создайте файл");
        else
        {
            Node tmp;
            while(!feof(f))
            {
                fscanf(f,"%s%d%d\n",tmp.surname,&tmp.year,&tmp.num);
                if(tmp.year>=year)
                t++;
            }
            printf("%d\n", t);
        }
        fclose(f);
}
 
void viewFile()
{
        if(!(f=fopen("1.txt","r")))
            puts("Файла не существует. Создайте файл");
        else
        {
            Node tmp;
            int i=1;
            while(!feof(f))
            {
                fscanf(f,"%s%d%d\n",tmp.surname,&tmp.year,&tmp.num);
                printf("%d)  %s %d %d\n",i,tmp.surname,tmp.year,tmp.num);
                i++;
            }
        }
        fclose(f);
}
void addFile(Node &ptr)
{
    puts("Введите фамилию");
    scanf("%s",&ptr.surname);
    puts("Введите год подключения");
    scanf("%d",&ptr.year);
    puts("Введите номер");
    scanf("%d",&ptr.num);
    fprintf(f,"%s %d %d\n",ptr.surname,ptr.year,ptr.num);
    
}
int menu()
{   
    int pick;
    puts("1) Добавление записи");
    puts("2) Вывод всех записей на экран из файла");
    puts("4) Определение количества установленных телефонов с вводимого года");
    puts("5) Редактирование выбраной записи");
    puts("6) Удаление выбраной записи");
    puts("0) Выход");
    scanf("%d",&pick);
    return pick;
}
 
Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru