Подгонка под требования исходного кода С++...
Здравствуйте! Задали в институте написать прогу на лаб. работу:) Прогу сделал, работает как часы:) Есть одно требование: оформить согласно требованиям исходного кода. В нете искал, ничего конкретного не нашел…Помогите, или подскажите как это сделать:)
// derevo.cpp: определяет точку входа для консольного приложения.
//
#include “stdafx.h”
#include <stdio.h>
#include <conio.h>
#include <clocale>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, “Russian”);
setlocale(LC_ALL, “rus”);
int x = 0, y = 0, z = 0;
printf(“Программа для конвертации длины\n”);
printf(“Введите длину в миллиметрах:”);
scanf(“%d”, &x);
while (x < 1000)
{
printf(“Пожалуйста, введите верное значение(не менее 1000 миллиметров):”);
scanf(“%d”, &x);
if (x >= 1000)
{
break;
}
}
y = x / 1000;
z = x % 1000;
printf(“В %d миллиметрах %d метров и %d сантиметров\n”, x, y, z);
getch();
return 0;
}
гуглите “с++ styling guide”
Существуют разные рекомендации к организацию комментариев и блоков кода. Все направленны на то, чтобы другими людями было легко читабельно и понимабельно.
Кратко: каждые новые операторные скобки и все, что внутрях - на одну табуляцию вправо сдвинуть
В начале кода - подробный коммент в рамке вида
//****************
//*______________*
//*______________*
//*______________*
//****************
в котором написать: кто, когда, что и для чего.
функции разделить пустыми строками, чтоб в кучу не липло. В коде комментарии по вкусу, в принципе в вашей поделке особо нечего подписывать.
PS: и уточните, может есть методичка по конкретно вашей работе, где указаны требования к оформлению?
Речь могла идти про форматирование кода для удобства чтения + комментирование.
Еще так бывает.
/**
* two variables summation
* @param integer a
* @param integer b
* @return integer sum
*/
В IDE удобно - при наведении на функцию всплывает “автодокументация”, которая закреплена за функцией. И можно генерировать документацию автоматически по всем комментариям.
х.з. насчет оформления, я не вижу именно ++ фишек. где классы? =)
не вижу именно ++ фишек. где классы? =)
Да вы что, это ж крутое нелинейное программирование! Аж целый цикл и целое аж одно условие 😃
Шоб си фигней не мучить, такое лучше на яваскрипте впреть писать.
Табуляцию в функциях и if-ах проставить может быть?
Шоб си фигней не мучить, такое лучше на яваскрипте впреть писать.
На ассемблере.
Шоб си фигней не мучить, такое лучше на яваскрипте впреть писать.
Люди!😃 Мне не нужна ява или ассемблер! Препод сказал с++, значит с++:) Постоянно на всех форумах хотят как лучше:)
Я в вот так сделал
//****************
//*Копирайт Иван Иваныча Цукрберга*
//*Программа предназанчена для коммерческого использования.*
//*GPL - тупиковая ветвь эволюции*
//****************
#include <stdio.h>
int main(void)
{
int x=0, y=0, z=0;
printf("Программа для конвертации длины\n");
printf("Введите длину в миллиметрах:");
scanf("%d", &x);
while (x < 1000)
{
printf("Пожалуйста, введите верное значение(не менее 1000 миллиметров):");
scanf("%d", &x);
if (x >= 1000)
{
break;
}
}
y = x / 1000;
z = x % 1000;
printf("В %d миллиметрах %d метров и %d сантиметров\n", x, y, z);
return 0;
}
[root@newsip dia]# gcc -E ddd.c -o ddd.cpp
[root@newsip dia]# gcc -x cpp-output -c ddd.cpp
[root@newsip dia]# gcc ddd.o -o ddd
[root@newsip dia]# ./ddd
Программа для конвертации длины
Введите длину в миллиметрах:123
Пожалуйста, введите верное значение(не менее 1000 миллиметров):12345
В 12345 миллиметрах 12 метров и 345 сантиметров
Только вот в 12345 мм никак не 12 метров и 345 сантиметров 😃
Также можно убрать лишний ввод, если после первого есть проверка в цикле. Пусть во время проверки и запрашивает первый ввод, только ругательство первый раз не выводит.
Где-то так (если еще актуально)
#include <iostream>
#include <conio.h>
int main (void)
{
int x=0;
int y=0;
int z=0;
// cout << "Программа для конвертации длины" << endl;
while(x<1000)
{
cout << "Введите длину в миллиметрах, не менее 1000" << endl;
cin >> x;
if(x>=1000)
{
break;
}
}
cout << "В " << x << "мм ";
y=x/1000;
z=(x%1000)/10;
x=x%10;
cout << y << "м и " << z << "см и " << x << "мм" << endl;
getch();
}
Только вот в 12345 мм никак не 12 метров и 345 сантиметров
Вот спасибо, что-то протупил, не заметил😁
Как же любят все усложнять в институтах. Все делается одной строчкой:
[root@newsip dia]# cat dddd.php
#!/usr/bin/php
<?php
echo "В ".$argv[1]." миллиментрах ".(int)($argv[1]/1000)." метров ".(int)(($argv[1]%1000)/10)." сантиметров ".(int)($argv[1]%10)." миллиметров\n";
?>
Результат:
[root@newsip dia]# ./dddd.php 123456
В 123456 миллиментрах 123 метров 45 сантиметров 6 миллиметров
[root@newsip dia]# ./dddd.php 123412
В 123412 миллиментрах 123 метров 41 сантиметров 2 миллиметров
Если бы мыли англоговорящими, то нас бы все устроило, но мы же живем в России и язык у нас русский, поэтому:
[root@newsip dia]# cat dddd1.php
#!/usr/bin/php
<?php
global $Ne0, $Ne1, $Ne2, $Ne4;
$Ne0 = array(1 => 'метр',2 => 'метра',5 => 'метров');
$Ne1 = array(1 =>'сантиметр',2 => 'сантиметра',5 => 'сантиметров');
$Ne3 = array(1 =>'миллиметр',2 => 'миллиметра',5 => 'миллиметров');
$Ne4 = array(1 =>'миллиметре', 2 => 'миллиметрах', 5 => 'миллиметрах');
function num_125($n) {
$n100 = $n % 100;
$n10 = $n % 10;
if( ($n100 > 10) && ($n100 < 20) ) {
return 5;
}
elseif( $n10 == 1) {
return 1;
}
elseif( ($n10 >= 2) && ($n10 <= 4) ) {
return 2;
}
else {
return 5;
}
}
function metr($n) {
global $Ne0;
return $Ne0[num_125($n)];
}
function santimetr($n) {
global $Ne1;
return $Ne1[num_125($n)];
}
function millimetr($n) {
global $Ne3;
return $Ne3[num_125($n)];
}
function _millimetr($n) {
global $Ne4;
return $Ne4[num_125($n)];
}
echo "В ".$argv[1]." "._millimetr($argv[1])." ".(int)($argv[1]/1000)." ".metr($argv[1]/1000)." ".(int)(($argv[1]%1000)/10)." ".santimetr($argv[1]%1000/10)." ".(int)($argv[1]%10)." ".millimetr($argv[1]%10)."\n";
?>
и результат:
[root@newsip dia]# ./dddd1.php 15721
В 15721 миллиметре 15 метров 72 сантиметра 1 миллиметр
[root@newsip dia]# ./dddd1.php 1312
В 1312 миллиметрах 1 метр 31 сантиметр 2 миллиметра
Для пхп веб-сервер навостреный нужен (если по роду деятельности уебом не занимается - его под рукой может не быть 😃)
Поэтому таки лучше на яваскрипте. На js можно быдлокодить на любом девайсе, на котором есть тупо бравузер 😃 Ну и редактор текстовый. Т.е. фактически никакого спец софта вообще не требуется!
Ну пхп в данном контексте не актуально, просто я с ним больше вожусь. Я к тому, что можно добавить несколько функций в программу топикстартера, для придания ей юзабельности что-ли. Если бы я был преподавателем, то мне понравилась бы такая вариация на свободную тему. Потом сделал бы свою библиотеку и инклюдил в проекты - они бы разговаривали по русски. А проектов будет много. 😃 Вообще не важно на каком языке программировать, главное понимать сам процесс. А так - справочник по синтаксису и вперед. Я в свое время так скрипт на tcl писал для кошки 5350 на обработку воип звонков.
Если бы я был преподавателем, то мне понравилась бы такая вариация на
А если не секрет, есть опыт преподавания? 😃
Ты удивишься, но даже среди группы технарей (первый курс) нынче такой тупняк собирается, что для них с = a+b оказывается непомерной задачей при том, что все на лекции с живыми ноутами сидят! Тупо не могут даже откомпилировать и запустить 😃 Конечно, всегда есть пара нормальных человек в потоке, им от зевоты рот разрывает. С остальными же можно му9охатся весь семестр и едва дойти до циклов 😵
Вообще не важно на каком языке програ…
Это для тех, кто уже вник и-или работает. Т.е. для программистов.
А для студентов и школьников - для них тоже неважно, на каком языке пытаться программировать: одинаково криво и неуверенно получается на любом 😃
Не, опыта преподавания у меня нет. 😃 А вот по работе частенько приходится что-то набросать на баше/пхп/перле. Сейчас вот ардуино мучаю, въезжаю в AVR GCC.
Не надо ардуину, плохой выбор! В силу кучи готовых решений, слишком тупо и для школоты 😃 Сейчас перспективно осваивать семейство STM-32. Для программиста ничего сложного нет.
Ардуину выбрал по причине того, что получается готовая отладочная плата. Разобраться в схемотехнике, понять основы. А вообще ардуино - это же только бутлоадер в атмеге, так что всегда есть возможность перешить контроллер. Вообще это все игрушки, но браться сразу за серьезный микроконтроллер - думаю что не осилю. 😃
Открываю страшный секрет: готовые отладочно-эволюционные платы есть на базе ЛЮБЫХ микроконтроллеров 😃 И бут-лоадеры, и бортовые юсб - тоже уже стали стандартом современных контроллеров.
Снова обращаюсь к вашей помощи!😃 Делаю ту же программу… Дело в том что при вводе правильного значения, приходится вводить число два раза(сделал отсечку на неправильные значения и буквы)
// derevo.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <clocale>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "rus");
int x = 0, y = 0, z = 0;
printf("Введите длину в миллиметрах:\n");
for(;;)
{printf ("Пожалуйста! Вводите только цифровые значения не менее 1000 мм!\n");
scanf ("%d", &x);
if ((scanf("%d", &x) && (x>=1000)))
{
break;
}
fflush(stdin);
}
y = x / 1000;
z = (x % 1000) / 10;
printf("В %d миллиметрах %d метров и %d сантиметров\n", x, y, z);
getch();
return 0;
}
Нафига
if ((scanf(“%d”, &x) && (x>=1000)))
уже ж ввели x один раз? Или уберите первый scanf…