Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.51/47: Рейтинг темы: голосов - 47, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 19

Все отрицательные среди данных числа заменить на 0

12.03.2014, 15:57. Показов 10970. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны четыре числа. Все отрицательные среди них числа заменить на 0
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.03.2014, 15:57
Ответы с готовыми решениями:

Найти наибольший элемент среди элементов диагонали и заменить им все отрицательные элементы
в матрице А размерностью 5*5 найти наибольший элемент среди элементов диагонали и заменить им все отрицательные элементы Посчитать...

Заменить все отрицательные числа их модулями
Помогите решить с использованием цикла While Ввести с клавиатуры 10 чисел – положительных и отрицательных. Заменить все...

Ввести с клавиатуры 10 чисел. Если среди них есть числа большие 15, заменить их на 15. Напечатать все полученные числа.
Помогите решить задачу в Turdo C++, там где используется printf scanf: Ввести с клавиатуры 10 чисел. Если среди них есть числа большие...

40
Студент
 Аватар для _include
56 / 56 / 38
Регистрация: 17.09.2012
Сообщений: 292
Записей в блоге: 2
12.03.2014, 18:54
Студворк — интернет-сервис помощи студентам
Прочел я две страницы. То ли туповат, то ли вообще ничего не пойму.
Мой вариант такой:
Не смейтесь, но Grafon, не указал больше данных. Вдруг эти числа в массиве?
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
#include "stdafx.h"
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 4
 
void main()
{
    int mas[n];
    srand(time(NULL));
    for(int i =0; i < n; i++)
    {
        mas[i]=rand()%10-5;
    }
    for(int i = 0; i < n; i++)
    {
    printf(" %d ",mas[i]);
    }
    printf("\n");
    for(int i = 0; i < n; i++)
    {
        if (mas[i]<0)
        mas[i]=0;
        printf(" %d ",mas[i]);
    }
    
_getch();
}
Поправьте меня, может я вижу только верхушку айсберга?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.03.2014, 19:26

Не по теме:

Цитата Сообщение от Retyrn0 Посмотреть сообщение
привязка к 32-битности же осталась.
а у меня и не было намерения от нее избавляться..



Добавлено через 1 минуту
Цитата Сообщение от _include Посмотреть сообщение
Вдруг эти числа в массиве?
я приводил пример с массивом..
Цитата Сообщение от _include Посмотреть сообщение
Поправьте меня, может я вижу только верхушку айсберга?
нет, просто это решение "в лоб", неинтересно)

Добавлено через 1 минуту

Не по теме:

к тому же, по сути, сишный вариант.. З.Ы. math.h, как минимум, лишнее

1
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
12.03.2014, 19:56
C++
1
2
3
4
5
6
#include <iostream.h>
void main () 
{
    signed int x=-1;
    cout<<x/2<<endl;
}
Мой компьютер с Вами не согласен. По-дурости, видимо, результатом выводит 0)

Добавлено через 5 минут
Цитата Сообщение от KOPOJI Посмотреть сообщение
а у меня и не было намерения от нее избавляться..
Если уж мы решили, что это сложная задаче, то стоит подойти к ней с максимальной серьёзностью) А где жмакнуть, чтобы текст маленьким был?

Добавлено через 57 секунд
Цитата Сообщение от KOPOJI Посмотреть сообщение
это решение "в лоб", неинтересно)
+100500 =)
0
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
12.03.2014, 20:46
Ну, я тут попробовал...
Я вообще-то новичок, так что прошу сильно не пинать))
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
//Даны четыре числа. 
//Все отрицательные среди них числа заменить на 0
 
#include<stdio.h>
#include<math.h>
#include<iostream>
 
int main()
 {
          int a, b, c, d;
          printf("vvedite a \n");
          scanf("%d", &a);
          printf("vvedite b \n");
          scanf("%d", &b);
          printf("vvedite c \n");
          scanf("%d", &c);
          printf("vvedite d \n");
          scanf("%d", &d);
          
          if(a<0)
          { a=a*0; printf("a=%d \n",a); }
          else { printf("a=%d \n",a);}
          
          if(b<0)
          { b=b*0; printf("b=%d \n",b); }
          else { printf("b=%d \n",b);}
          
          if(c<0)
          { c=c*0; printf("c=%d \n",c); }
          else { printf("c=%d \n",c);}
          
          if(d<0)
          { d=d*0; printf("d=%d \n",d); }
          else { printf("d=%d \n",d);}
          
          
                   
 system("PAUSE");
 return 0;
 }
вот скрин

пишу на дев, если что)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
12.03.2014, 21:03
Кликните здесь для просмотра всего текста
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C++
1
2
#include<math.h>
#include<iostream>
они не нужны. Нужен только stdio и stdlib
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C
1
a=a*0;
бессмысленное умножение. Проще сразу присвоить ноль
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C
1
2
3
if(a<0)
* * * * * { a=a*0; printf("a=%d \n",a); }
* * * * * else { printf("a=%d \n",a);}
Дублирование кода. Прямо напрашивается дополнительная функция. К тому же, printf попросту повторяется зазря, else явно лишнее.
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
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a, b, c, d;
 
    printf("vvedite a \n");
    scanf("%d", &a);
    printf("vvedite b \n");
    scanf("%d", &b);
    printf("vvedite c \n");
    scanf("%d", &c);
    printf("vvedite d \n");
    scanf("%d", &d);
 
 
    if(a<0)
        a=0;
    printf("a=%d \n",a);
 
    if(b<0)
        b=0;
    printf("b=%d \n",b);
 
    if(c<0)
        c=0;
    printf("c=%d \n",c);
 
    if(d<0)
        d=d*0;
    printf("d=%d \n",d);          
 
    system("PAUSE");
    return 0;
}
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
#include <stdio.h>
#include <stdlib.h>
 
void print_val(int, const char);
 
int main()
{
    int a, b, c, d;
 
    printf("vvedite a \n");
    scanf("%d", &a);
    printf("vvedite b \n");
    scanf("%d", &b);
    printf("vvedite c \n");
    scanf("%d", &c);
    printf("vvedite d \n");
    scanf("%d", &d);
 
    print_val(a, 'a');
    print_val(b, 'b');
    print_val(c, 'c');
    print_val(d, 'd');
 
    system("PAUSE");
    return 0;
}
 
void print_val(int x, const char c)
{
    printf("%c=%d \n", c, (x < 0 ? 0 : x));
}
или вообще все раскидать
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 <stdio.h>
#include <stdlib.h>
 
void get_val(int *, const char);
void print_val(int, const char);
 
int main()
{
    int a, b, c, d;
 
    get_val(&a, 'a');
    get_val(&b, 'b');
    get_val(&c, 'c');
    get_val(&d, 'd');
 
    print_val(a, 'a');
    print_val(b, 'b');
    print_val(c, 'c');
    print_val(d, 'd');
 
    system("PAUSE");
    return 0;
}
 
void get_val(int *x, const char c)
{
    printf("vvedite %c \n", c);
    scanf("%d", x);
}
void print_val(int x, const char c)
{
    printf("%c=%d \n", c, (x < 0 ? 0 : x));
}

Цитата Сообщение от Richie_Bolat Посмотреть сообщение
вот скрин
Прикрепляйте изображения к сообщениям
1
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
12.03.2014, 21:39
KOPOJI, я прямо выговор получил)) извините, если что))

вот скрин -

Цитата Сообщение от KOPOJI Посмотреть сообщение
бессмысленное умножение. Проще сразу присвоить ноль
ну, я сначала хотел просто присвоить, но потом почему-то подумал, что так будет проще для компилятора))

кстати, я так полагаю задача не так уж проста как кажется и решается по другому?))

вот скрин -
Миниатюры
Все отрицательные среди данных числа заменить на 0  
0
12.03.2014, 21:47

Не по теме:

Цитата Сообщение от Richie_Bolat Посмотреть сообщение
я прямо выговор получил)) извините, если что))
не, это просто небольшая помощь. Я не шибко спец в Си..

решений уйма. Посмотрите предыдущие страницы

0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
12.03.2014, 23:09
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
полагаю задача не так уж проста как кажется
Нет. Задача вполне простая) Просто программисты начинают использовать специфический юмор, Вы поймёте очень скоро, не обижайтесь)
1
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
13.03.2014, 19:35
Retyrn0, ок) я не обижаюсь, что Вы? Спасибо за разьяснение) теперь буду знать) ох.. надеюсь, что я быстро привыкну к этой пока что не до конца понятной, но очень интересной среде=)
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
13.03.2014, 21:42
Если серьёзно, то
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
a=a*0;
лучше
C++
1
a=0;
Заставлять процессор умножать, зная, что в результате получим ноль - не комильфо. Лучше тупо приравнять(и даже быстрее). Умножение я использовал чтобы избавиться от
C++
1
if()
Остальные...ну я не знаю зачем они умножали)

Добавлено через 42 секунды
Ну и соответственно b,c,d - то же самое.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
13.03.2014, 21:45
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Остальные...ну я не знаю зачем они умножали)
ну так наверно, за тем же
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.03.2014, 21:48
Цитата Сообщение от Retyrn0 Посмотреть сообщение
ну я не знаю зачем они умножали)
для сокращения. Да и интереснее же.. Ну а по факту, результат проверки условия - целое число. Если честно, не знаю, как в плюсах (хотя cout условия выдает тоже число), но в си до последнего стандарта (вроде до последнего) вообще не было логических типов. 0 - ложь, отличные от 0 - истина. Если рассматривать с такой стороны, то добавлять явную проверку if, возможно, и не имеет смысла..
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
13.03.2014, 21:54
Цитата Сообщение от KOPOJI Посмотреть сообщение
Если честно, не знаю, как в плюсах (хотя cout условия выдает тоже число), но в си до последнего стандарта (вроде до последнего) вообще не было логических типов. 0 - ложь, отличные от 0 - истина.
в плюсах появился тип bool который имеет два значения false и true

при приведению к int false=0 true=1
например вот такой код
C++
1
int m= !!k;
запишет в m 0 если k лежит 0
и 1 если в k отличное от нуля число
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
13.03.2014, 21:57
Цитата Сообщение от KOPOJI Посмотреть сообщение
добавлять явную проверку if, возможно, и не имеет смысла
Действительно. Обсуждал тему замены условий и ветвлений в GP GPU - скорее всего там особенно выгодно пользоваться математикой вместо условий - архитектура не очень дружит с ветвлением кода по понятным причинам, а так вроде должен прирост скорости наблюдаться, в сравнении с ветвлениями.
Но достаточно не удобная и не понятная эта математическая подмена для большинства смертных)

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
ну так наверно, за тем же
Я не взялся отвечать за всех, в том числе за ТС, который написал
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
if(a<0)
{ a=a*0;
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6725 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
13.03.2014, 22:04
Цитата Сообщение от ValeryS Посмотреть сообщение
в плюсах появился тип bool
да это я знаю, что он появился. В си тоже появился в C99.. Просто как-то не вдавался в подробности того, что именно будет в плюсах в результате условия - булево или же int. Но, к примеру, код
C++
1
std::cout << (1 < 1);
выдает 0, а не false. И, например, в яве или шарпе не получится написать нечто наподобие while(1), только выражения, результатом которых будет true/false или сами эти значения - они требуют четко "только boolean".. C/C++ в этом плане "помягче"

Добавлено через 2 минуты
другое дело - что там "под капотом": boolean или же int..) Проверять лень
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
13.03.2014, 22:09
Цитата Сообщение от KOPOJI Посмотреть сообщение
выдает 0, а не false.
потому что приводится к int
Цитата Сообщение от KOPOJI Посмотреть сообщение
И, например, в яве или шарпе не получится написать нечто наподобие while(1), только выражения, результатом которых будет true/false или сами эти значения - они требуют четко "только boolean".. C/C++ в этом плане "помягче"
видать ужесточили и вот это
Цитата Сообщение от KOPOJI Посмотреть сообщение
x[i] *= x[i] >= 0;
уже не пройдет
Цитата Сообщение от KOPOJI Посмотреть сообщение
C/C++ в этом плане "помягче"
да он просто ближе к "железу"
а у процессора только нолики и единички

Добавлено через 2 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
другое дело - что там "под капотом": boolean или же int..) Проверять лень
по размеру тот же int
но компилятор его за int не считает
C++
1
2
3
4
5
bool k=false;
k++;
k++;
k++;
k--; //false
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
13.03.2014, 22:45
Цитата Сообщение от ValeryS Посмотреть сообщение
по размеру тот же int
Разве? А мой компилятор по дурости выделяет всего 1 байт под bool ;-)

Добавлено через 3 минуты
Вообще для двух вариантов true и false хватит и одного бита, но комп. не знает ничего меньше байта - приходиться 7 лишних бит за собой таскать
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
13.03.2014, 23:12
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Разве? А мой компилятор по дурости выделяет всего 1 байт под bool ;-)
теперь смотрим стандарт
[ Note: in particular, sizeof(bool) and sizeof(wchar_t) are implementation-defined.
—end note
sizeof(bool) is not required to be 1.
[Примечание: в частности, SizeOf (BOOL) и SizeOf (wchar_t) зависят от реализации. 74) -Конец примечания
SizeOf (BOOL) не требуется, чтобы быть 1.
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Вообще для двух вариантов true и false хватит и одного бита, но комп. не знает ничего меньше байта
компилятор Keil, тот что работает с микроконтроллерами, спокойно выделяет 1 бит
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 01:33
Цитата Сообщение от ValeryS Посмотреть сообщение
что работает с микроконтроллерами
Ну я поэтому и говорил слово "комп.". В моей железяке памяти мнооого и адресовать каждый бит было бы накладно чисто с технической точки зрения ;-)
Цитата Сообщение от ValeryS Посмотреть сообщение
зависят от реализации
Не вижу ни одной причины добавлять ещё по 16 бит к остальным 7 болтающимся за единственным несущим информацию, но раз стандарт так говорит, то ладно. Мне просто повезло с выбором платформы, хотя адресация каждого бита - очень заманчивая штука, мне часто её не хватает. Может на днях разработают железки, которые смогут так делать, а иначе зачем жить =)

Добавлено через 1 минуту
64-битные адреса уже пользуют, может совершат 8-ми кратную детализацию памяти...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
14.03.2014, 07:03
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Не вижу ни одной причины добавлять ещё по 16 бит к остальным 7 болтающимся за единственным несущим информацию,
ну вот тебе одна из них
выравнивание памяти, процессору удобней работать с адресами кратными 2 / 4 чем с каждым байтом

Добавлено через 7 минут
Цитата Сообщение от Retyrn0 Посмотреть сообщение
хотя адресация каждого бита - очень заманчивая штука, мне часто её не хватает.
ну адресация,не адресация, а работать с битами можно, посмотри "битовые поля"
http://www.c-cpp.ru/books/bitovye-polya
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2014, 07:03

Ввести с клавиатуры 10 чисел. Если среди них есть числа, большие 15, заменить их на 15. Напечатать все полученные числа
Ввести с клавиатуры 10 чисел. Если среди них есть числа, большие 15, заменить их на 15. Напечатать все полученные числа.

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

Заменить в одномерном числовом массиве все отрицательные числа на нули
Заменить в одномерном числовом массиве все отрицательные числа на нули. Программа написана на Паскале, помогите, пожалуйста, переделать...

Даны действительные числа. Заменить все отрицательные элементы их квадратами
Я новичок в программировании, помогите. Даны действительные числа А1....,А18. Заменить все отрицательные элементы их квадратами и вывести...

Все отрицательные числа в массиве заменить минимальным значением элемента
Есть массив из n-чисел. Все отрицательные числа в нем заменить минимальным значением элемента этого массива


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru