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

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

Войти
Регистрация
Восстановить пароль
 
 
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
#1

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

09.05.2014, 23:16. Просмотров 697. Ответов 33
Метки нет (Все метки)

Свем доброго времени суток и всех с праздником!
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++
Описать динамический массив. Реализовать 2 способа инициализации массива (пользователь может сам выбрать способ сделать меню): -...

Ноль вместо первого элемента в алгоритме быстрой сортировки - C++
Здравствуйте, скопировал код из темы, хочу отсортировать массив, но почему-то в отсортированном массиве вместо первого элемента помещается...

Составить программу для нахождения первого элемента массива меньше десяти и его номера - C++
3)Известен целочисленный массив x1,х2,х3,…,х10. Составить программу для нахождения первого элемента меньше десяти и его номера. Если такого...

Почему нельзя обратиться к массиву, не указывая индекс его элемента - C (СИ)
Всем привет. вот часть кода. #define N 3 int main() { char *m = {&quot;First&quot;,&quot;Second&quot;,&quot;The last&quot;}; char *tmp; int...

По двумерному массиву массиву А получить одномерный массив В, присвоив его k-му элементу значение TRUE - C#
По двумерному массиву массиву А получить одномерный массив В, присвоив его k-му элементу значение TRUE, если выполнено указанное ниже...

Изменить массив, уменьшив его нечетные элементы на значение первого четного элемента - Pascal
Описать динамический массив. Реализовать 2 способа инициализации массива (пользователь может сам выбрать способ сделать меню): -...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia-22
8 / 7 / 2
Регистрация: 21.11.2013
Сообщений: 50
10.05.2014, 00:14 #16
web-magician, программа "знала". Только min был отнюдь не минимальным значением, просто первым. По своему опыту скажу, нет смысла работать с несортированным массивом. И 90% задач с массивами, ну по крайней мере на время обучения в ВУЗе, начинается именно с их сортировки. IMHO, вам бы почитать чего-нибудь по теме...
Это я вам как студент говорю (:
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
10.05.2014, 00:15 #17
Цитата Сообщение от web-magician Посмотреть сообщение
массив 0.1.2.3.4.5.6.7.8.9 ввожу 1 система выводит 0 первый элемент массива
C++
1
2
3
4
5
6
7
8
9
10
for(int i=0;i<N;i++)
 {
   if(a==arr[i])
     {
       if(i==0)
        cout<<"Error"
      else
       cout<<arr[i-1];
     }
}
N количество элементов( размер массива)
a веденое число
arr массив
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:17  [ТС] #18
Цитата Сообщение от Kuzia-22 Посмотреть сообщение
Скажите честно, ваш код или нашли исходник где-то на стороне и разбираетесь как работает?
если честно то нет не нашел, а писал сам и это было уже давно и я только учусь и тогда только учился и перестал заниматься в одно время вообще вот сейчас решил взяться снова и понял,что подзабыл многое так как время от времени читал книгу, а в ней все с самого начала и много подробностей и новшеств которых я не видел... и сейчас видимо подзабыл или запутался после всей информации полученной из книги...
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
10.05.2014, 00:17 #19
или ты вводишь индекс?
тогда так
C++
1
cout<<arr[a-1];
S_el
2094 / 1601 / 307
Регистрация: 15.12.2013
Сообщений: 6,435
10.05.2014, 00:19 #20
Цитата Сообщение от Kuzia-22 Посмотреть сообщение
И 90% задач с массивами, ну по крайней мере на время обучения в ВУЗе, начинается именно с их сортировки.
Массив это способ хранения данных и только малая часть задач сводится к их упорядочиванию.
web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:21  [ТС] #21
Цитата Сообщение от ValeryS Посмотреть сообщение
или ты вводишь индекс?
нет вожу цифру любую и не раз от 1 до 10 а программа выводит индекс массива и именно индекс, а не значения храняшиеся в нем...
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
2094 / 1601 / 307
Регистрация: 15.12.2013
Сообщений: 6,435
10.05.2014, 00:24 #23
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
2094 / 1601 / 307
Регистрация: 15.12.2013
Сообщений: 6,435
10.05.2014, 00:32 #25
Цитата Сообщение от 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
2094 / 1601 / 307
Регистрация: 15.12.2013
Сообщений: 6,435
10.05.2014, 00:34 #27
web-magician, вы не могли бы прокомментировать каждую строчку вашего кода?С пояснением,что в каждой строке и для чего делаете?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
-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
2094 / 1601 / 307
Регистрация: 15.12.2013
Сообщений: 6,435
10.05.2014, 00:58 #30
Цитата Сообщение от web-magician Посмотреть сообщение
и меня интересует другой момент-момент с индексом
Так задавайте свой вопрос.

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

Вывести значение и номер первого четного элемента массива или сообщение об его отсутствии - C (СИ)
ввести одномерный массив размерностью n. Вывести значение и номер первого четного элемента или сообщение об отсуствии четных значений

.NET 4.x Существует ли встроенный метод поиска элемента по двумерному массиву? - C#
int array; Существует ли встроенный метод поиска элемента по двумерному массиву?

После первого элемента массива, оканчивающегося на k, вставить ноль - Pascal ABC
Условие задачи: после первого элемента, оканчивающегося на k вставить ноль. Программа работает, но только если этот элемент не последний....

Все члены массива меньше первого элемента массива, увеличить на его значение. - Pascal ABC
1) В матрице a найти произведение положительных элементов во всех нечётных столбцах.Если таких элементов нет, то на печать выдать...


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

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

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