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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
#1

Деление - C++

20.03.2011, 16:27. Просмотров 2216. Ответов 7
Метки нет (Все метки)

Оригинал условия тут
Входной файл input.txt:
Первая строка-количество фирм
Вторая строка-доходы фирм
Третья строка-налог на фирмы(в процентах)
Выходной файл:номер фирмы с наибольшим доходом с учетом налога.
Пример
input.txt:
3
100 1 50
0 100 3
output.txt:3
При вычислении дохода с учетом налога у меня стабильно получается 0...
Пробовал с int,float и double
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int a,i,c[100],d[100],b=0;
double e=0;
scanf("%i",&a);
for (i = 0; i < a; i++) scanf("%i",&c[i]);
for (i = 0; i <a; i++){
    scanf("%i",&d[i]);
    if ((double)(d[i]-c[i]*(d[i]/100))>e) {
        b=i+1; e=(double)(d[i]-c[i]*(d[i]/100));
    }
}
printf("%i",b);
return 0;}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2011, 16:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Деление (C++):

Задача про деление яблок (целочисленное деление) - C++
Ребят,помогите с задачкой,как написать input.txt и output.txt? Помогите решить задачу. C++. Заранее спасибо! N школьников делят K яблок...

Деление - C++
Надо разделить на два заданное четное натуральное число с количеством цифр меньше 100. Нужно использовать не арифметические, а символьные...

Деление в С++ - C++
Добрый день :) Написал программу, которая будет вычислять винрейт в дота 2: int win; int lose; int all(0); double winrate(0.0); ...

Деление на 0 - C++
задача: Условие Имеется N человек и матрица А размера N´N. Элемент A матрицы равен 1, если человек i знаком с человеком j (если...

деление на 0 - C++
у меня есть код задачи .. помогите пожалуйста.. надо переделать код, чтобы в 14 строчке (case '/': cout&lt;&lt;&quot;4astka\t&quot;&lt;&lt;b/c&lt;&lt;endl; break;)...

Деление - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;conio.h&gt; using namespace std; char *fortunes = {&quot;Its ok\n&quot;, &quot;Very good\n&quot;,...

7
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
20.03.2011, 16:29 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var n, i, j, m: word;
v, p, t: array [0..100] of cardinal;
inf, outf: text;
 
begin
assign(inf, 'INPUT.TXT'); reset(inf);
assign(outf, 'OUTPUT.TXT'); rewrite(outf);
 
readln(inf, n);
for i := 1 to n do read(inf, v[i]); readln(inf);
for i := 1 to n do read(inf, p[i]);
for i := 1 to n do t[i] := v[i] * p[i]; t[0] := 0;
for i := 1 to n do if t[i] > t[m] then m := i;
write(outf, m);
 
close(inf);
close(outf);
end
что вы хотели тем кодом сказать, так и не понял
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.03.2011, 16:33  [ТС] #3
Цитата Сообщение от iama Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var n, i, j, m: word;
v, p, t: array [0..100] of cardinal;
inf, outf: text;
 
begin
assign(inf, 'INPUT.TXT'); reset(inf);
assign(outf, 'OUTPUT.TXT'); rewrite(outf);
 
readln(inf, n);
for i := 1 to n do read(inf, v[i]); readln(inf);
for i := 1 to n do read(inf, p[i]);
for i := 1 to n do t[i] := v[i] * p[i]; t[0] := 0;
for i := 1 to n do if t[i] > t[m] then m := i;
write(outf, m);
 
close(inf);
close(outf);
end
что вы хотели тем кодом сказать, так и не понял
Или я ослеп, или это код паскаля в ветке с++...
Насколько я помню, в паскале нет проблем с делением, int там не округляется=\
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
20.03.2011, 16:37 #4
diagon, какое деление? мы точно об одной программе говорим?

(это толстый намек, на то, что делить на 100 необязательно)
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.03.2011, 16:40  [ТС] #5
Точно об одной...
Чтобы найти доход фирмы с учетом налога нужно из дохода вычесть доход*(процент/100)
И в этом месте у меня стабильно выходит ноль из-за (я так думаю) грубого округления int'а, хоть я и использую double.
А как тогда? Процент может быть равен нулю если что, делить на него нельзя.
0
iama
1250 / 975 / 49
Регистрация: 30.07.2010
Сообщений: 5,297
20.03.2011, 16:47 #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
main(){
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int a, i, c[100], d[100], b = 0;
scanf("%i", &a);
for (i = 0; i < a; i++) scanf("%i", &c[i]);
for (i = 0; i < a; i++) {
        scanf("%i", &d[i]);
        if (d[i]*c[i] > d[b]*c[b]) b = i;
}
printf("%i", b);
return 0;
}
1
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.03.2011, 09:40  [ТС] #7
Однако это не первый раз, когда я не могу что-то поделить в с++, используя как int так и float/double, и мне интересно, в чем причина... Гуглил, вроде все по мануалу делаю... Переменная double, перед присваиваемым выражением ставлю (double)...
Есть догадки, что, когда я ставлю перед выражением (double), оно сначала вычисляется в int(т.е. грубо округляется), и затем уже переводится в double... Но что тогда можно сделать, я не представляю, не ставить же (double)перед каждой переменной..
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
21.03.2011, 10:12 #8
diagon, Ты к (double) приводишь после деления. Во время деления компилятор думает, что числа целые, и делит их как целым положено, т.е. нацело. А уж потом приводит к (double). Нужно чтоб к каждом действии хоть один операнд был double. В твоем случае достаточно написать 100.0 - и все будет хорошо.
В утешение могу сказать, что не тебя одного мучает эта проблема, у половины форума (во всяком случае в этом разделе) по этому поводу голова болит.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2011, 10:12
Привет! Вот еще темы с ответами:

деление на 0 - C++
столкнулся с проблемой деления на 0. нужно сделать так. чтобы программа не делила на 0. по средством switch не получалась. вот код ...

Деление на 41 - C++
Надо сделать программу на C, которая печатает все пятизначные числа, которые делится из 41 и которых циклично переставляя полученные числа...

Деление - C++
Оригинальное задание звучит так: Вот, что я наваял: //The program divides the first number by the second one. //It should...

Деление на 1 - C++
Здравствуйте! В программ есть операция которая делит числа на 1, чтобы найти частоту. Так вот, например, когда я делю 1/186 ответ выдает...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
21.03.2011, 10:12
Ответ Создать тему
Опции темы

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