Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами! 
:(
    Опции темы
Baton2007
Дата 7.4.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Есть задача:  Создать фаил , содержащий массив целых чисел. Найти наименьшее значение из модулей отклонения чисел от их среднего арифметического.

Собственно мне не особо понятна что за модуль отклонения и как его вообще найти?

Подскажите алгоритм решения задачи.
PM MAIL   Вверх
archimed7592
Дата 7.4.2008, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Наверное, "модуль отколения от среднего арифмитического" - это что-то вроде следующего:
есть набор значений X1, X2, X3, ..., Xn
их среднее - это AVG(X) = (X1 + X2 + X3 + ... + Xn) / n
модуль отклонения значения Xi будет равен delta(Xi) = ABS(Xi - AVG(X)), т.е. абсолютное значение(значение по модулю) разницы между конкретным значением и среднего арифмитеческого всей последовательности.

Добавлено через 1 минуту и 47 секунд
Алгоритм:
1. Сгенерировать массив чисел.
2. Найти их среднее.
3. Пройтись по массиву, вычисляя модуль отклонения(delta) и определить наименьшее.
4. Вывести массив в файл.
5. Выдать(куда там надо, в файл или на экран) наименьший модуль отклонения.

Добавлено через 6 минут и 12 секунд

M
archimed7592
Название темы должно отражать ее суть!
Фразы "Работа с файлом" и "Собственно мне не особо понятна что за модуль отклонения и как его вообще найти?" не имеют друг к другу никакого отношения.




--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Baton2007
Дата 7.4.2008, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



А как коректно прочесть массив и файла ?? в фаил я записал массив типа-12345....n

Считываю но выводится куча цифр непонятно откуда взявшихся!


Код

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>



int main()
{
     int ch, i = 0, z, s, delta_x, min_val;
     int arr1[10], 
     FILE *fp;

     if ((fp=fopen("C:/test.txt", "r")) == NULL)
     {
          printf("Oshibka\n");
          getch();
          exit(1);
     }
     while(ch != EOF)
     {
          ch = getc(fp);
          arr1[i] = ch;
          i++;     
     }

    for(i = 0; i <= 10; i++)
    {
        printf("%d ", arr1[i]);
    }
    for(i=0 ; i<10; i++)

    {

    z+=arr1[i];

    s++;

    }

    z/=s;

    for(i=0 ; i<10; i++)

    {  delta_x=arr1[i]-z;

    if(delta_x<min_val)min_val=delta_x;

    }

    printf("\n");

    printf("Min modyl:%d",&min_val);

    getch();
    return 0;

}


Это сообщение отредактировал(а) Baton2007 - 7.4.2008, 14:19
PM MAIL   Вверх
archimed7592
Дата 7.4.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(Baton2007 @  7.4.2008,  14:03 Найти цитируемый пост)
А как коректно прочесть массив и файла ??

Цитата(Baton2007 @  7.4.2008,  13:11 Найти цитируемый пост)
Есть задача:  Создать фаил , содержащий массив целых чисел. 

Ты уж определись, тебе создать его нужно или прочитать из него массив.

Тремя строками ниже есть тема "задача на работу с файлами" - там есть ответ на твой вопрос почему "непонятно откуда взявшиеся" числа появляются и откуда они берутся.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Baton2007
Дата 7.4.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Я вот так написал выводит нормально только в конце -1 появляется и модуль равен 37879624 подскажите где ошибка.

Код

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fstream>



int main()
{
     int ch, i = 0, z, s, delta_x, min_val;
     int arr2[10]={1,2,3,4,5,6,7,8,9,10};
     int arr1[10];
     FILE *fp;
     ofstream outfile("C:\\test");

     for(i=0; i<10; i++)

     {
     outfile << arr2[i];

     }
     if ((fp=fopen("C:\\test", "r")) == NULL)
     {
          printf("Oshibka\n");
          getch();
          exit(1);
     }
     while(ch != EOF)
     {
          ch = getc(fp);
          arr1[i] = ch;
          i++;     
     }

    for(i = 0; i <= 10; i++)
    {
        printf("%d ", arr1[i]);
    }
    for(i=0 ; i<10; i++)

    {

    z+=arr1[i];

    s++;

    }

    z/=s;

    for(i=0 ; i<10; i++)

    {  delta_x=arr1[i]-z;

    if(delta_x<min_val)min_val=delta_x;

    }

    printf("\n");

    printf("Min modyl:%d",&min_val);

    getch();
    return 0;

}


Это сообщение отредактировал(а) Baton2007 - 7.4.2008, 14:47
PM MAIL   Вверх
ama_kid
Дата 7.4.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: нет
Всего: 95



Цитата(Baton2007 @  7.4.2008,  14:37 Найти цитируемый пост)
только в конце -1
Код
for(i = 0; i <= 10; i++)
    {
        printf("%d ", arr1[i]);
    }
Выводить надо не от 0 до 10, а от 0 до 9...

Цитата(Baton2007 @  7.4.2008,  14:37 Найти цитируемый пост)
модуль равен 37879624
Код
printf("Min modyl:%d",&min_val);
Для чего здесь знак &?



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Baton2007
Дата 7.4.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



И все равно с выводом проблема теперь все элементы выводятся как -1

я пробовал и так

Код
 fscanf (fp,"%d",arr1[i]);


и так

Код

while(!feof(fp))
     {
    fscanf (fp,"%d",arr1[i]);

    }


Вот весь код 

Код

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fstream>



int main()
{
     int ch, i = 0, z, s, delta_x, min_val;
     int arr2[10]={1,2,3,4,5,6,7,8,9,10};
     int arr1[10];
     FILE *fp;
     ofstream outfile("C:\\test");

     for(i=0; i<10; i++)

     {
     outfile << arr2[i];

     }
     fp=fopen("C:\\test", "r");

     for(i = 0; i < 10; i++)
     {
     ch = getc(fp);
     arr1[i] = ch;

    }
    for(i = 0; i <= 10; i++)
    {
        printf("%d ", arr1[i]);
    }
    for(i=0 ; i<10; i++)

    {

    z+=arr1[i];

    s++;

    }

    z/=s;

    for(i=0 ; i<10; i++)

    {  delta_x=arr1[i]-z;

    if(delta_x<min_val)min_val=delta_x;

    }

    printf("\n");

    printf("Min modyl:%d",min_val);

    getch();
    return 0;

}

PM MAIL   Вверх
archimed7592
Дата 7.4.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(Baton2007 @  7.4.2008,  14:37 Найти цитируемый пост)
    for(i = 0; i <= 10; i++)

У тебя так и осталось <=... Вот сам посуди - это
arr[0], arr[1], arr[2], ... , arr[10] - итого одинадцать элементов.

Цитата(Baton2007 @  7.4.2008,  14:37 Найти цитируемый пост)
     while(ch != EOF)
     {
          ch = getc(fp);
          arr1[i] = ch;
          i++;     
     }

Я же тебе давал ссылку туда, где есть пример. Прочитай там как нужно считатывать числа.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.