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

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

Войти
Регистрация
Восстановить пароль
 
Zarmung
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 3
#1

Задача из книги Липпмана - не могу написать красивый код - C++

05.08.2013, 18:32. Просмотров 774. Ответов 13
Метки нет (Все метки)

Упражнение:
Напишите программу, запрашивающую у пользователя несколько значений и отображающую сообщение о количестве отрицательных чисел среди них.

У меня получилось, но какой-то уродливый код
C++ (Qt)
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
#include<iostream>
 
using namespace std;
 
int main()
{  
   cout << "Enter numbers:" << endl;
   int num(0);
   int val,val2,val3;
   cin >> val >> val2 >> val3;
   if (val < 0)
   {
    ++num;
   }
    if (val2 < 0) 
   {
    ++num;
   }
   if (val3 < 0) 
   {
    ++num;
   }
   cout << num << endl;
     return 0;
}
Может у кого есть более интересные варианты?
зы: использовать только операторы for и if
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2013, 18:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача из книги Липпмана - не могу написать красивый код (C++):

Не могу разобраться с примером из книги Липпмана - C++
#include &lt;iostream&gt; #include &lt;string&gt; using std::string; string &amp; shorterString(string &amp;s1, string &amp;s2) { auto &amp;r =...

Выполняя задания из книги Стенли Липпмана допустил ошибку. Не могу понять где. - C++
Выполняя задания из книги Стенли Липпмана не могу понять где ошибка в коде с оператором While /*#include&lt;iostream&gt; using namespace...

Задача из книги Дейтел-а не могу суть задания уловить - C++
Привет, всем! Хочу спросить вот о чём: в книге Дейтел Х. Дейте П. есть задача смущает меня задача из пункта b) 5 - случайную смесь...

Задача: написать программу электронной телефонной книги - C++
Ребят выручайте плиз :) Очень Очень нужна эта задачка. Задача: написать программу электронной телефонной книги. Спецификация : -...

Где взять файл Sales_item.h для книги Стенли Липпмана "C++ для начинающих" - C++
Всем привет! Изучая классы по книге Стенли Липпмана &quot;с++ для начинающих&quot;, столкнулся с такой проблемой - где взят файл Sales_item.h? Там...

Не могу написать код - C++
Есть такое задание: Задано массив a1, a2,…, a2n. Написать программу построения массивов. Я его не совсем понимаю. Надо написать...

13
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 1
05.08.2013, 18:35 #2
Ну если сугубо из Вашего кода делать, то можно так соорудить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
 
using namespace std;
 
int main()
{  
   cout << "Enter numbers:" << endl;
   int num(0);
   int val,val2,val3;
   cin >> val >> val2 >> val3;
    num = ( val < 0 ) + ( val2 < 0 ) + ( val3 < 0 ) ;
   cout << num << endl;
     return 0;
}
0
alex1392
31 / 31 / 3
Регистрация: 24.07.2013
Сообщений: 187
05.08.2013, 18:38 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
void main()
{
    int a[5];
    for(int i=0;i<5;i++)
    {
        cout<<"enter value#"<<i<<"=";
        cin>>a[i];
    }
    for(int i=0;i<5;i++)
    {
        if(a[i]>=0) continue;
        else cout<<"value #"<<i<<"="<<a[i]<<endl;
    }
}
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.08.2013, 18:39 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main()
{
    std::cout << "input numbers, '0' for stop.\n";
    int neg = 0;
    for(;;)
    {
        int n;
        std::cin >> n;
        if( !n ) break;
        if( n < 0 ) ++neg;
    }
 
    std::cout << "negatives: " << neg << std::endl;
 
    return 0;
}
0
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 1
05.08.2013, 18:45 #5
Как вариант:
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
int main(){
    std::cout << "Input numbers ->" ;
    std::cout << "Negatives: " << std::count_if ( std::istream_iterator < int > ( std::cin ) , std::istream_iterator < int > ( ) , std::bind2nd (std::less < int > ( ) , 0 ) ) << std::endl ;
}
1
Tulosba
05.08.2013, 18:48
  #6

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Как вариант:
Цитата Сообщение от Zarmung Посмотреть сообщение
использовать только операторы for и if
ТС с ума сойдет раньше времени

0
Croessmah
05.08.2013, 18:50
  #7

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
ТС с ума сойдет раньше времени
так они есть, только где-то внутри
Цитата Сообщение от Zarmung Посмотреть сообщение
зы: использовать только операторы for и if
а операторы << и >> нельзя использовать?

0
Zarmung
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 3
05.08.2013, 19:39  [ТС] #8
Всем спасибо кто отозвался, а то из головы целый день не выходит эта задача
Tulosba, отличный 100% работающий вариант, да еще и с дополнительным интерфейсом; в остальных кое где, что-то добавил или убрал и все ок ... может из-за компилятора Dev C++ не все варианты заработали.

Croessmah, а как получить результат в вашем варианте?!
0
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
05.08.2013, 19:55 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    int value;
    int number = 5;
    int counter = 0;
    
    for ( int i = 0; i < number; i++ )
    {
        cin >> value;
        
        if ( value < 0 )
            counter++;
    }
 
    cout << counter << endl;
 
    return 0;
}
0
Catstail
Модератор
22640 / 11009 / 1785
Регистрация: 12.02.2012
Сообщений: 18,170
05.08.2013, 20:24 #10
Не вполне корректно, зато чисел можно вводить сколько хочешь (в разумных пределах), разделяя их запятыми...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
int main(int argc, char* argv[])
{
    char iBuf[200];
    int i,k=0;
    for (i=0; i<200; i++) iBuf[i]=0;
    printf("Enter some numbers delimited by comma ...\n");
    scanf("%s",iBuf);
    for (i=0; i<strlen(iBuf); i++)
    {
        if (iBuf[i] == '-') k++;
    }
    printf("\nYou entered %d negative numbers\n",k);
    return 0;
}
1
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 1
05.08.2013, 20:24 #11
Zarmung, Введите числа через разделитель, в конце последовательности введите не число и чтение прекратится.
0
Catstail
Модератор
22640 / 11009 / 1785
Регистрация: 12.02.2012
Сообщений: 18,170
05.08.2013, 20:26 #12
Картинка:
0
Миниатюры
Задача из книги Липпмана -  не могу написать красивый код  
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
05.08.2013, 21:09 #13
Ничего смешного не получается сегодня:
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
#include<iostream>
#include<strstream>
#include<string>
using namespace std;
 
int main()
{  
cout << "Enter numbers: " << endl;
strstream inpstream;
string inpstr;
string tmpstr;
getline( cin, inpstr );
int cnt = 0;
inpstream<<inpstr;
 
while(inpstream>>tmpstr)
if(atoi(tmpstr.c_str())<0) cnt++;
if(cnt==0)cout<<"There are no negative numbers."<<endl;
else
if((cnt-1)==0)cout<<"There is "<<cnt<<" negative number has been detected."<<endl;
else
cout<<"There are "<<cnt<<" negative numbers have been detected."<<endl;
cout<<endl; 
system ("pause");
     return 0;
}
ну, почти ничего.
1
Deliv
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 7
02.04.2015, 15:01 #14
Тоже начал учить Липпмана и тоже столкнулся с этой задачей около суток мучился сейчас доперло наконец то, решил в 2 вариантах
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 #include <iostream>
int main () {
   std::cout << " vedi stol'ko xo4ew vesti zna4eniy ? ";
   int num = 0;
   std::cin >> num;
   int zn;
   int otr = 0, pol = 0;
   for (int i = 1; i <= num; i++){
       std::cin >> zn;
       if (zn > 0)
       {
            pol++;
       }
       else
       {
           otr++;
       }
   }
   std::cout << " otricatel'nix y tebya " << otr << " u poloj " << pol;
   return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~№2
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
#include <iostream>
int main () {
    int num, num1, num2;
    std:: cout << " vedi 3 znaceniy'a: " << std::endl;
    std:: cin >> num >> num1 >> num2;
    int pol = 0, otr = 0;
        if (num < 0)
        {
            otr++;
        }
        else
        {
            pol++;
        }
        if (num1 < 0) 
        {
        otr++;
        }
        else 
    {
        pol++;
    }
    if (num2 < 0)
    {
        otr++;
    }
    else
    {
        pol++;
    }
    std::cout << " polojitel'nih " << pol << " u otricatel'nih " << otr;
    return 0;
}
как то так
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 15:01
Привет! Вот еще темы с ответами:

Простейший код, которую не могу написать. - C++
Доброго времени суток. Недавно начали изучать простейшие задачи языка C. Помогите написать код программы, и объяснить решение. Как не...

Не могу додуматься как написать исходный код - C++
Пользователь в водит 3-ри числа, а программа выводит наибольшее. Пример: вводим 365, выводит 6. Код с++ Заранее огромное спасибо! :)

Не могу написать код для иерархии классов - C++
Классы: Кафедра, Студент, Персона, Группа, Подразделение, Преподаватель Запросы: • перечень студентов в указанной группе; • перечень...

Красивый код - C#
Меняете ли Вы стандартные имена переменных-контроллов и стоит ли это делать? Лично я, например, никак не могу себя приучить это делать, а...


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

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

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