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

найти сумму чисел, расположенных перед первым минимальным. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:11     найти сумму чисел, расположенных перед первым минимальным. #1
Помогите пожалуйста. Как найти сумму чисел, расположенных перед первым минимальным. ??? Не получается. Понимаю, что нужно использовать цикл, но как именно? Очень жду вашей помощи, хотя бы совета.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2011, 17:11     найти сумму чисел, расположенных перед первым минимальным.
Посмотрите здесь:

C++ Найти сумму элементов массива, расположенных между элементами с минимальным и максимальным значением
C++ В массиве А найти сумму элементов, расположенных между минимальным и максимальным элементами массива
C++ Найти количество элементов, расположенных перед первым минимальным элементом
C++ Найти сумму элементов, расположенных между первым и последним нулевыми элементами
C++ Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:15     найти сумму чисел, расположенных перед первым минимальным. #2
Цитата Сообщение от Вася1q Посмотреть сообщение
хотя бы совета.
1. Ищешь первый минимальный
2. Запоминаешь номер
3. Проходишь в цикле до этого номера и суммируешь массив.
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:27  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #3
Цитата Сообщение от Nursik77 Посмотреть сообщение
суммируешь массив.
Самое интересное что массивы мы еще не изучали!

Добавлено через 5 минут
Nursik77, Посоветуйте пожалуйста как бы обойтись без массива?

Добавлено через 5 минут
ФОРУМЧАНЕ) ВЫРУЧАЙТЕ! как без массива можно решить эту задачу???
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:33     найти сумму чисел, расположенных перед первым минимальным. #4
http://www.cyberforum.ru/cpp/thread197086.html
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:38  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #5
Nursik77, Спасибо))) Но блин...как же я лабу сдавать буду, когда еще лекций по массивам не было?(
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:42     найти сумму чисел, расположенных перед первым минимальным. #6
Скажи что массивы освоил
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:45  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #7
Nursik77, Ладно) попробую разобраться) А у тебя прога эта запускается? у меня лично нет((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
#include <cstring>
int main()
{
const int n = 10;
float a[n];
for (int i = 0; i<n; i++)
        cin >> a[i];
float min=a[0], nomer=0, sum = 0;
for (int i = 0; i<n; i++)
        if (a[i] < min)
        {
        min = a[i];
      nomer = i;
      }
for (int i = 0; i<nomer; i++)
        sum+=a[i];
cout << sum;
}
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:51     найти сумму чисел, расположенных перед первым минимальным. #8
Какой компилятор юзаешь? код рабочий.

Добавлено через 36 секунд
В конце
C++
1
system("pause");
добавь.
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 17:59  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #9
Dev C++ юзаю..

Добавлено через 6 минут
Блин не компилирует(((((((
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 18:00     найти сумму чисел, расположенных перед первым минимальным. #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
const int n = 10;
float a[n];
for (int i = 0; i<n; i++)
        cin >> a[i];
float min=a[0], nomer=0, sum = 0;
for (int i = 0; i<n; i++)
        if (a[i] < min)
        {
        min = a[i];
      nomer = i;
      }
for (int i = 0; i<nomer; i++)
        sum+=a[i];
cout << sum;
system("pause");
}
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 18:20  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #11
Nursik77, Да-да-да using namespace std; строчка понадобилась)) Спасибо вам огромное))

Добавлено через 10 минут
Nursik77, Слушай, если тебе не сложно можешь мне словами описать, вот эту часть программы?
C++
1
2
3
4
5
6
7
8
9
10
11
12
float a[n];
for (int i = 0; i<n; i++)
        cin >> a[i];
float min=a[0], nomer=0, sum = 0;
for (int i = 0; i<n; i++)
        if (a[i] < min)
        {
        min = a[i];
      nomer = i;
      }
for (int i = 0; i<nomer; i++)
        sum+=a[i];
Добавлено через 48 секунд
Я еще заменил пару строк на
C++
1
2
3
int n;
cout << "Vvedite kollichestvo chisel";
cin >> n;
Добавлено через 56 секунд
Чтобы можно было самому вводить кол-во чисел)
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 18:28     найти сумму чисел, расположенных перед первым минимальным. #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
float a[n]; // массив из эн элементов
for (int i = 0; i<n; i++) // пробег по циклу
        cin >> a[i]; // ввод массива
float min=a[0], nomer=0, sum = 0; // первый элемент считаем минимумом, номеру мин-а и сумме массива присваиваем ноль
for (int i = 0; i<n; i++)  // пробег по циклу
        if (a[i] < min) // проверяем на минимальность 
        {
        min = a[i]; // находим мин.
      nomer = i; // запоминаем номер
      }
for (int i = 0; i<nomer; i++) // в цикле уже пробегаем до номера мин. элемента
        sum+=a[i]; // суммируем
...
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 18:53  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #13
Nursik77, Огромное вам спасибо) Не думал, что еще остались люди способные на бескорыстную помощь)

Добавлено через 4 минуты
Теперь самая важная часть моего задания)
мне нужно Создать бинарный файл f и записать в него действительные числа. Организовать просмотр бинарного файла и его обработку: найти сумму чисел, расположенных перед первым минимальным. На с концом задачи вы мне помогли))) Вот сейчас пытался совместить две части программы но ничего дельного не вышло. Вот код. Подредактируйте, если не сложно:
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
#include <iostream>
#include <cstring>
#include <stdio.h>
using namespace std;
// ïðîòîòèïû ГґГіГ*êöèé ñîçäГ*Г*ГЁГї, ïðîñìîòðГ* ГЁ
// îáðГ*áîòêè ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ*
 
void create(void); 
void view(void);
void work(void);
 
int main(void)
{  create();
   view(); 
   work();
}
 
// îïðåäåëåГ*ГЁГҐ ГґГіГ*êöèè ñîçäГ*Г*ГЁГї ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ*
 
void create(void)
{ FILE * f;  
  int min=a[0], number=0, sum = 0;
  if ((f = fopen("D:\\file.dat","wb"))!= NULL)
   { cout << " Ââåäèòå êîëè÷åñòâî Г·ГЁГ±ГҐГ« :  "; 
      cin >> n;
       cout << " \nÂâåäèòå öåëûå Г·ГЁГ±Г«Г* : ";
       float min=a[0], nomer=0, sum = 0;
       for (int i = 0; i < n; i++)
             cin >> a[i] ;
       if (a[i] < min)
        {
        min = a[i];
      nomer = i;
      }
for (int i = 0; i < nomer; i++)
        sum+=a[i];
cout << sum;
 
}
        { cin >> number;
          fwrite(&number,sizeof(int),1,f); 
       }
     fclose(f); 
    cout << "\nГ—ГЁГ±Г«Г* Г§Г*ГЇГЁГ±Г*Г*Г» Гў ГЎГЁГ*Г*Г°Г*ûé ГґГ*éë!";
    } 
 else 
  printf("\nГЋГёГЁГЎГЄГ* ñîçäГ*Г*ГЁГї ГґГ*éëГ*!\n");
}
// îïðåäåëåГ*ГЁГҐ ГґГіГ*êöèè ïðîñìîòðГ* ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ*
 
void view(void)
{  int number;
   FILE * f;
   if ((f = fopen("D:\\file.dat","rb"))!= NULL)
   { cout << "\nÏðîñìîòð ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ*: ";
     while (fread(&number,sizeof(int),1,f))
         cout << number << " ";
      cout << "\n"; 
      fclose(f);
     }
   else printf("\nГЋГёГЁГЎГЄГ* îòêðûòèÿ ГґГ*éëГ*!\n");
}
// îïðåäåëåГ*ГЁГҐ ГґГіГ*êöèè îáðГ*áîòêè ГЎГЁГ*Г*Г°Г*îãî ГґГ*éëГ*
 
void work(void)
{ int number; 
  FILE * f; 
  int  k = 0;
  if ((f = fopen("D:\\file.dat","rb"))!= NULL)
  { while (fread(&number,sizeof(int),1,f))
       if (number < 0) k++;
    cout << "\nÊîëè÷åñòâî îòðèöГ*òåëüГ*ûõ Г·ГЁГ±ГҐГ« = " << k;
    cout << "\n";  
    fclose(f);
  }
 else  printf("\nГЋГёГЁГЎГЄГ* îòêðûòèÿ ГґГ*éëГ*!\n");
}
system("pause");
}
Добавлено через 3 минуты
ой...немножко перепутал....
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 18:53     найти сумму чисел, расположенных перед первым минимальным. #14
Зачем вы поместили ее в функцию create? Главная функция у любой программы в с/с++ main. Туда ее и помещайте.
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 18:55  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #15
На счет количества отрицательных))) это из другой задачи)

Добавлено через 54 секунды
Nursik77, В смысле?)) в функцию обработки?
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 19:09     найти сумму чисел, расположенных перед первым минимальным. #16
Стоп, значит вам нужно создать бинарный файл, записать туда числа, потом суммировать числа до первого мин-ого элемента?
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 19:13  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #17
Nursik77, совершенно верно. просто первую часть задачи я взял с другой своей задачи. (Там нужно было найти кол-во отрицательных чисел)
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
#include <stdio.h>
#include <iostream>
using namespace std;
 
// прототипы функций создания, просмотра и
// обработки бинарного файла
 
void create(void); 
void view(void);
void work(void);
 
int main(void)
{  create();
   view(); 
   work();
}
 
// определение функции создания бинарного файла
 
void create(void)
{ FILE * f;  
  int number, n;
  if ((f = fopen("D:\\file.dat","wb"))!= NULL)
   { cout << " Введите количество чисел :  "; 
      cin >> n;
       cout << " \nВведите целые числа : ";
       for (int i = 0; i < n; i++)
        { cin >> number;
          fwrite(&number,sizeof(int),1,f); 
       }
     fclose(f); 
    cout << "\nЧисла записаны в бинарный файл!";
    } 
 else 
  printf("\nОшибка создания файла!\n");
}
 
// определение функции просмотра бинарного файла
 
void view(void)
{  int number;
   FILE * f;
   if ((f = fopen("D:\\file.dat","rb"))!= NULL)
   { cout << "\nПросмотр бинарного файла: ";
     while (fread(&number,sizeof(int),1,f))
         cout << number << " ";
      cout << "\n"; 
      fclose(f);
     }
   else printf("\nОшибка открытия файла!\n");
}
 
// определение функции обработки бинарного файла
 
void work(void)
{ int number; 
  FILE * f; 
  int  k = 0;
  if ((f = fopen("D:\\file.dat","rb"))!= NULL)
  { while (fread(&number,sizeof(int),1,f))
       if (number < 0) k++;
    cout << "\nКоличество отрицательных чисел = " << k;
    cout << "\n";  
    fclose(f);
  }
 else  printf("\nОшибка открытия файла!\n");
}
Добавлено через 34 секунды
Пытался создать программу по аналогии но не получилось...может вы поможите?
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 19:54     найти сумму чисел, расположенных перед первым минимальным. #18
Вот в СИ кое-что накатал, в плюсы сам перепишешь. Прога записывает 10 чисел в бинарный файл, потом суммирует числа до первого мин-ого элемента.
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
#include <stdlib.h>
#include <stdio.h>
 
int main() {
    
    const int n = 10;
    int i, min, number, sum, a[n];
        
    char fname[] = "D:\\file.dat";
        FILE *fp; 
    fp = fopen(fname,"w"); 
    printf("Dannie budut vvedeni v file - %s\n", fname);
    puts("--------------------------------");
    
    if ((fp=fopen(fname, "rw")) == NULL)
     {
       printf("\nERROR Cannot open the file!");
       system("pause");
       return 0;
     }
  
  if ((fp = fopen(fname, "wb")) != NULL)
   { 
      printf("\nÂâåäèòå 10 Г·ГЁГ±ГҐГ« : ");
      int min = a[0], nomer = 0, sum = 0;
       for (i = 0; i < n; i++)
       scanf(" %d", &a[i]);
       for (i = 0; i < n; i++)
       if (a[i] < min)
        {
          min = a[i];
          nomer = i;
        }
        for (i = 0; i < nomer; i++)
        sum+=a[i];
        
        for (i = 0; i < n; i++)
        fprintf(fp,"%d ",a[i]);
        fprintf(fp,"\nThe sum = %d", sum);
 }                                         
 
   fclose(fp);
   puts("----------------------------------");
printf("Vvedennie dannie zapisani v file %s\n",fname);
system("pause");
return 0;
}
Вася1q
 Аватар для Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
15.11.2011, 20:49  [ТС]     найти сумму чисел, расположенных перед первым минимальным. #19
Спасибо..сейчас постараюсь разобраться))

Добавлено через 2 минуты
Nursik77, Видишь еще в чем загвоздка, мне нужно чтобы четко выделялись 3 части программы:
C++
1
2
3
void create(void); 
void view(void);
void work(void);
Добавлено через 45 секунд
т.е. создание - просмотр, обработка)

Добавлено через 26 минут
Форумчане выручайте)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2011, 23:58     найти сумму чисел, расположенных перед первым минимальным.
Еще ссылки по теме:

C++ В одномерном массиве найти сумму между первым и минимальным значением
C++ Найти сумму элементов массива, расположенных между первым и вторым положительными элементами
C++ Найти сумму элементов массива, расположенных между первым и последним нулевыми элементами

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.11.2011, 23:58     найти сумму чисел, расположенных перед первым минимальным. #20
Цитата Сообщение от Вася1q Посмотреть сообщение
как бы обойтись без массива?
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct NODE {
    int value;
    struct NODE * next;
} node_t;
 
typedef struct LIST {
    node_t * first;
    node_t * last;
} list_t;
 
int add_node(list_t * list, const int value){
    node_t * node;
    
    if ( ! ( node = malloc(sizeof(node_t)) ) )
        return -1;
    node->value = value;
    node->next = NULL;
    
    if ( ! ( list->first ) )
        list->first = node;
    else
        list->last->next = node;
    list->last = node;
    
    return 0;
}
 
node_t * min_element(const list_t * list){
    const node_t * cur_node = list->first;
    const node_t * min_node = cur_node;
    
    while ( cur_node->next ){
        cur_node = cur_node->next;
        if ( cur_node->value < min_node->value )
            min_node = cur_node;
    }
    
    return (node_t*)min_node;
}
 
int sum_before_min_element(const list_t * list){
    int sum = 0;
    const node_t * cur_node = list->first;
    const node_t * min_node = min_element(list);
    
    while ( cur_node != NULL && cur_node != min_node ){
        sum += cur_node->value;
        cur_node = cur_node->next;
    }
    
    return sum;
}
 
void remove_nodes(list_t * list){
    while ( list->first ){
        list->last = list->first->next;
        free(list->first);
        list->first = list->last;
    }
}
 
int main(void){
    list_t list = { NULL, NULL };
    int value;
    
    while ( printf("> ") > 0 && scanf("%d", &value) == 1 ){
        if ( add_node(&list, value) ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
    }
    
    printf("Sum before min element: %d\n", sum_before_min_element(&list));
    
    remove_nodes(&list);
    
    exit(0);
}
Yandex
Объявления
15.11.2011, 23:58     найти сумму чисел, расположенных перед первым минимальным.
Ответ Создать тему
Опции темы

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