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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
jlw
6 / 6 / 0
Регистрация: 30.09.2010
Сообщений: 18
#1

Правильность и рациональность кода - C++

30.09.2010, 19:30. Просмотров 1758. Ответов 39
Метки нет (Все метки)

Всем привет! Вот уже прошло 24 часа с момента начала моего обучения С++ . До этого имел дело с такими языками, как Pascal и PHP. Ко вторнику нужно решить 30 задач. Пока решил 2 и хотелось бы узнать, насколько правильно и оптимально я это сделал, чтобы далее двигаться более рациональным путем. Может быть пропущены какие-то важные моменты? Кусок кода можно переписать гораздо легче? Или я вообще сделал "как не следует"? Прошу ответить на эти вопросы! А теперь перейдем к самим задачам.


ограничение времени на тест: 1 сек.
ограничение памяти на тест: 4096 KB.
ввод: input.txt
вывод: output.txt

Совсем скоро в Берляндии состоится первый традиционный Всеберляндский маскарад. Правительство Берляндии в срочном порядке сформировало министерство по подготовке маскарада. Перед министерством встала сложная задача: известно, что 1 метр ткани стоит P бурлей, а на пошив костюмов членам правительства необходимо приобрести N метров ткани. Ваша задача, сколько бурлей потратит министерство на покупку ткани.

Входные данные
В первой строке входного файла записано два натуральных числа через пробел P и N (1<=P<=100, 1<=N<=100).

Выходные данные
Выведите единственное натуральное число - необходимое количество бурлей на покупку N метров ткани по P бурлей за метр.
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
// Реализация в VS2008
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main() {
    FILE *input, *output;
    char buf[8] = buf2[8] = buf3[8] = out[8] = "";
    int p, n, g = 0;
    
    input = fopen("input.txt", "r" );
    fgets(buf, 8, input);
    fclose(input);
    
    for (int i = 0; i < int(strlen(buf)); i++) {
        if (buf[i] != 32) {
            buf2[i] = buf[i];
        } else {
            for (int z = i+1; z < int(strlen(buf)); z++) {
                buf3[g] = buf[z];
                g++;
            }
            break; 
        }
    }
    
    p = atoi(buf2);
    n = atoi(buf3);
        
    output = fopen("output.txt", "w" );
    itoa((p*n),out,10);
    fputs(out, output);
    fclose(output);
}
ограничение времени на тест: 1 сек.
ограничение памяти на тест: 65536 KB.
ввод: input.txt
вывод: output.txt

Найдите количество натуральных нечетных чисел меньших N.

Входные данные
Во входном файле записано целое число N (-1000<=N<=1000).

Выходные данные
Выведите искомое число.
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
// Реализация в wxDev C++
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main() {
    FILE *input, *output;
    unsigned short n;
    int z = 0;
    char buffer[6], out[5];
    
    input = fopen("input.txt", "r" );
    fgets(buffer, 6, input);
    fclose(input);
 
    n = atoi(buffer);
    
    if (n > 0 and n <= 1000) {
        for (int i = n; i > 0; --i) {
            if (i % 2 != 0) {
                ++z;
            }
        }
    } else {
        z = 0;
    }
    
    output = fopen("output.txt", "w" );
    fputs(itoa(z,buffer,10), output);
    fclose(output);
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2010, 19:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильность и рациональность кода (C++):

Правильность кода - C++
Решал вот эту функцию, которая прикреплена ниже, дошел до такого кода: #include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot; #include &quot;cmath&quot; ...

Правильность кода программы - C++
Здравствуйте. Подскажите правильно ли я записал код по условию, а то нет возможности спросить у кого нибудь как кроме здесь: Составить...

Проверьте правильность кода - C++
Здравствуйте. Задали рассчитать площадь треугольника по заданным параметрам: сторонам треугольника ABC и радиусу описанной окружности....

Проверка на правильность кода - C++
// C++ 6.6 I.12.cpp : Defines the entry point for the console application. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

проверка кода на правильность - C++
Используя оператор цикла while с условием и постусловием, решить следующие задачу: найти сумму ряда с точностью е = 10-4, общий член...

Проверьте правильность кода - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; int main() { setlocale(LC_ALL, &quot;Russian&quot;); int p; float q, n,...

39
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.09.2010, 23:27 #16
Код
if (p < 1 or p > 100 or n < 1 or n > 100)
Это у вас работает? Как бы или в C/C++ - ||
1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
30.09.2010, 23:32 #17
Цитата Сообщение от Lavroff Посмотреть сообщение
Код
if (p < 1 or p > 100 or n < 1 or n > 100)
Это у вас работает? Как бы или в C/C++ - ||
Это видимо стандарт 0x таким получился пока мы не видели
1
jlw
6 / 6 / 0
Регистрация: 30.09.2010
Сообщений: 18
30.09.2010, 23:32  [ТС] #18
работает)
т.е. в с++ "or" использовать не следует?
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
30.09.2010, 23:34 #19
Цитата Сообщение от jlw Посмотреть сообщение
работает)
т.е. в с++ "or" использовать не следует?
Вообще-то в c++ такого оператора вообще нет...
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.09.2010, 23:35 #20
И как это работает? оО
0
jlw
6 / 6 / 0
Регистрация: 30.09.2010
Сообщений: 18
30.09.2010, 23:35  [ТС] #21
а в С ? но как ни странно прокатило, компилятор wxDev C++ .
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.09.2010, 23:37 #22
jlw, О_о
or прокатило в wxDev C++? О_о
0
NightmareZ
1360 / 568 / 37
Регистрация: 31.03.2009
Сообщений: 1,938
30.09.2010, 23:38 #23
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от gooseim Посмотреть сообщение
Вообще-то в c++ такого оператора вообще нет...
Ну вообще-то есть, просто не все об этом знают

http://www.cppreference.com/wiki/operator_precedence


C++ defines keywords to act as aliases for a number of symbols that function as operators: and (&&), bitand (&), and_eq (&=), or (||), bitor (|), or_eq (|=), xor (^), xor_eq (^=), not (!), not_eq (!=), compl (~). These are parsed exactly like their symbolic equivalents, and can be used in place of the symbol they replace. It is the character or string that is aliased, not the operator. As a result, bitand is used to replace the bitwise AND operator, the address-of operator, and can be used to specify reference types (e.g. int bitand ref = n; ).

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
5
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.09.2010, 23:40 #24
NightmareZ, Омфг. И правда. Но MSVS это не проглатывает.
0
NightmareZ
1360 / 568 / 37
Регистрация: 31.03.2009
Сообщений: 1,938
30.09.2010, 23:42 #25
Цитата Сообщение от Lavroff Посмотреть сообщение
Но MSVS это не проглатывает.
Ну это да.
0
jlw
6 / 6 / 0
Регистрация: 30.09.2010
Сообщений: 18
30.09.2010, 23:44  [ТС] #26
Буду знать)

А в остальном код хорош?)
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.09.2010, 23:47 #27
Вполне. Использование using namespace и return 0 - несколько холливарная тема.

NightmareZ, не знаешь почему в MSVS это не катит?
1
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
30.09.2010, 23:48 #28
Ну вообще-то есть, просто не все об этом знают
Действительно, даже в стандарте оператор or прописан. Этого я не знал.
0
NightmareZ
1360 / 568 / 37
Регистрация: 31.03.2009
Сообщений: 1,938
30.09.2010, 23:48 #29
Цитата Сообщение от Lavroff Посмотреть сообщение
NightmareZ, не знаешь почему в MSVS это не катит?
Неа, понятия не имею.
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
30.09.2010, 23:51 #30
jlw, код вполне хороший.
1
30.09.2010, 23:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2010, 23:51
Привет! Вот еще темы с ответами:

Проверить правильность кода (задача, 1 курс) - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; int main() { float x = -2.8, b, y = 1; float max = ((1 + (pow(x, 2))...

Проверьте правильность написания кода и коментарии - C++
Задача: Написать программу которая принимает в качестве аргумента имя файла f с русским текстом и печатает его в точности по одному...

Проверте, пожалуйста, правильность программного кода - C++
#include &quot;stdafx.h&quot; #include &quot;string.h&quot; #include &quot;iostream&quot; using namespace std; int main() { char text; char*slova; ...

Метод хорд, проверьте правильность кода - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; double func(double x) { return x*x*x+20*x+8*(log(2+10*sqrt(3))); } double...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

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