Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
#1

Найти max, min и сумму компонент типизированного файла - C++

16.02.2011, 19:17. Просмотров 1028. Ответов 14
Метки нет (Все метки)

Компоненты типизированного файла – вещественные числа. Создать новый файл, в который записать общее количество компонент исходного файла, их максимальное и минимальное значение.

Вот прочитаю я эти элементы из файла, только не знаю до чего цикл запускать до скольки? как вообще определить количество этих элементов в файле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2011, 19:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти max, min и сумму компонент типизированного файла (C++):

Найти max и min, если min левее max, то среднее арифметическое между ними - C++
#include <iostream.h> #include <stdio.h> #include <conio.h> #include <math.h> void main() { int n,a; int...

Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c) - C++
Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c). Как эту программу реализовать в код?

Найти сумму max элементов столбцов, и номер строки, в которой находится элемент матрицы с min значением - C++
Дана вещественная матрица A(n,m). Найти сумму максимальных элементов столбцов и номер строки, в которой находится элемент матрицы с...

Найти сумму элементов той строки матрицы, в которой разница между max и min элементами максимальна - C++
Дана вещественная, квадратная матрица порядка N. Найти сумму элементов той строки в которой разница между максимальным и минимальным...

Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив - C++
Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив

Найти min(max(x, y), max(x, z), max(z, d) - C++
Даны различные действительные числа x, y, z, d. Найти min(max(x, y), max(x, z), max(z, d)).

14
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.02.2011, 19:21 #2
Если на С++, то
C++
1
2
3
4
5
6
7
8
std::vector<double> vec;
std::ifstream fin("INPUT.TXT");
while(!fin.eof()){
  double tmp;
  fin >> tmp;
  vec.push_back(tmp);
}
//vec.size() - количество числе в файле
1
}{()$T
25 / 9 / 2
Регистрация: 22.01.2011
Сообщений: 27
16.02.2011, 19:23 #3
C
1
2
3
4
5
6
7
 FILE *f;
 char arr[255];
 f=fopen("Baza.txt", "r"); 
 for(i=0; feof(f)==0; i++)             //считываем пока не конец файла
    {
         fscanf(f,"%d", &arr[i]);          //запихиваем в массив
    }
На Си
1
Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
16.02.2011, 19:26  [ТС] #4
Цитата Сообщение от }{()$T Посмотреть сообщение
C
1
2
3
4
5
6
7
 FILE *f;
 char arr[255];
 f=fopen("Baza.txt", "r"); 
 for(i=0; feof(f)==0; i++)             //считываем пока не конец файла
    {
         fscanf(f,"%d", &arr[i]);          //запихиваем в массив
    }
На Си
Спасибо вам люди
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.02.2011, 19:28 #5
Цитата Сообщение от }{()$T Посмотреть сообщение
C
1
char arr[255];
А если в файле чисел больше чем 255 ?
1
Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
16.02.2011, 20:09  [ТС] #6
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
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE *f;
    int arr[255],i,max,min,s;
    max=0;
    f=fopen("Baza.txt", "r"); 
    for(i=0; feof(f)==0; i++)           
    {
        fscanf(f,"%d", &arr[i]);          
        printf ("%d",arr[i]);
    }
    min=arr[1];
    for (i=0;i<8;i++)
    {
        if (arr[i]>max)
        max=arr[i];
    }
    printf ("\n%d",max);
    for (i=0;i<8;i++)
    {
        if (arr[i]<min)
        min=arr[i];
    }
    printf ("\n%d",min);
    fclose(f);
    system ("pause");
    return 0;
}

Вот примерный код находит максимальное и минимально...а как найти количество этих элементов массиве, чтобы в циклах была переменная а не предустмотренное число)?

Добавлено через 15 минут
int n = sizeof(arr) / sizeof(arr[0]);
этим я хотел найти количество элементов, а мы сразу задали что 255, а что если будет больше чем 255(как спрашивали раньше)
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.02.2011, 20:23 #7
Kapioner, Можно зделать так, первым проходом в цыкле по файлу определить, количество этих елементов, потом уже создать масив с определенным рание размером и вторым проходом считать елементы в масив.
1
}{()$T
25 / 9 / 2
Регистрация: 22.01.2011
Сообщений: 27
16.02.2011, 20:37 #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
main()
{
 int i=0;
 FILE *f;
 FILE *f2;
 int max=0, min=0;
 char arr[BUFSIZ]={0};
 f=fopen("Baza.txt", "r");
 f2=fopen("Rez.txt", "w+");
 for(i=0; feof(f)==0; i++)
        {
         fscanf(f,"%d", &arr[i]);
         if(arr[i]>max)
            max=arr[i];
         if(arr[i]<min)
            min=arr[i];
         }
         fprintf(f2,"Максимальный элемент %d\n Минимальный элемент %d\n Количество эл. масива %d ",max,min,i);
 
 system("PAUSE");
}
Вроде так)
1
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
16.02.2011, 20:40 #9
Или так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
 
int main(){
  FILE *fin;
  fin = fopen("INPUT.TXT", "r");
  int *arr = (int *)malloc( sizeof(int) );
  int j = 0, i = 0;
  while(!feof(fin)){
    arr = (int *)realloc(arr, sizeof(int) * ++j);
    fscanf(fin, "%d", &arr[i++]);
  }
  for(i = 0; i < j; ++i)
    printf("%d ", arr[i]);
  return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от }{()$T Посмотреть сообщение
char arr[BUFSIZ]={0};
А если чисел в файле больше чем BUFSIZ(512 если не ошибаюсь) ?
1
}{()$T
25 / 9 / 2
Регистрация: 22.01.2011
Сообщений: 27
16.02.2011, 20:43 #10
Цитата Сообщение от asics Посмотреть сообщение
А если чисел в файле больше чем BUFSIZ(512 если не ошибаюсь) ?
победил, не знаю
1
Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
16.02.2011, 23:45  [ТС] #11
Что делать? у меня на все эти программы выводит ошибку сегментации?(Мб у меня чтото с компилятором?
0
}{()$T
25 / 9 / 2
Регистрация: 22.01.2011
Сообщений: 27
16.02.2011, 23:52 #12
Код ошибки?
1
Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
16.02.2011, 23:57  [ТС] #13
Я Dev-C++ использую, программа не выполняется, просто чёрный экран выводит и просит отправить отчёт, когда делаю отладку он говорит что ваша программа вызвала нарушение доступа(ошибку сегментации) и выделяет строку в библиотеке stdio
{ return __F->_flag & _IOEOF; }
0
}{()$T
25 / 9 / 2
Регистрация: 22.01.2011
Сообщений: 27
17.02.2011, 00:03 #14
Странно, у меня Dev без проблем компилирует О_о

Добавлено через 1 минуту
Кстати, в директории с программой файлик Baza.txt с набором данных есть надеюсь?
1
Kapioner
1 / 1 / 0
Регистрация: 16.02.2011
Сообщений: 30
17.02.2011, 02:24  [ТС] #15
да есть))
#include <stdio.h>
main()
{
int i=0;
FILE *f;
FILE *f2;
int max=0, min=0;
char arr[BUFSIZ]={0};
f=fopen("Baza.txt", "r");
f2=fopen("Rez.txt", "w+");
for(i=0; feof(f)==0; i++)
{
fscanf(f,"%d", &arr[i]);
if(arr[i]>max)
max=arr[i];
if(arr[i]<min)
min=arr[i];
}
fprintf(f2,"Максимальный элемент %d\n Минимальный элемент %d\n Количество эл. масива %d ",max,min,i);
system("PAUSE");
}
Минимум будет правильно искать только при наличии отрицательных элементов в базе, иначе минимальным всегда будет ноль

Добавлено через 5 минут
Ура) добил)) спасибо всем за помощь без вас бы не справился)
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
#include <stdio.h>
main()
{
 int i=0;
 FILE *f;
 FILE *f2;
 int j,max=0, min;
 char arr[BUFSIZ]={0};
 f=fopen("Baza.txt", "r");
 f2=fopen("Rez.txt", "w+");
 for(i=0; feof(f)==0; i++)
        {
         fscanf(f,"%d", &arr[i]);
      
         }
        min=arr[1];
        for (j=0; j!=i;j++)
         {
             
                if(arr[j]>max)
            max=arr[j];
         if(arr[j]<min)
            min=arr[j];
             }
         fprintf(f2,"Максимальный элемент %d\n Минимальный элемент %d\n Количество эл. масива %d ",max,min,i);
 
}
0
17.02.2011, 02:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2011, 02:24
Привет! Вот еще темы с ответами:

Найти max {min (a, b), min (c, d)}. - C++
Найти max {min (a, b), min (c, d)}.

Найти сумму компонент файла - C++
Дан файл f , компоненты которого являются действительными числами. Найти: А) сумму компонент файла f ; Б) произведение компонент...

Как вывести текст из типизированного файла в компонент к примеру в memo или panel? - C++
Как вывести текст из типизированного файла в компонент к примеру в memo или panel?

Считывание из файла, MAX и MIN элементы - C++
Доброго времени суток, уважаемые формчане. С горем пополам сделан код. Из файла читает, выводит на экран, но не могу понять, почему не...


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

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

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