Выдает ошибку - C (СИ) (70377)
Формулировка задачи:
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#define X 14
#define Y 2
#define Z 16
void drow(char c);
float calc(float h, float g);
main()
{
int menu;
setlocale(LC_ALL, "RUS");
puts("Эта программа рисует или считает периметр треугольника");
puts("\n 1-Нарисовать 2-Посчитать периметр 3-Выход");
scanf_s("%d", &menu);
switch (menu)
{
case 1:drow('c'); break;
case 2:calc(5, 4); break;
default:return;
}
void drow(char c);
{
char a;
int i, j, b;
setlocale(LC_ALL, "RUS");
puts("Эта программа рисует тупоугольный треугольник заданым символом\n Нажмите любую кнопку");
a = getchar();
puts("\tТупоугольный треугольник\n\n\n");
printf(" ");
for (i = 0; i < 1; i = 1) // Верх треугольника
putchar(a);
putchar('\n');
for (i = 0; i < X; i++)
{
printf(" ");
for (j = 0; j < X - i; j++) //Левая часть
printf(" ");
putchar(a);
for (b = 1; b < Y + i; b++) //Правая часть
putchar(' ');
putchar(a);
putchar('\n');
}
printf(" ");
for (i = 0; i < Z; i++) // Основание
putchar(a);
putchar('\n');
}
float calc(float h, float g);
{
int P;
P = X + Y + Z;
system("pause");
printf("Площадь равна %d \n", P);
system("pause");
}
}Ссылка на неразрешенный внешний символ _drow в функции _main Ссылка на неразрешенный внешний символ _calc в функции _main
Решение задачи: «Выдает ошибку»
textual
Листинг программы
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#define X 14
#define Y 2
#define Z 16
void drow(char c);
void calc(float h, float g);
int main()
{
int menu;
SetConsoleOutputCP(1251);
puts("Эта программа рисует или считает периметр треугольника");
puts("\n 1-Нарисовать 2-Посчитать периметр 3-Выход");
scanf("%d", &menu);
switch (menu)
{
case 1:
drow('c');
break;
case 2:
calc(5, 4);
break;
default:
break;
}
}
void drow(char c)
{
char a;
int i, j, b;
puts("Эта программа рисует тупоугольный треугольник заданым символом\n Нажмите любую кнопку");
a = getchar();
puts("\tТупоугольный треугольник\n\n\n");
printf(" ");
for (i = 0; i < 1; i = 1) // Верх треугольника
putchar(a);
putchar('\n');
for (i = 0; i < X; i++)
{
printf(" ");
for (j = 0; j < X - i; j++) //Левая часть
printf(" ");
putchar(a);
for (b = 1; b < Y + i; b++) //Правая часть
putchar(' ');
putchar(a);
putchar('\n');
}
printf(" ");
for (i = 0; i < Z; i++) // Основание
putchar(a);
putchar('\n');
}
void calc(float h, float g)
{
int P;
P = X + Y + Z;
system("pause");
printf("Площадь равна %d \n", P);
system("pause");
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
, , , , . - Определяются константы X, Y, Z.
- Определяются функции drow и calc.
- В функции main происходит вывод меню.
- В случае выбора пункта меню 1, вызывается функция drow с аргументом 'c'.
- В случае выбора пункта меню 2, вызывается функция calc с аргументами 5 и 4.
- В функции drow происходит рисование треугольника.
- В функции calc происходит расчет и вывод периметра треугольника.
- Задаются значения переменных: int menu;, char a;, int i, j, b;, float h, float g;, int P;.
- Значения переменных X, Y, Z равны 14, 2 и 16 соответственно.
- Значение переменной menu равно 1.
- Значение переменной a не определено.
- Значения переменных i, j, b не определены.
- Значения переменных h, g не определены.
- Значение переменной P не определено.
- Происходит установка консоли в кодировку 1251.
- Происходит вывод строки
Эта программа рисует или считает периметр треугольника. - Происходит вывод строки
1-Нарисовать 2-Посчитать периметр 3-Выход. - Происходит считывание значения переменной menu с помощью функции scanf.
- Происходит переключение в зависимости от значения переменной menu.