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

Почему для поиска по массиву берется значение его первого элемента, а не ноль? - C++

Восстановить пароль Регистрация
 
 
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
09.05.2014, 23:16     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #1
Свем доброго времени суток и всех с праздником!
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    setlocale ( LC_ALL,"Rus" );
    const int n = 10;
    int arr[n];
    cout << "элементы массива ";
    for ( int i=0; i<n; i++ )
    cout << ( arr[i] = -10 + rand()%21 ) << " | ";
    cout << endl;
    int min = arr[0];
    int max = arr[0];
    int summa = 0;
    int summa2 = 0;
    cout << "отсортированный массив ";
    for ( int i=0; i<n-1; i++ )
    for( int k=0; k<n-1; k++ )
    if ( arr[k] > arr[k+1] )
{
    swap (arr[k], arr[k+1]);
}
    for ( int i=0; i<n; i++ )
{
    cout << arr[i] << " | ";
    if ( min > arr[i] )
    min = arr[i];
    if ( max < arr[i] )
    max = arr[i];
}
    cout << endl;
    cout << "максимальное значение " << max << endl;
    cout << "минимальное значение " << min << endl;
    for ( int i=0; i< 10; i++ )
    summa += arr[i];
    cout << "сумма положительных элементов " << summa << endl;
    for ( int i=0; i<n; i++ )
{
    if( arr[i] < 0 ) summa2 += arr[i];
}   
    cout << "сумма отрицательных элементов " << summa2;
    cout << endl;
    cout << "сумма всех элементов " << summa + summa2;
    cout << endl;
    return 0;
}
вот код программы. Один вопрос почему переменной min присваивается массив с первым элементом arr[0]? int min = arr[0]; и почему нельзя просто присвоить "нуль" без массива (что будет) и объясните пожалуйста поточнее ибо понимаю все не сразу...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2014, 23:16     Почему для поиска по массиву берется значение его первого элемента, а не ноль?
Посмотрите здесь:

C++ Найдите и запишите вместо первого элемента массива наибольший его элемент
C++ Ноль вместо первого элемента в алгоритме быстрой сортировки
C++ Определить значение первого положительного элемента динамического массива
Составить программу для нахождения первого элемента массива меньше десяти и его номера C++
C++ Разделить все элементы массива на значение первого элемента
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:21  [ТС]     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #21
Цитата Сообщение от ValeryS Посмотреть сообщение
или ты вводишь индекс?
нет вожу цифру любую и не раз от 1 до 10 а программа выводит индекс массива и именно индекс, а не значения храняшиеся в нем...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
10.05.2014, 00:24     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #22
Цитата Сообщение от web-magician Посмотреть сообщение
а если сортировки не было бы то соответственно программа не знала что такое min и что с ним делать?
ты не понимаешь сам принцип видать
смотри
массив 4 5 7 1 3
заносим в min первый элемент массива 4
сравниваем 4 с 5 , меньше нет
другая итерация цикла
сравниваем 4 с 6 , меньше нет
другая итерация цикла
сравниваем 4 с 7 , меньше нет
другая итерация цикла
сравниваем 4 с 1 , меньше нет
заменяем число 4 на 1
другая итерация цикла

сравниваем 1 с 3 , меньше нет
выход из цикла
в результате в min минимальное число 1

Добавлено через 1 минуту
Цитата Сообщение от web-magician Посмотреть сообщение
нет вожу цифру любую и не раз от 1 до 10 а программа выводит индекс массива и именно индекс, а не значения храняшиеся в нем...
индекс того числа которое ввел?
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
10.05.2014, 00:24     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #23
web-magician, а введенная вами цифра к индексу имеет какое-то отношение?
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:30  [ТС]     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #24
Цитата Сообщение от ValeryS Посмотреть сообщение
ты не понимаешь сам принцип видать
смотри
массив 4 5 7 1 3
заносим в min первый элемент массива 4
сравниваем 4 с 5 , меньше нет
другая итерация цикла
сравниваем 4 с 6 , меньше нет
другая итерация цикла
сравниваем 4 с 7 , меньше нет
другая итерация цикла
сравниваем 4 с 1 , меньше нет
заменяем число 4 на 1
другая итерация цикла
сравниваем 1 с 3 , меньше нет
выход из цикла
в результате в min минимальное число 1
это все я понял, а точнее вспомнил как мне в paint объясняли... Спасибо.

Добавлено через 3 минуты
Цитата Сообщение от S_el Посмотреть сообщение
web-magician, а введенная вами цифра к индексу имеет какое-то отношение?
в данном случае нет не имеет никакого значения. если бы я хотел получить доступ к элементу массива под индексом к примеру 0 то сделал бы так
C++
1
2
3
4
int a;
cin >> a;
a==arr[0]
cout << a << endl;
кстати запись будет верной?

Добавлено через 2 минуты

Не по теме:

много лет занимаюсь ремонтом компьютеров, а само программирование мне очень сильно нравится и хочу научиться хорошо программировать но я пока далек от этого...

S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
10.05.2014, 00:32     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #25
Цитата Сообщение от web-magician Посмотреть сообщение
кстати запись будет верной?
нет
оператор = - оператор присвоения.
оператор == - оператор проверки на равенство.
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:33  [ТС]     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #26
тогда так:
C++
1
2
3
4
int a;
cin >> a;
a=arr[0]
cout << a << endl;
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
10.05.2014, 00:34     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #27
web-magician, вы не могли бы прокомментировать каждую строчку вашего кода?С пояснением,что в каждой строке и для чего делаете?
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
10.05.2014, 00:36     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #28
Цитата Сообщение от web-magician Посмотреть сообщение
кстати запись будет верной?
нет
Цитата Сообщение от web-magician Посмотреть сообщение
a==arr[0]
здесь ты сравниваешь а не присваиваешь
Цитата Сообщение от web-magician Посмотреть сообщение
если бы я хотел получить доступ к элементу массива под индексом к примеру 0 то сделал бы так
вот так
C++
1
2
3
int a;
cin >> a;
cout << arr[a] << endl;
Цитата Сообщение от web-magician Посмотреть сообщение
в данном случае нет не имеет никакого значения.
очень имеет, это разные сущности

вот примерно так нужно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int arr[]={1,2,3,4,5,6,7,8,9,0};
int a;
bool f=false;
cin>>a;
int(i=0;i<sizeof(arr)/sizeof(int);i++)
  {
     if(f=(a==arr[i]))
      { 
        cout<<i;
        break; 
      }
}
if(!f)
  cout<<"нет такого числа в массиве";
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:49  [ТС]     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #29
вопрос с кодом уже закрыт и меня интересует другой момент-момент с индексом... и все же попробую
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
#include "stdafx.h"
#include <iostream>
#include <cmath> не уверен что нужно
using namespace std; пространство имен чтобы не вводить всегда std::
 
int main()  главная функция
{
    setlocale ( LC_ALL,"Rus" );   ввод русского языка в консоль
    const int n = 10;  константа то есть она не меняется
    int arr[n];   массив из константы из 10 элементов не больше
    cout << "элементы массива ";
    for ( int i=0; i<n; i++ ) стандартный цикл разов от нуля до 10 константа
    cout << ( arr[i] = -10 + rand()%21 ) << " | ";  заполнение массива случайными числами
    cout << endl;  новая строка
    int min = arr[0];  переменная мин с присвоенным ему с первым элементом массива 
    int max = arr[0];  так же только переменная макс
    int summa = 0;   переменная сумма с присвоенным значением 0
    int summa2 = 0; так же только переменная сумма 2
    cout << "отсортированный массив ";
    for ( int i=0; i<n-1; i++ )  это
    for( int k=0; k<n-1; k++ )  сортировка
    if ( arr[k] > arr[k+1] ) массива (пузырковая)
{
    swap (arr[k], arr[k+1]); до этого момента
}
    for ( int i=0; i<n; i++ ) цикл стандартный
{
    cout << arr[i] << " | "; вывод отсортированного массива 
    if ( min > arr[i] ) если переменная мин больше значений массива до тех пор пока не найдется минимальное
    min = arr[i]; то мину присвоено значение массива минимальное
    if ( max < arr[i] ) так же только макс меньше элементов массива
    max = arr[i]; так же присвоено максимальное
}
    cout << endl; новая строка
    cout << "максимальное значение " << max << endl; вывод максимального значения массива
    cout << "минимальное значение " << min << endl; вывод минимального значения массива
    for ( int i=0; i< 10; i++ ) цикл стандартный константой
    summa += arr[i]; переменной сумма додать и присвоить массив то есть каждый элемент прибавить на себя пока цикл работает
    cout << "сумма положительных элементов " << summa << endl; вывод переменной сумма
    for ( int i=0; i<n; i++ ) стандартный цикл константы
{
    if( arr[i] < 0 ) summa2 += arr[i]; если значение массива меньше нуля то прибавить их само на себя
}   
    cout << "сумма отрицательных элементов " << summa2; вывод переменно сумма 2
    cout << endl; новая строка
    cout << "сумма всех элементов " << summa + summa2; переменные сумма и сумма 2 в плюсе
    cout << endl; новая строка
    return 0; и операция прошла успешно)
}
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
10.05.2014, 00:58     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #30
Цитата Сообщение от web-magician Посмотреть сообщение
и меня интересует другой момент-момент с индексом
Так задавайте свой вопрос.

Теперь у меня вопрос к вам почему не проводить суммирование,поиск мин и макс в одном цикле?
web-magician
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 01:07  [ТС]     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #31
Цитата Сообщение от S_el Посмотреть сообщение
Так задавайте свой вопрос.
как вывести индекс массива с условием что в массиве 10 элементов и пользователь должен вводить число соответствующее месту (индекса) массива. то есть пользователь ввел число 1 а программа выводит индекс массива 0 2-1, 3-2, 4-3 ... 10-9 вот и все условие и весь вопрос

Добавлено через 3 минуты
Цитата Сообщение от S_el Посмотреть сообщение
Теперь у меня вопрос к вам почему не проводить суммирование,поиск мин и макс в одном цикле?
не знаю что так возможно и поэтому делаю как знаю. наверно боюсь запутаться (если даже это возможно сделать)
S_el
1907 / 1502 / 296
Регистрация: 15.12.2013
Сообщений: 5,917
10.05.2014, 01:19     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #32
Цитата Сообщение от web-magician Посмотреть сообщение
не знаю что так возможно и поэтому делаю как знаю.
Делать как знаете это хорошо,но еще лучше пробовать что-то новое

Цитата Сообщение от web-magician Посмотреть сообщение
наверно боюсь запутаться
А вы пишите алгоритм на листочке,будет намного проще.

Цитата Сообщение от web-magician Посмотреть сообщение
как вывести индекс массива с условием что в массиве 10 элементов и пользователь должен вводить число соответствующее месту (индекса) массива. то есть пользователь ввел число 1 а программа выводит индекс массива 0 2-1, 3-2, 4-3 ... 10-9 вот и все условие и весь вопрос
Давайте разбираться по порядку.
Как мы уже выяснили массив это хранилище данных,обращение к любому элементу происходит по его уникальному идентификатору(индексу),таким образом задача вывода индекса элемента сформулирована некорректна:
либо индекс известен и задача уже не имеет смысл.
либо необходимо определить те ячейки(индексы) в которых данные имеют требуемое значение.
В таком случае задача может иметь множество решений и иначе как перебором её не решить.
Для понимания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
int arr[]={1,2,4,4,5,6,8,8,9,0};
 
for(int i=0;i<sizeof(arr)/sizeof(int);i++)
{
    cout<<"Element ="<<arr[i]<<" ,index="<<i<<endl;
}
 
return 0;
}
web-magician
10.05.2014, 02:11  [ТС]
  #33

Не по теме:

можете мне посоветовать,что будет правильней делать чтобы хорошо изучить язык программирования? сколько и как нужно заниматься этим в день? на листке писать? в форумах сидеть? книги читать? видео просматривать (обучение С++) ??? извините за вопрос не по теме

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 03:43     Почему для поиска по массиву берется значение его первого элемента, а не ноль?
Еще ссылки по теме:

C++ Объяснить почему указатель выводит всю строку сразу, а не адрес первого элемента
C++ Увеличить все элементы матрицы на значение первого элемента найденной строки
C++ Выяснить почему после ввода первого элемента массива цикл не работает (std::cin в цикле for)

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

Или воспользуйтесь поиском по форуму:
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
10.05.2014, 03:43     Почему для поиска по массиву берется значение его первого элемента, а не ноль? #34
Цитата Сообщение от web-magician Посмотреть сообщение
один for один cout, а если нужно несколько cout-ов используй фигурные скобки
Я немног слоупок, всю тему читать не буду... может тебе уже об этом написали
Если ты не ставишь скобки после условия/цикла, то код будет выполняться до первого ";".
Если впадлу их ставить, то некоторые операции можно разделять запятой. Типо как
C++
1
2
3
4
5
6
7
if(i == 3)
   x++, y++;
 
// Вместо
if(i == 3){
   x++;
   y++;
Добавлено через 1 минуту
Цитата Сообщение от web-magician Посмотреть сообщение
можете мне посоветовать,что будет правильней делать чтобы хорошо изучить язык программирования? сколько и как нужно заниматься этим в день? на листке писать? в форумах сидеть? книги читать? видео просматривать (обучение С++) ??? извините за вопрос не по теме
Читай книжки. Самый ценный источник, там очень много всяких всячин))
Я с Шилдта начинал. Шаг за шагом.
Больше книг правда не читал, но когда пишу что-то новое - юзаю очень много источников. А если не понятно, то можно и тут спросить
Yandex
Объявления
10.05.2014, 03:43     Почему для поиска по массиву берется значение его первого элемента, а не ноль?
Ответ Создать тему
Опции темы

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