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

Среднее арифметическое и геометрическое чисел рядков - C++

Восстановить пароль Регистрация
 
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
20.02.2013, 22:12     Среднее арифметическое и геометрическое чисел рядков #1
Помогите не много с программой - нам нужно создать файл, который состоит из символов и цифр. Задача - в каждом рядке определить среднее арифметическое и геометрическое. Переписать в новый текстовый файл числа с предыдущего и ихнее среднее значения(арифметическое и геомтерическое(корень степени n из произведения n членов))

Добавлено через 53 минуты
попробовал написать для среднего арифметического, но считает не правильно. помогите, где ошибка и как найти среднее арифметическое чисел всех строк, а не только одной, геометрическое я по аналогии найду. Найдите ошибку в коде.

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
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <cstdlib>
using namespace std;
 
 
void input()
{
    puts("create text file");
    FILE *f;
    char str[256];
    int n;
    int arf;
    int ndig=0;
    cout<<"Input number of strings"<<endl;
    cin>>n;
    n=n+1;
    f=fopen("D:\\str.txt","w");
    if(f==NULL)
        puts("File not found");
    else
    {
        for (int i=1;i<=n;i++)
        {
            puts("enter string");
            gets(str);
            fputs(str,f);
            fputc('\n',f);
        }
    }
    for(int j=0;str[j]!='\0';j++)
    {
        if(isdigit(str[j]))
        {
            ndig++;
            arf=(str[j]/ndig);
        }
    }
    if (ndig==0)
        cout<<"numbers not found"<<endl;
    else
    {
 
        cout<<"Avarage arf = "<<arf<<endl;
    }
}
 
int main()
{
    input();    
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2013, 22:12     Среднее арифметическое и геометрическое чисел рядков
Посмотрите здесь:

C++ Найти среднее арифметическое и среднее геометрическое чисел
C++ Найти среднее арифметическое и среднее геометрическое чисел
C++ Найти среднее арифметическое и геометрическое двух чисел
Разработать функцию, которая считает среднее арифметическое и геометрическое массива чисел C++
C++ Даны два целых числа; найти их среднее арифметическое, их среднее геометрическое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
21.02.2013, 00:29     Среднее арифметическое и геометрическое чисел рядков #2
Вы простите, но тут смесь бульдога и носорога, вы пишите или на С или на С++, зачем так жестко мешать все?

Добавлено через 7 минут
По нормальному Вам просто нужно читать строку целиком, а потом разбирать, числа писать в новый файл, потом считать средние значения и все это в цикле, пока не встретиться конец файла. Причем вы разбираете сейчас строку по 1 символу, а число может состоять из нескольких цифр, следовательно, нужно разбивать строку на составляющие, strtok в случае С, а уже потом анализировать каждый токен. Ну и в конце закрыть файлы.
ulian
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 53
21.02.2013, 01:32  [ТС]     Среднее арифметическое и геометрическое чисел рядков #3
попробовал как вы сказали, у меня переменная numbers хранит значение чисел рядка, как теперь задать количество числе в рядке что бы узнать среднее арифметическое и геометрическое? и записать эти значения в новый файл

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
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <cstdlib>
using namespace std;
 
int * searchNumbers(char str[]){
    int * result;
    char * temp;
    result = new int [100];
    temp = strtok(str," .,?");
    for(int i=0;temp!=NULL;i++){
        result[i]=atoi(temp);
        temp=strtok(NULL," .,?");
    }
    return result;
}
 
void input()
{
    puts("create text file");
    FILE *f;
    char str[256];
    int n,
        * numbers;
    int arf;
    int ndig=0;
    cout<<"Input number of strings"<<endl;
    cin>>n;
    f=fopen("str.txt","w");
    if(f==NULL)
        puts("File not found");
    else
    {
        for (int i=0;i<n;i++)
        {
            puts("enter string");
            gets(str);
            numbers = searchNumbers(str);
            fputs(str,f);
            fputc('\n',f);
        }
    }
}
 
int main()
{
    input();    
    system("pause");
}
Програмер_80лвл
15 / 15 / 1
Регистрация: 17.10.2012
Сообщений: 96
Записей в блоге: 1
21.02.2013, 02:51     Среднее арифметическое и геометрическое чисел рядков #4
Цитата Сообщение от ulian Посмотреть сообщение
как найти среднее арифметическое чисел всех строк
Ответ используй фунцию strcmp(...);(по гугли если не впадло а то мне впадо тут розпинатся)
как по гуглиш поймёш очём я!

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
int * searchNumbers(char str[]){
    int * result;
    char * temp;
    result = new int [100];
    temp = strtok(str," .,?");
    for(int i=0;temp!=NULL;i++){
        result[i]=atoi(temp);
        temp=strtok(NULL," .,?");
    }
    return result;
}

эт чё за фунция те нефиг делать чар указатель преобразовувать в инт ?*
мда...
strcmp(...);
удачи в поисках!

Добавлено через 8 минут
спросиш "а как-же потом в файл?*"
да всё просто
берёш язык С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
...
    ofstream File("Temp.txt");  //создали файл для записи
    if(!File)//проверка
        cout<<"error File"<<endl;
    File<<1000;  //запись в файл
    File.close();
 
    ifstream F("Temp.txt");     //создать файл для чтение
    int n=0;
    F>>n;                   //типа он присваивает записаные даные переменой n
    cout<<n<<" ";//вывожу
    F.close();//закрываю файл
gray_fox
21.02.2013, 02:57
  #5

Не по теме:

Цитата Сообщение от Програмер_80лвл Посмотреть сообщение
F.close();//закрываю файл
:/ Деструктор же есть...

vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
21.02.2013, 10:23     Среднее арифметическое и геометрическое чисел рядков #6
Что у вас цифры от 0 до 9 или произвольные числа и произвольные слова?
Если слова и числа, то

Не по теме:

Вы или на Си или на Ц++, но не кашей, зачем мешать все, что можно.


Вы почти доделали функцию выделения числа, смотрите, поделив на токены, вы должны узнать его тип (isdigit в помощь), по примеру
C++
1
2
3
4
5
6
7
8
9
10
11
string s;
 
bool has_only_digits = true;
for (size_t n = 0; n < s.length(); n++)
  {
  if (!isdigit( s[ n ] ))
    {
    has_only_digits = false;
    break;
    }
  }
Yandex
Объявления
21.02.2013, 10:23     Среднее арифметическое и геометрическое чисел рядков
Ответ Создать тему
Опции темы

Текущее время: 09:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru