0 / 0 / 1
Регистрация: 28.11.2012
Сообщений: 8
1

Программа выдает непонятные значения в текстовый файл и в командной строке

19.04.2013, 20:23. Показов 643. Ответов 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
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#define MAX 100
 
int main(void)
{
    setlocale(LC_CTYPE, "rus");
    FILE *fd,*ft;
    char fname[50];
 
    printf("Ввести имя файла для создания: ");
    gets(fname);
 
    fd=fopen(fname,"wb");
    if (fd==NULL)
    {
        printf("Ошибка в имени файла - %s\n",fname);
        return 0;
    }
 
    int const max_size = 100;
    int mas[max_size];
    int size;
    int menu, menu2;
    printf("Меню 1\n1 - Для ручного ввода размера масссива\n2 - Для рандомного ввода размера массива\nПоле ввода: ");
    while(scanf("%i", &menu2) != 1 || menu2 >= 3 || menu2 <= 0)
    {
        printf("Ошибка! Введите корректные данные: ");
        fflush stdin;
    }
    switch(menu2)
    {
    case 1: printf("Введите размер массива: ");
        while(scanf("%i", &size) != 1 || size == 0 || size > 10)
        {
            printf("Ошибка! Введите корректные данные: ");
            fflush stdin;
        }   
        break;
    case 2: srand(time (NULL));
        int a, b;
        printf("Ввод начала диапазона: ");
        while(scanf("%i", &a) != 1 || a == 0)
        {
            printf("Ошибка! Введите корректные данные: ");
            fflush stdin;
        }
        printf("Ввод конца диапазона: ");
        while(scanf("%i", &b) != 1 || b == 0)
        {
            printf("Ошибка! Введите корректные данные: ");
            fflush stdin;
        }
        size = rand()%(b - a + 1) + a;
        break;
    }
    printf("Меню 2\n1 - Для ручного ввода массива\n2 - Для рандомного ввода массива\nПоле ввода: ");
    while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)
    {
        printf("Ошибка! Введите корректные данные: ");
        fflush stdin;
    }
    switch(menu)
    {
    case 1:
        printf("Введите элементы массива: ");
        for(int i = 0; i < size; i++)
        {
            scanf("%d", &mas[i]);
        }
        fwrite (mas, sizeof(double), size, fd);
        break;
    case 2:
        srand(time (NULL));
        int a, b;
        printf("Ввод начала диапазона: ");
        while(scanf("%i", &a) != 1 || a == 0)
        {
            printf("Ошибка! Введите корректные данные: ");
            fflush stdin;
        }
        printf("Ввод конца диапазона: ");
        while(scanf("%i", &b) != 1 || b == 0)
        {
            printf("Ошибка! Введите корректные данные: ");
            fflush stdin;
        }
        for (int i = 0; i < size; i++)
        {
            mas[i] = rand()%(b - a + 1) + a;
        }
        printf("Элементы массива:\n");
        for(int i = 0; i < size; i++)
        {
            printf("%d   ", mas[i]);
        }
        fwrite (mas, sizeof(double), size, fd);
        printf("\n");
        break;
    }
    fclose(fd);
 
    fd=fopen(fname,"rb");
    int numb, sum = 0, k = 0, i = 0, n, mas2[MAX], mas3[MAX];
    double sred;
    n = fread (mas2, sizeof(double), size, fd);
    fread (mas3, sizeof(double), size, fd);
    while(i < n)
    {
        if(mas2[i]>0)
        {
            sum = sum + mas2[i];
            k++;
        }
        i++;
    }
    sred = sum/k;
    i = 0;
    while(i < n)
    {
        if(mas2[i]<0)
            mas2[i] = sred;
        i++;
    }
 
    if (n > 10)
    {
        ft=fopen("answer.txt","wt");
        fprintf(ft,"Содержимое исходного файла:\n");
        fwrite (mas3, sizeof(double), size, ft);
        fprintf(ft,"\n");
        fprintf(ft,"Результат:\n");
        fwrite (mas2, sizeof(double), size, ft);
        fprintf(ft,"\n");
        fprintf(ft,"Количество элементов: %i", n);
        fclose(ft);
    }
    else
    {
        printf("Содержимое исходного файла:\n");
        for(int i = 0; i < n; i++)
        {
            printf("%d  ", mas3[i]);
        }
        printf("\n");
        printf("Результат вычеслений:\n");
        for(int i = 0; i < n; i++)
        {
            printf("%d  ", mas2[i]);
        }
        printf("\n");
        printf("Количество элементов: %i", n);
        printf("\n");
    }
    fclose(fd);
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.04.2013, 20:23
Ответы с готовыми решениями:

Программа текстовый редактор в командной строке
Здравствуйте! Нужна помощь в написании программы текстовый редактор в командной строке. Программа...

При попытке открыть файл в командной строке, выдаёт ошибку SyntaxError:invalid syntax.
Доброго времени суток. Сам в программирование только пришёл. При попытке открыть файл в командной...

Написать программу, которая по указанному в качестве параметра в командной строке файлу создаёт текстовый файл, содержащий листинг исходного файла
Очень нужно написать программу на c++, а я даже условие не до конца понимаю! Буду очень благодарен...

При вычислении выдает непонятные значения
При вычислении выдает непонятные значения.

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
33097 / 18443 / 3879
Регистрация: 12.02.2012
Сообщений: 31,003
Записей в блоге: 12
19.04.2013, 20:43 2
А у тебя не текстовый, а двоичный файл. В него все пишется верно (только массив mas неплохо бы почистить).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2013, 20:43
Помогаю со студенческими работами здесь

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и...

Выдает ошибку при компиляции в командной строке
всем здравствуйте! можете помочь пожалуйста? у меня ошибка какая-то в командной строке..все...

При компиляции в командной строке не выдает ошибки
Подскажите мне, я компилировал в FAR Manager, и у меня не появляется окно просто с компилировалось...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru