Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск в массиве, Поиск элементов 
:(
    Опции темы
OuterHeaven
  Дата 3.1.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Здравствуйте уважаемые программисты, вот такой к вам вопрос.  В массиве из 20 целых чисел необходимо подсчитать количество
положительных, отрицательных и нулевых элементов.

Я решил для начала найти попробовать хотя бы все нулевые элементы, не пойму в чем проблема, теоретически все должно работать. При попытке ввести данные нулевых элементов, показывает, что таких 0. ГДе же ошибка?
Код

#include <stdafx.h>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    setlocale (0,"");                                                //Корректно отображаем кириллицу
//---------------------------------------------------------------------------------------------------------------------------------
    const int a = 6;                                                //Постоянная целого типа a = 6
    int b[a];                                                        //Описываем массив из 5 целых чисел
    int i;                                                            //Объявляем переменнные i - индекс массива
//Работаем с массивом:-------------------------------------------------------------------------------------------------------------
    cout << "Введите массив из 6 чисел:" << endl;                    //Приглашение о вводе массива
    for (i = 0; i < a; i++) cin >> b[i];                            //Вводим массив, где i - индекс массива
    int n = 0;
    {
        for (i = 0; i < a; i++)
        if (b[i] = 0) n++;
        cout << "\nНулевых элементов: " << b[n] << endl;
    }


    getch();
    return 0;
}


Заранее благодарен.

Добавлено через 12 минут и 30 секунд
Ага проблема решена, теперь осталось дописать программу на отрицательные и положительные элементы =)

Код

#include <stdafx.h>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    setlocale (0,"");                                                //Корректно отображаем кириллицу
//---------------------------------------------------------------------------------------------------------------------------------
    const int a = 6;                                                //Постоянная целого типа a = 6
    int b[a];                                                        //Описываем массив из 5 целых чисел
    int i;                                                            //Объявляем переменнные i - индекс массива
//Работаем с массивом:-------------------------------------------------------------------------------------------------------------
    cout << "Введите массив из 6 чисел:" << endl;                    //Приглашение о вводе массива
    for (i = 0; i < a; i++) cin >> b[i];                            //Вводим массив, где i - индекс массива
    int n = 0;
    {
        for (i = 0; i < a; i++) 
        if (b[i] == 0) n++;
        cout << "\nНулевых элементов: " << n << endl;
    }


    getch();
    return 0;
}

PM MAIL   Вверх
Dmi3ev
Дата 3.1.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



писал тут, но вроде все правильно. Если ты любишь ставить фигурные скобки, то ставь их там, где это хоть чуть-чуть уместно...
Код

#include <stdafx.h>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    setlocale (0,"");                                                //Корректно отображаем кириллицу
//---------------------------------------------------------------------------------------------------------------------------------
    const int a = 6;                                                //Постоянная целого типа a = 6
    int b[a];                                                        //Описываем массив из 5 целых чисел
    int i;                                                            //Объявляем переменнные i - индекс массива
//Работаем с массивом:-------------------------------------------------------------------------------------------------------------
    cout << "Введите массив из 6 чисел:" << endl;                    //Приглашение о вводе массива
    for (i = 0; i < a; i++) cin >> b[i];                            //Вводим массив, где i - индекс массива
    int n = 0; int n1=0; int n2=0;
    for (i = 0; i < a; i++)
     { 
      if (b[i] == 0) 
       {
        n++;
       }
      else
       {
         if (b[i] > 0)
          {
           n1++;
          }
         else
          {
           n2++;
          }
       }
     }
     cout << "\nНулевых элементов: " << n << endl;
     cout << "\n>0 " << n1 << endl;
     cout << "\n<0 " << n2<< endl;

    getch();
    return 0;
}

наставил фигурных скобок, как ты любишь  smile  smile  smile 


--------------------

PM MAIL   Вверх
OuterHeaven
  Дата 4.1.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



А для чего вообще нужны эти фигурные скобки? Что они отделяют? Я так понимаю блоки программы... Ставлю на интуитивном уровне, вот и получается, что в ненужных местах. И как правильно их расставить? Подскажите пожалуйста, я пытаюсь программировать оптимально, но не получается. Вот так у меня получилась программа до того как был написан ответ от Dmi3ev. Я использую учебник для вузов Т.А. Павловской.

Код

// Задача №3.cpp: определяет точку входа для консольного приложения.
//

#include <stdafx.h>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    setlocale (0,"");                                                //Корректно отображаем кириллицу
//---------------------------------------------------------------------------------------------------------------------------------
    const int a = 20;                                                //Постоянная целого типа a = 20
    int b[a];                                                        //Описываем массив из 5 целых чисел
    int i;                                                            //Объявляем переменнные i - индекс массива
//Работаем с массивом:-------------------------------------------------------------------------------------------------------------
    cout << "Введите массив из 20 чисел:" << endl;                    //Приглашение о вводе массива
    for (i = 0; i < a; i++) cin >> b[i];                            //Вводим массив, где i - индекс массива
    int n = 0;                                                        //Количество нулевых элементов = 0
    int p = 0;                                                        //Количество положительных элементов = 0
    int o = 0;                                                        //Количество отрицательных элементов = 0
    {
        for (i = 0; i < a; i++)                                        //Пробегаем массив
        if (b[i] == 0) n++;                                            //Начинаем поиск нулевых элементов
        cout << "\nНулевых элементов: " << n << endl;                //Выводим на экран количество нулевых элементов
        {    
            for (i = 0; i < a; i++)                                    //Пробегаем массив
            if (b[i] > 0) p++;                                        //Начинаем поиск положительных элементов
            cout << "\nПоложительных элементов:" << p << endl;        //Выводим на экран количество положительных элементов
            {
                for (i = 0; i < a; i++)                                //Пробегаем массив
                if (b[i] < 0) o++;                                    //Начинаем поиск отрицательных элементов
                cout << "\nОтрицательных элементов: " << o << endl;    //Выводим на экран количество отрицательных элементов
            }
        }
    }
    cout << "\nДля выхода из программы нажмите любую клавишу...";    //Выводим сообщение о выходе
    getch();
    return 0;
}


Как видите массив приходися пробегать аж три раза, что НЕ ЕСТЬ ГУД. Это наверняка замедляет выполнение программы...

Это сообщение отредактировал(а) OuterHeaven - 4.1.2009, 22:17
PM MAIL   Вверх
AnLun
Дата 4.1.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.1.2008

Репутация: нет
Всего: нет



Ну во-первых замедляет только в 3 раза smile 
Во-вторых, конечно, бред. Фигурные скобки ставятся только после определенных заголовков: заглавия функций, if-а, циклов итд.

Заметь, Dmi3ev сделал подсчет за один проход...

Лучше всего почитай примеры к книжке, чтобы быстро понять, где надо ставить {}...

Это сообщение отредактировал(а) AnLun - 4.1.2009, 23:55
PM MAIL   Вверх
OuterHeaven
  Дата 4.1.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



А такие проблемы у всех новичков или мне не светит стать программистом?  smile 

Это сообщение отредактировал(а) OuterHeaven - 4.1.2009, 23:58
PM MAIL   Вверх
AnLun
Дата 4.1.2009, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 3.1.2008

Репутация: нет
Всего: нет



Смотря сколько лет ты новичокsmile 

P.S.  Мне было на С++ просто понять эти скобки после Pascal'я с его BEGIN - END

Это сообщение отредактировал(а) AnLun - 5.1.2009, 00:00
PM MAIL   Вверх
OuterHeaven
  Дата 5.1.2009, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Первый месяц! smile 

Это сообщение отредактировал(а) OuterHeaven - 5.1.2009, 00:05
PM MAIL   Вверх
OuterHeaven
  Дата 5.1.2009, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Спасибо ОГРОМНОЕ! Тема закрыта!
PM MAIL   Вверх
OuterHeaven
  Дата 5.1.2009, 01:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.4.2008

Репутация: нет
Всего: нет



Вот так я доработал программу, немного изменив ее вид, по моему выглядит довольно наглядно...Спасибо Dmi3ev!

Код

#include <stdafx.h>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    setlocale (0,"");                                                //Корректно отображаем кириллицу
/*Объявляем начальные переменные:================================================================================================*/
    const int a = 20;                                                //Постоянная целого типа a = 20
    int b[a];                                                        //Описываем массив из 5 целых чисел
    int i;                                                            //Объявляем переменнные i - индекс массива

/*Работаем с массивом, вводим данные:============================================================================================*/
    cout << "Введите массив из 20 чисел:" << endl;                    //Приглашение о вводе массива
    for (i = 0; i < a; i++) cin >> b[i];                            //Вводим массив, где i - индекс массива

/*Обнуляем переменные перед началом поиска:======================================================================================*/
    int n = 0;                                                        //Количество нулевых элементов
    int p = 0;                                                        //Количество положительных элементов
    int o = 0;                                                        //Количество отрицательных элементов

/*Начинаем поиск в массиве:======================================================================================================*/
   for (i = 0; i < a; i++)                                            //Пробегаем массив
     {
         if (b[i] == 0) {n++;}                                        //Условие при котором находятся нулевые элементы       
         else
       {
           if (b[i] > 0) {p++;}                                        //Условие при котором находятся положительные элементы
           else {o++;}                                                //Все остальные элементы считать отрицательными
       }
     }

/*Выводим результаты на экран:===================================================================================================*/
    cout << "\nНулевых элементов: " << n << endl;
    cout << "Элементов больше нуля: " << p << endl;
    cout << "Элементов меньше нуля: " << o << endl;
    cout << "\nДля выхода из программы нажмите любую клавишу...";

/*Завершаем работу программы:====================================================================================================*/
    getch();                                                        //Ожидаем нажатия клавиши
    return 0;                                                        //Завершаем работу программы с кодом 0
}


Это сообщение отредактировал(а) OuterHeaven - 5.1.2009, 01:16
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.