Подгонка под требования исходного кода С++...

tran

Здравствуйте! Задали в институте написать прогу на лаб. работу:) Прогу сделал, работает как часы:) Есть одно требование: оформить согласно требованиям исходного кода. В нете искал, ничего конкретного не нашел…Помогите, или подскажите как это сделать:)

// 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;
}

ADF

Существуют разные рекомендации к организацию комментариев и блоков кода. Все направленны на то, чтобы другими людями было легко читабельно и понимабельно.

Кратко: каждые новые операторные скобки и все, что внутрях - на одну табуляцию вправо сдвинуть
В начале кода - подробный коммент в рамке вида
//****************
//*______________*
//*______________*
//*______________*
//****************

в котором написать: кто, когда, что и для чего.

функции разделить пустыми строками, чтоб в кучу не липло. В коде комментарии по вкусу, в принципе в вашей поделке особо нечего подписывать.

PS: и уточните, может есть методичка по конкретно вашей работе, где указаны требования к оформлению?

Musgravehill

Речь могла идти про форматирование кода для удобства чтения + комментирование.
Еще так бывает.

/**
     * two variables summation
     * @param integer a
     * @param integer b
     * @return integer sum
     */

В IDE удобно - при наведении на функцию всплывает “автодокументация”, которая закреплена за функцией. И можно генерировать документацию автоматически по всем комментариям.

RW9UAO

х.з. насчет оформления, я не вижу именно ++ фишек. где классы? =)

ADF
RW9UAO:

не вижу именно ++ фишек. где классы? =)

Да вы что, это ж крутое нелинейное программирование! Аж целый цикл и целое аж одно условие 😃

Шоб си фигней не мучить, такое лучше на яваскрипте впреть писать.

XBOCTATOE

Табуляцию в функциях и if-ах проставить может быть?

ADF:

Шоб си фигней не мучить, такое лучше на яваскрипте впреть писать.

На ассемблере.

tran
ADF:

Шоб си фигней не мучить, такое лучше на яваскрипте впреть писать.

Люди!😃 Мне не нужна ява или ассемблер! Препод сказал с++, значит с++:) Постоянно на всех форумах хотят как лучше:)

XBOCTATOE

Я в вот так сделал

//****************
//*Копирайт Иван Иваныча Цукрберга*
//*Программа предназанчена для коммерческого использования.*
//*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 сантиметров 😃

ADF

Также можно убрать лишний ввод, если после первого есть проверка в цикле. Пусть во время проверки и запрашивает первый ввод, только ругательство первый раз не выводит.

Alexm12

Где-то так (если еще актуально)

#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();
}
tran
XBOCTATOE:

Только вот в 12345 мм никак не 12 метров и 345 сантиметров

Вот спасибо, что-то протупил, не заметил😁

XBOCTATOE

Как же любят все усложнять в институтах. Все делается одной строчкой:

[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 миллиметра
ADF

Для пхп веб-сервер навостреный нужен (если по роду деятельности уебом не занимается - его под рукой может не быть 😃)
Поэтому таки лучше на яваскрипте. На js можно быдлокодить на любом девайсе, на котором есть тупо бравузер 😃 Ну и редактор текстовый. Т.е. фактически никакого спец софта вообще не требуется!

XBOCTATOE

Ну пхп в данном контексте не актуально, просто я с ним больше вожусь. Я к тому, что можно добавить несколько функций в программу топикстартера, для придания ей юзабельности что-ли. Если бы я был преподавателем, то мне понравилась бы такая вариация на свободную тему. Потом сделал бы свою библиотеку и инклюдил в проекты - они бы разговаривали по русски. А проектов будет много. 😃 Вообще не важно на каком языке программировать, главное понимать сам процесс. А так - справочник по синтаксису и вперед. Я в свое время так скрипт на tcl писал для кошки 5350 на обработку воип звонков.

ADF
XBOCTATOE:

Если бы я был преподавателем, то мне понравилась бы такая вариация на

А если не секрет, есть опыт преподавания? 😃

Ты удивишься, но даже среди группы технарей (первый курс) нынче такой тупняк собирается, что для них с = a+b оказывается непомерной задачей при том, что все на лекции с живыми ноутами сидят! Тупо не могут даже откомпилировать и запустить 😃 Конечно, всегда есть пара нормальных человек в потоке, им от зевоты рот разрывает. С остальными же можно му9охатся весь семестр и едва дойти до циклов 😵

XBOCTATOE:

Вообще не важно на каком языке програ…

Это для тех, кто уже вник и-или работает. Т.е. для программистов.
А для студентов и школьников - для них тоже неважно, на каком языке пытаться программировать: одинаково криво и неуверенно получается на любом 😃

XBOCTATOE

Не, опыта преподавания у меня нет. 😃 А вот по работе частенько приходится что-то набросать на баше/пхп/перле. Сейчас вот ардуино мучаю, въезжаю в AVR GCC.

ADF

Не надо ардуину, плохой выбор! В силу кучи готовых решений, слишком тупо и для школоты 😃 Сейчас перспективно осваивать семейство STM-32. Для программиста ничего сложного нет.

XBOCTATOE

Ардуину выбрал по причине того, что получается готовая отладочная плата. Разобраться в схемотехнике, понять основы. А вообще ардуино - это же только бутлоадер в атмеге, так что всегда есть возможность перешить контроллер. Вообще это все игрушки, но браться сразу за серьезный микроконтроллер - думаю что не осилю. 😃

ADF

Открываю страшный секрет: готовые отладочно-эволюционные платы есть на базе ЛЮБЫХ микроконтроллеров 😃 И бут-лоадеры, и бортовые юсб - тоже уже стали стандартом современных контроллеров.

tran

Снова обращаюсь к вашей помощи!😃 Делаю ту же программу… Дело в том что при вводе правильного значения, приходится вводить число два раза(сделал отсечку на неправильные значения и буквы)

// 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;
}

Alexm12

Нафига

if ((scanf(“%d”, &x) && (x>=1000)))

уже ж ввели x один раз? Или уберите первый scanf…