Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227

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

09.05.2014, 23:16. Показов 2659. Ответов 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]; и почему нельзя просто присвоить "нуль" без массива (что будет) и объясните пожалуйста поточнее ибо понимаю все не сразу...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2014, 23:16
Ответы с готовыми решениями:

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

Создать программу для поиска первого нечетного элемента в заданном массиве методом бинарного поиска
Бинарный поиск Первый нечетный, помогите пожалуйста.

Поиска заданного числа, количества его вхождений в массив и номер первого элемента
составить программу поиска заданного числа, количества его вхождений в массив и номер первого элемента

33
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:21  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ValeryS Посмотреть сообщение
или ты вводишь индекс?
нет вожу цифру любую и не раз от 1 до 10 а программа выводит индекс массива и именно индекс, а не значения храняшиеся в нем...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
10.05.2014, 00:24
Цитата Сообщение от 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 а программа выводит индекс массива и именно индекс, а не значения храняшиеся в нем...
индекс того числа которое ввел?
1
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
10.05.2014, 00:24
web-magician, а введенная вами цифра к индексу имеет какое-то отношение?
0
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:30  [ТС]
Цитата Сообщение от 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 минуты

Не по теме:

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

0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
10.05.2014, 00:32
Цитата Сообщение от web-magician Посмотреть сообщение
кстати запись будет верной?
нет
оператор = - оператор присвоения.
оператор == - оператор проверки на равенство.
0
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:33  [ТС]
тогда так:
C++
1
2
3
4
int a;
cin >> a;
a=arr[0]
cout << a << endl;
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
10.05.2014, 00:34
web-magician, вы не могли бы прокомментировать каждую строчку вашего кода?С пояснением,что в каждой строке и для чего делаете?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
10.05.2014, 00:36
Цитата Сообщение от 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<<"нет такого числа в массиве";
0
 Аватар для web-magician
-6 / 11 / 1
Регистрация: 11.02.2011
Сообщений: 227
10.05.2014, 00:49  [ТС]
вопрос с кодом уже закрыт и меня интересует другой момент-момент с индексом... и все же попробую
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; и операция прошла успешно)
}
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
10.05.2014, 00:58
Цитата Сообщение от web-magician Посмотреть сообщение
и меня интересует другой момент-момент с индексом
Так задавайте свой вопрос.

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

Добавлено через 3 минуты
Цитата Сообщение от S_el Посмотреть сообщение
Теперь у меня вопрос к вам почему не проводить суммирование,поиск мин и макс в одном цикле?
не знаю что так возможно и поэтому делаю как знаю. наверно боюсь запутаться (если даже это возможно сделать)
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
10.05.2014, 01:19
Цитата Сообщение от 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;
}
1
10.05.2014, 02:11  [ТС]

Не по теме:

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

0
 Аватар для uhx
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305
10.05.2014, 03:43
Цитата Сообщение от 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 Посмотреть сообщение
можете мне посоветовать,что будет правильней делать чтобы хорошо изучить язык программирования? сколько и как нужно заниматься этим в день? на листке писать? в форумах сидеть? книги читать? видео просматривать (обучение С++) ??? извините за вопрос не по теме
Читай книжки. Самый ценный источник, там очень много всяких всячин))
Я с Шилдта начинал. Шаг за шагом.
Больше книг правда не читал, но когда пишу что-то новое - юзаю очень много источников. А если не понятно, то можно и тут спросить
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2014, 03:43

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

Почему не значение из переменой не берется из формы 2 в форму 3
public partial class Form2 : Form { public string text=&quot;smth&quot;; } public partial class Form3: Form { ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru