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

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

Восстановить пароль Регистрация
 
Zarmung
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 3
05.08.2013, 18:32     Задача из книги Липпмана - не могу написать красивый код #1
Упражнение:
Напишите программу, запрашивающую у пользователя несколько значений и отображающую сообщение о количестве отрицательных чисел среди них.

У меня получилось, но какой-то уродливый код
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 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
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 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
Модератор
 Аватар для Catstail
21502 / 10255 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
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
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
05.08.2013, 20:24     Задача из книги Липпмана - не могу написать красивый код #11
Zarmung, Введите числа через разделитель, в конце последовательности введите не число и чтение прекратится.
Catstail
Модератор
 Аватар для Catstail
21502 / 10255 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
05.08.2013, 20:26     Задача из книги Липпмана - не могу написать красивый код #12
Картинка:
Миниатюры
Задача из книги Липпмана -  не могу написать красивый код  
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,722
Записей в блоге: 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++ Не могу додуматься как написать исходный код
Не могу написать код C++

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

Или воспользуйтесь поиском по форуму:
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     Задача из книги Липпмана - не могу написать красивый код
Ответ Создать тему
Опции темы

Текущее время: 11:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru