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

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

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

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

05.08.2013, 18:32. Просмотров 760. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2013, 18:32     Задача из книги Липпмана - не могу написать красивый код
Посмотрите здесь:

Не могу разобраться с примером из книги Липпмана - 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++
Ребят выручайте плиз :) Очень Очень нужна эта задачка. Задача: написать программу электронной телефонной книги. Спецификация : -...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 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;
}
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;
    }
}
Tulosba
:)
Эксперт С++
4392 / 3235 / 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;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 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 ;
}
Tulosba
05.08.2013, 18:48
  #6

Не по теме:

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

Croessmah
05.08.2013, 18:50
  #7

Не по теме:

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

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

Croessmah, а как получить результат в вашем варианте?!
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;
}
Catstail
Модератор
22457 / 10862 / 1769
Регистрация: 12.02.2012
Сообщений: 17,989
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;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
05.08.2013, 20:24     Задача из книги Липпмана - не могу написать красивый код #11
Zarmung, Введите числа через разделитель, в конце последовательности введите не число и чтение прекратится.
Catstail
Модератор
22457 / 10862 / 1769
Регистрация: 12.02.2012
Сообщений: 17,989
05.08.2013, 20:26     Задача из книги Липпмана - не могу написать красивый код #12
Картинка:
Миниатюры
Задача из книги Липпмана -  не могу написать красивый код  
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6423 / 3062 / 304
Регистрация: 04.12.2011
Сообщений: 8,351
Записей в блоге: 3
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;
}
ну, почти ничего.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 15:01     Задача из книги Липпмана - не могу написать красивый код
Еще ссылки по теме:

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

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

Решение СЛАУ методом простых итераций, задача решена, только написать код осталось - C++
решить СЛАУ с точностью е=10 в степени(-4) 4*x1-x2-x3=2 x1+5*x2-2*x3=4 x1+x2+4*x3=6 Система из 3-х уравнений, с 3...

Не могу найти ошибку. Нужно написать функцию обмена значениями для 2 целых чисел. Вот мой код - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include&lt;iostream&gt; using namespace std; void F(int a, int b) { a = a + b; b = a -...


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

Или воспользуйтесь поиском по форуму:
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;
}
как то так
Yandex
Объявления
02.04.2015, 15:01     Задача из книги Липпмана - не могу написать красивый код
Ответ Создать тему
Опции темы

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