Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
1

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

15.11.2011, 17:11. Просмотров 1173. Ответов 20
Метки нет (Все метки)

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

Массив: Найти количество элементов, расположенных перед первым минимальным.
Дан набор из n целочисленных элементов. Найти количество элементов,...

Найти количество элементов, расположенных перед первым минимальным элементом
Дано целое число N и набор из N целых чисел. Найти количество элементов,...

Найти сумму чисел стоящих перед первым отрицательным числом последовательности
Написать программу, которая находит сумму чисел, которые стоят перед первым...

Вывести сумму чисел расположенных между первым и последним нулем
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два...

В одномерном массиве найти сумму между первым и минимальным значением
В одномерном массиве найти сумму между первым и минимальным значение . Я понял...

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

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

Добавлено через 5 минут
ФОРУМЧАНЕ) ВЫРУЧАЙТЕ! как без массива можно решить эту задачу???
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:33 4
http://www.cyberforum.ru/cpp/thread197086.html
0
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
15.11.2011, 17:38  [ТС] 5
Nursik77, Спасибо))) Но блин...как же я лабу сдавать буду, когда еще лекций по массивам не было?(
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:42 6
Скажи что массивы освоил
0
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
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;
}
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 17:51 8
Какой компилятор юзаешь? код рабочий.

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

Добавлено через 6 минут
Блин не компилирует(((((((
0
Nursik77
273 / 233 / 30
Регистрация: 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");
}
1
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
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 секунд
Чтобы можно было самому вводить кол-во чисел)
0
Nursik77
273 / 233 / 30
Регистрация: 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]; // суммируем
...
1
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
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 минуты
ой...немножко перепутал....
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 18:53 14
Зачем вы поместили ее в функцию create? Главная функция у любой программы в с/с++ main. Туда ее и помещайте.
0
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
15.11.2011, 18:55  [ТС] 15
На счет количества отрицательных))) это из другой задачи)

Добавлено через 54 секунды
Nursik77, В смысле?)) в функцию обработки?
0
Nursik77
273 / 233 / 30
Регистрация: 05.04.2011
Сообщений: 645
15.11.2011, 19:09 16
Стоп, значит вам нужно создать бинарный файл, записать туда числа, потом суммировать числа до первого мин-ого элемента?
1
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
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 секунды
Пытался создать программу по аналогии но не получилось...может вы поможите?
0
Nursik77
273 / 233 / 30
Регистрация: 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;
}
1
Вася1q
21 / 21 / 3
Регистрация: 13.09.2011
Сообщений: 312
15.11.2011, 20:49  [ТС] 19
Спасибо..сейчас постараюсь разобраться))

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

Добавлено через 26 минут
Форумчане выручайте)
0
easybudda
Модератор
Эксперт CЭксперт С++
10147 / 6054 / 1521
Регистрация: 25.07.2009
Сообщений: 11,476
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);
}
1
15.11.2011, 23:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2011, 23:58

Вывести сумму чисел из данного набора, расположенных между первым и последним нулем
программа на языке С++ Дано целое число N и набор из N целых чисел, содержащий...

Вывести сумму чисел из данного набора, расположенных между первым и последним нулем
Дано целое число N и набор из N целых чисел, содержащий по крайней мере два...

Найти сумму элементов массива, расположенных между минимальным и максимальным элементами
дан вещественный массив A(n). найти сумму элементов массива, расположенных...


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

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

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