Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
OKS_by_V
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
1

Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы

26.02.2012, 18:07. Просмотров 745. Ответов 3
Метки нет (Все метки)

Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы.Та вывести на печать те записи вес которых больше 5 кг.
Cреда:DEV-C++

Программу написал только есть малость глюки.



fn UpdFile(void): НЕ обновляет значение в файле по номеру(n);
fn DelZap(void): пишет что файл str dell .. но файл остается;

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
#include <stdio.h>
struct prod
{   int n;
    char nazvaProd[12];
    int kg;
    int cina;
}; struct prod st;
 
int menu(void); 
void NewAddFile(void);
void UpdFile(void);
void DelZap(void);
void PrintMassCat(void);
 
 main()
{   int a;
    {
        while((a=menu())!=5)
        { switch(a)
        {
            case 1:   
                 NewAddFile();
                 break;
                 case 2:   
                 UpdFile();
                 break;
                 case 3:   
                  DelZap();
                 break;
                 case 4:   
                  PrintMassCat();
                 break;
                                
                 }}   
              }
return 0;}
int menu(void)
{int nmenu;
    printf("1-NewAddFile\n");
    printf("2-UpdFile\n");
    printf("3-DelZap\n");
    printf("4-PrintMassCat\n");
    printf("5-The END\n");
    scanf("%d",&nmenu);
    return nmenu;
    }
void NewAddFile(){
        FILE*p;
if ((p=fopen("product.dat","a+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  
printf("vvedit nomer zapusy vid 1 ,0 dlya vuhody\n");
scanf("%d",&st.n);
 while(st.n!=0)
 {  printf("nazva price vaga\n");
   scanf("%s%d%d",&st.nazvaProd,&st.cina,&st.kg);
    fseek(p,(st.n-1)*sizeof(struct prod),SEEK_SET);
 fwrite(&st,sizeof(struct prod),1,p);        
 printf("vvedit nomer zapusy  ,0 dlya vuhody\n");
   scanf("%d",&st.n);   
               }
                fclose(p);            
             }
void UpdFile(){
           int a,vaga;
                    FILE*p;
if ((p=fopen("product.dat","r+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  
 printf("vvedit nomer zapusy dlua UPD\n");
 scanf("%d",&a);
 fseek(p,(a-1)*sizeof(struct prod),SEEK_SET);
 fread(&st,sizeof(struct prod),1,p);
 if(st.n!=0)
 printf("net dannuh.\n");
  else
  {
    printf("%10s%10s%10d%10d\n",st.n,st.nazvaProd,st.cina,st.kg);  
    printf("new zn vaga\n");
    scanf("%d",&vaga);
    st.kg=vaga;
    fseek(p,(a-1)*sizeof(struct prod),SEEK_SET);
    fwrite(&st,sizeof(struct prod),1,p);
      }    
      fclose(p);      
           }
void DelZap(){
        FILE*p;
if ((p=fopen("product.dat","a+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  struct prod bst={0,"",0,0};
 int n;            
   printf("vvedit zapusy dlua DELL\n");
   scanf("%d",&n);
    fseek(p,(n-1)*sizeof(struct prod),SEEK_SET);
 fread(&st,sizeof(struct prod),1,p);
  if(st.n==0)
 printf("net dannuh.\n");
  else
  {  fseek(p,(n-1)*sizeof(struct prod),SEEK_SET);
    fwrite(&bst,sizeof(struct prod),1,p);
    printf("str dell\n");
      }    
      fclose(p);
                    }
                    
void PrintMassCat()
{
               
            FILE*p;
if ((p=fopen("product.dat","a+"))==NULL){
 printf("He ГіГ¤Г*ГҐГІГ±Гї îòêðûòü ГґГ*éë.\n");
  exit(1);
}  
printf("%10s%10s%10s%10s\n","nomer","nazva","price","vaga");    
 while(!feof(p))
 { fread(&st,sizeof(struct prod),1,p);
 if(st.n!=0)
   printf("%10d%10s%10d%10d\n",st.n,st.nazvaProd,st.cina,st.kg);
                  
                }
                fclose(p);               
               }
0
Миниатюры
Создать файл произвольного доступа с полями название продукции, вес единицы, цена единицы  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 18:07
Ответы с готовыми решениями:

Цена единицы продукции
Помогите, пожалуйста, рассчитать цену единицы продукции.Хотя бы что из это должно входить.. 1...

Процент изменения себестоимости единицы продукции
Помогите с решение задачи или хотя бы подскажите Предыдущий год Произведено продукции, тыс. шт....

Скопировать в новый текстовый файл все символы исходного, заменив все нули на единицы, а единицы на нули
Дан текстовый файл f. Переписать в файл g все компоненты файла f с заменой символа 0 на символ 1 и...

Цена единицы старшего разряда?
Доброго времени суток! Есть потенциометрический датчик. В спецификации описан протокол: 15 бит -...

Замена нулей на единицы и единицы на нули в матрицах с использованием функций
Всем доброго времени суток! Пишу программу в которой должна производиться замена нулей, в третьем...

3
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
26.02.2012, 18:39 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

в ф-ии UpdFile:
C
1
2
    if(st.n!=0)
        printf("net dannuh.\n");
нет данных наверно, когда все-таки st.n==0 ?
в ф-ии DelZap
C
1
2
3
4
p=fopen("product.dat","a+")
...
        fseek(p,(n-1)*sizeof(struct prod),SEEK_SET);
        fwrite(&bst,sizeof(struct prod),1,p);
вы на самом деле дописываете в конец(a+), а не заменяете(r+).

Не по теме:

вы специально сделали такое форматирование кода, "чтоб никто не догадался"?

1
OKS_by_V
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
26.02.2012, 22:42  [ТС] 3
Спасибо вот ище й проблеми с фун NewAddFile(void) последнее значенее передвводом нуля пишет 2 рази в файлик..или ето проблеми с PrintMassCat(void); ..незнаю ...впринципе DelZap() .....уже более мение работает... UpdFile --не работает даже после:
C
1
2
    if(st.n==0)
        printf("net dannuh.\n");
Добавлено через 3 часа 1 минуту
помогите срочно нужно подправить ету програму..))
0
remarkes
303 / 226 / 15
Регистрация: 01.07.2011
Сообщений: 809
Записей в блоге: 1
29.02.2012, 22:10 4
еще актуально?

Добавлено через 3 минуты
есть такая кнопка - пробел называется, еще есть кнопка Tab называется. Еще есть кнопка - Enter называется. Пользуйся ими, когда пишешь код. Не превращай его в кашу!

Добавлено через 14 минут
прежде всего:

было
C
1
        printf("%10s%10s%10d%10d\n", st.n, st.nazvaProd, st.cina, st.kg);
надо
C
1
        printf("%10d%10s%10d%10d\n", st.n, st.nazvaProd, st.cina, st.kg);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.02.2012, 22:10

Какова вероятность того, что сумма двух чисел больше единицы, а произведение меньше единицы?
Из отрезка (-1;2) наудачу взяты два числа. Какая вероятность что их сумма больше единицы, а...

По введённому номеру единицы измерения массы и заданной массе вывести вес в килограммах
Написать программу, которая бы по введённому номеру единицы измерения массы (1-миллиграмм, 2-грамм,...

Требуется вывести квадратную матрицу, где первый квадрат-единицы, квадрат внутри него-нули, потом снова единицы и т.д.
Требуется вывести квадратную матрицу, где первый квадрат-единицы, квадрат внутри него-нули, потом...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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