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

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

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

Подсчитать суммы в массиве - C++

09.07.2012, 10:22. Просмотров 632. Ответов 17
Метки нет (Все метки)

Заданный в файле массив целых чсел делится на три части двумя элементами - макс. и мин. по величине. Определить суммы этих частей.
Программа ничего не выдает.
Помогите найти ошибку!
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
#include "StdAfx.h"
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    double max = 0, min = 0, t,s1,s2,s3,str,stl,i,j,k,Mas=0;
    ifstream fin("File");
    ofstream fout("File");
    while(!fin.eof());
    for (int i=0; i<Mas; i++)
{
        fin >> Mas;
        if (Mas>max)
        {
            max=Mas;
        }
        str=i;
}
    for (int j=0; j<Mas; j++)
{
        fin >> Mas;
        if (Mas<min)
        {
            min=Mas;
        }
        stl=j;
}
    if (str<stl)
    {
        for(int i=0 ; i>0; i<str, i++ );
        s1+=i;
        for(int j=0 ; j>str ; j<stl , j++ );
        s2+=j;
        for(int k=0 ; k>stl ;k++ );
        s3+=k;  
        cout<<"1 Summa= "<<s1<<"2 Summa="<<s2<<"3 Summa="<<s3;
    }
    else
    {
        for(int i=0 ; i>0; i<stl, i++ );
        s1+=i;
        for(int j=0 ; j>stl ; j<str , j++ );
        s2+=j;
        for(int k=0 ; k>str ;k++ );
        s3+=k;
        cout<<"1 Summa= "<<s1<<"2 Summa="<<s2<<"3 Summa="<<s3;
    }
    
    fin.close();
    fout.close();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2012, 10:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подсчитать суммы в массиве (C++):

Вычисление суммы четных и суммы нечетных чисел в одномерном массиве - C++
1) Написать программу для вычисления суммы четных и суммы нечетных чисел в одномерном массиве!

Не могу найти ошибку с подсчетом суммы элементов в интервале[a,b] в динамическом одномерном массиве массиве. - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; #include...

Подсчитать следующие суммы косинусов - C++
Для заданного натурального n и действительного х- подсчитать следующие суммы: S=cos1-cos2+cos3-...+(-1)n+1cos n

Для заданного натурального n и действительного х подсчитать суммы - C++
Для заданного натурального n и действительного х подсчитать суммы: S=x+3x^3+5x^5+7x^7+...+(2n-1)х^2n-1

Для заданного натурального n и действительного x подсчитать суммы - C++
13. S=1+1\2!+1\3!+...+1\n!; Помогите пожалуйста с решением. В долгу не останусь любой коммерческий вопрос не проблема😊😉

В квадратной матрице подсчитать суммы чисел, стоящих на диагоналях - C++
В квадратной таблице n × n подсчитать сумы чисел, стоящих на диагоналях. Входные данные Вводится число n (1 ≤ n ≤ 500), а затем...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
09.07.2012, 10:41 #2
Цитата Сообщение от Bandiyos1603 Посмотреть сообщение
Заданный в файле массив целых чсел делится на три части двумя элементами - макс. и мин. по величине. Определить суммы этих частей.
- всё довольно просто
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
#include <iostream> //i/o
#include <cstdlib>  //rand srand
#include <ctime>    //time
using namespace std;
 
int main()
{
    int i;//Счётчик
    int n = 0;//Будет хранить число элементов в массиве
    int * arr = NULL;//Указатель на массив
    //Индексы соотв макс и мин элемента
    int imax  = 0;
    int imin  = 0;
    //Суммы
    int sum1 = 0;
    int sum2 = 0;
    int sum3 = 0;
    cout<<"Enter num elements : ";cin>>n;
    //Выделяем память под массив
    arr = new int[n];
    srand(time(NULL));//Устанавливаем нач значение генератора случ чисел
    for(i = 0; i < n; i++)
    {
        //Генерируем число в диапазоне -50...50
        arr[i] = rand()%100 - 50;
        cout<<arr[i]<<" ";
        //Ищем индексы макс и мин элемента
        if(arr[i] < arr[imin])
            imin = i;
        if(arr[imax] < arr[i])
            imax = i;
    }
    cout<<endl;
    cout<<"index of min element : "<<imin<<endl;
    cout<<"index of max element : "<<imax<<endl;
    //Определяем какой из индексов идёт левее
    int ileft = imin;
    if(imax < ileft)
        ileft = imax;
    int iright= imin;
    if(iright < imax)
        iright = imax;
    //Ищем интересующие нас суммы
    for(i = 0    ; i < ileft; i++)
        sum1 += arr[i];
    for(i = ileft; i < iright;i++)
        sum2 += arr[i];
    for(i = iright;i < n; i++)
        sum3 += arr[i];
    cout<<"sum in array : "<<sum1<<" "<<sum2<<" "<<sum3<<endl;
    delete [] arr;//Чистим память
    system("pause");//Стоп-точка
    return 0;
}
Миниатюры
Подсчитать суммы в массиве  
Bandiyos1603
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 16
09.07.2012, 10:44  [ТС] #3
спасибо большое)))

Добавлено через 1 минуту
а через файл как это реализовать?
-=ЮрА=-
09.07.2012, 10:46
  #4

Не по теме:

Цитата Сообщение от Bandiyos1603 Посмотреть сообщение
а через файл как это реализовать?
используй ifstream что сложного то?

Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
09.07.2012, 10:49 #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
28
29
30
31
32
33
34
35
36
#include <algorithm>
#include <climits>
#include <fstream>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
    vector<int> v;
    unsigned short min = 0, max = 0, i;
    int temp;
    ifstream f("File.txt");
    for (i = 0; f >> temp; i++) {
        v.push_back(temp);
        if (temp < v[min])
            min = i;
        else if (temp > v[max])
            max = i;
    }
    f.close();
    if (min > max)
        swap(min, max);
    temp = 0;
    for (i = 0; i < min; i++)
        temp += v[i];
    cout << temp << endl;
    temp = 0;
    while (++i < max)
        temp += v[i];
    cout << temp << endl;
    temp = 0;
    while (++i < v.size())
        temp += v[i];
    cout << temp << endl;
}
Добавлено через 21 секунду
Опоздал)
Bandiyos1603
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 16
09.07.2012, 11:07  [ТС] #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
используй ifstream что сложного то?
я его и используюю, с ним загвоздка((
-=ЮрА=-
Заблокирован
Автор FAQ
09.07.2012, 11:14 #7
Цитата Сообщение от Bandiyos1603 Посмотреть сообщение
я его и используюю, с ним загвоздка((
C++
1
2
while(!ifs.eof())
    ifs>>arr[i];
Bandiyos1603
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 16
09.07.2012, 11:38  [ТС] #8
Использовал Ваш варант) так не выходит.
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
#include "StdAfx.h"
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int max = 0, min = 0,s1=0,s2=0,s3=0,i,n=0;
    int * Mas = NULL;
    ifstream fin("File");
    ofstream fout("File");
    while(!fin.eof())
    for(i = 0; i < n; i++)
    {
        fin>>Mas[i];
        if(Mas[i] < Mas[min])
            min = i;
        if(Mas[max] < Mas[i])
            max = i;
    }
 
    int left = min;
    if(max < left)
        left = max;
    int right= min;
    if(right < max)
        right = max;
 
    for(i = 0    ; i < left; i++)
        s1 += Mas[i];
    for(i = left; i < right;i++)
        s2 += Mas[i];
    for(i = right;i < n; i++)
        s3 += Mas[i];
 
        cout<<"1 Summa= "<<s1<<"2 Summa="<<s2<<"3 Summa="<<s3;
    
    fin.close();
    fout.close();
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
09.07.2012, 11:46 #9
Bandiyos1603, имя файла нормальное введи это же так очевидно!
Bandiyos1603
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 16
09.07.2012, 11:50  [ТС] #10
Изменил на File.txt , не помогло , тот же результат.
-=ЮрА=-
Заблокирован
Автор FAQ
09.07.2012, 12:48 #11
Цитата Сообщение от Bandiyos1603 Посмотреть сообщение
Изменил на File.txt , не помогло , тот же результат.



Цитата Сообщение от Bandiyos1603 Посмотреть сообщение
ifstream fin("File");
* * ofstream fout("File");
* * while(!fin.eof())
* * for(i = 0; i < n; i++)//Откуда взялся ещё один цикл???О_о
* * {
* * * * fin>>Mas[i];
* * * * if(Mas[i] < Mas[min])
* * * * * * min = i;
* * * * if(Mas[max] < Mas[i])
* * * * * * max = i;
* * }
Убери его к чёрту for или тогда запиши так
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
#include "StdAfx.h"//Зачем он???!
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
     int max = 0, min = 0,s1=0,s2=0,s3=0,i,n=0;
     int * Mas = NULL;
     ifstream fin("File");    //Надеюсь у тебя под File понимается скажем input.txt
     //т.е имя и расширение
    ofstream fout("File");//а здесь надеюсь же имя отличное от input.txt
    //и объясни мне тупому накой чёрт тебе вообще дался поток записи???!
    //короче ofstream тоже в топку
   for(i = 0; i < n && !fin.eof(); i++)
   {
        fin>>Mas[i];
        if(Mas[i] < Mas[min])
            min = i;
        if(Mas[max] < Mas[i])
            max = i;
    }
    int left = min;
    if(max < left)
        left = max;
    int right= min;
    if(right < max)
        right = max;
 
    for(i = 0    ; i < left; i++)
        s1 += Mas[i];
    for(i = left; i < right;i++)
        s2 += Mas[i];
    for(i = right;i < n; i++)
        s3 += Mas[i];
 
        cout<<"1 Summa= "<<s1<<"2 Summa="<<s2<<"3 Summa="<<s3;
    
    fin.close();
    fout.close();
    return 0;
}
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
09.07.2012, 17:37 #12
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
#include "StdAfx.h"//Зачем он???!
Cтудия требует.
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
09.07.2012, 19:10 #13
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Cтудия требует.
надо убирать галку - использовать предкомпилированные заголовки
-=ЮрА=-
10.07.2012, 06:38
  #14

Не по теме:

Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Cтудия требует.
Кот Ангенс, а я по твоему в чём пишу?

defer, да
Цитата Сообщение от defer Посмотреть сообщение
надо убирать галку - использовать предкомпилированные заголовки
ты абсолютно прав

Bandiyos1603
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 16
10.07.2012, 10:15  [ТС] #15
программа работает, только перескакивает первый цикл, не заходя в него, в результате чего отвте выдает по нулям все суммы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2012, 10:15
Привет! Вот еще темы с ответами:

Для заданного натурального n действительного x подсчитать следующие суммы: - C++
Для заданного натурального n действительного x подсчитать следующие суммы:

для данного натурального n и действительного x подсчитать следующие суммы - C++
для данного натурального n и действительного x подсчитать следующие суммы S=cos1-cos2+cos-...+(-1)^n+1cosn

Для заданного натурального n и действительного x подсчитать следующие суммы - C++
Для заданного натурального n и действительного x подсчитать следующие суммы:

Для заданного натурального n и действительного x подсчитать следующие суммы - C++
Помогите пожалуйста, Для заданного натурального n и действительного x подсчитать следующие суммы: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.07.2012, 10:15
Ответ Создать тему
Опции темы

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