Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с функцией,посоветуйте...

19K
07 марта 2007 года
Timurovic
11 / / 02.12.2006
Надо использовать функцию.
[SIZE="3"]Вот дан мне n-угольник,надо вычислить периметр...вроде ничего сложного..только вот не идет прога...
Вот текст(если можете помогите):[/SIZE]

#include<stdio.h>
#include<conio.h>
#include<math.h>
int func(int *r,int *w,float res);
void main()
{
int a,i,x[100],y[100],t,k;
float h;
printf("BBeDuTe ko/lu4ecTBo BepLLluH:\n");
scanf("%i",&a);
for(i=0;i<a;i++)
{
if(a!=1 || a!=2)
{
printf("KoopDuHaTbl %i BepLLluHbl:\n",i+1);
printf("x[%i]=",i+1);
scanf("%i",&x);
printf("y[%i]=",i+1);
scanf("%i",&y);
}
else printf("To4ka u/lu OTpe3ok");
{
getch();
return;
}
}
printf("%i",func(*r,*w,res));
getch();
}
int func(int *r,int *w,float res)
{
int a,i,x[100],y[100],t,k;
float h;
for(i=0;i<a;i++)
{
if(i+1!=a)
{
t=pow(r[i+1]-r,2);
k=pow(w[i+1]-w,2);
h=sqrt(t+k);
}
else
{
t=pow(r[0]-r[i+1],2);
t=pow(w[0]-w[i+1],2);
h=sqrt(t+k);
}
}
res+=g;
return res;
}
//Вся прога,только вот выводит все время ошибки...третью неделю маюсь...
242
07 марта 2007 года
Оlga
2.2K / / 04.02.2006
Timurovic, читай правила форума Студентам. За неправильное название темы, оформление кода - получаешь -15, если не исправишь тему к утру - попадешь в бан. Лично мне надоело чужии темы править, пришли на форум - будьте добры соблюдать правила форума.
331
07 марта 2007 года
alexburzak
335 / / 23.04.2006
Полносстью согласен!
Влюбом случаии от себя хотел добавить:
Чисто техничеки необъявленая переменная r: "printf("%i",func(*r,*w,res));" и еще куча.
Чисто практически: убираешь с кода все кроме главной функции(main) компилируешь запускаешь, что бы работала.
Затем ПОНЕМНОГУ ДОБАВЛЯЕШЬ код и только так сможешь понять программирование. Если что не понятно то конретнные вопросы ты можешь задать здесь...
Удачи.
19K
08 марта 2007 года
Timurovic
11 / / 02.12.2006
ну и как мне её поменять?
242
08 марта 2007 года
Оlga
2.2K / / 04.02.2006
Кого её? название темы? редактировать -> расширенный режим, не забудь код оформить. название поменяется только внутри темы, снаружи заголовок я подправлю ((, когда буду на форуме.
19K
08 марта 2007 года
Timurovic
11 / / 02.12.2006
Цитата: alexburzak
Полносстью согласен!
Влюбом случаии от себя хотел добавить:
Никто не будет за тебя решать это.
Но могу посоветовать.
Чисто техничеки необъявленая переменная r: "printf("%i",func(*r,*w,res));" и еще куча.
Чисто практически: убираешь с кода все кроме главной функции(main) компилируешь запускаешь, что бы работала.
Затем ПОНЕМНОГУ ДОБАВЛЯЕШЬ код и только так сможешь понять программирование. Если что не понятно то конретнные вопросы ты можешь задать здесь...
Удачи.



//
Я не прошу не кого за меня её решать,попросил только помочь...и я не кого не принуждаю...понять функцию действительно не могу(единственное пока,что я не понял из пройденного материала).
P.S.Спасибо за совет.

242
08 марта 2007 года
Оlga
2.2K / / 04.02.2006
Цитата:
//Вся прога,только вот выводит все время ошибки...третью неделю маюсь...



мой тебе совет, закачай книгу по С, или купи Дейтела "Как программировать на С", посмотри Шилдта, у тебя столько ошибок что говорить особенно не о чем:
- использование не инициолизированных переменных
- неправильная передача параметров в функцию, более того передаются необъявленные переменные
- нету коменнтарий - логику решения проследить мягко говоря мне трудно, извини.

331
08 марта 2007 года
alexburzak
335 / / 23.04.2006
Имено это я и хотел сказать.
Спасибо Ольге.
320
08 марта 2007 года
m_Valery
1.0K / / 08.01.2007
Да,то что говорила OlgaKr - все правильно.Тут нужны учебники.
Обьявляешь ненужные переменные,передаешь в ф-ию неизвестно что
( указатели на r и w,r и w не существуют в ф-ии main),вычисляешь что ?
Переменная g - откуда она взялась?
Тебе надо передать в ф-ию 3 параметра : два массива в которых
храняться координаты вершин,и кол-во вершин.Разберись по учебникам
с ф-ями.Что и как туда передается,что возвращается ? Передача по
ссылке,по значению,как передаются массивы и т.д.Вот подправил твое решение(Visual Studio 2003),вместо prinf,scanf использовал cout,cin и руссифицировал консоль(чтоб ты не писал англ.буквами русский тест).:)

Код:
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <cmath>

using namespace std;
// ф - ия вычисления периметра
double func(int *x,int *y,int a);

int main()
{
    int a;// кол- во вершин
    std::wcout.imbue(std::locale("Russian_russia.OCP"));
    wcout<<L"\tВычисляем периметр многоугольника"<<endl;
    wcout<<L"Введите количество вершин"<<endl;
    cin>>a;//вводим кол-во вершин
    // массивы для хранения координат вершин
    int *x = new int[a];
    int *y = new int[a];
    for(int i = 0;i<a;++i){
      cout<<"x["<<i<<"] = ";
      cin>>x;
      cout<<"y["<<i<<"] = ";
      cin>>y;
    }
    // вычисляем периметр
    double result = func(x,y,a);
    wcout<<L"периметр = "<<result<<endl;
    // освобождаем память
    delete [] x;
    delete [] y;
    return 0;
}
double func(int *x,int *y,int a)
{
    // массивы для хранения длин вычисленных
    // отрезков
     double *t = new double[a];
     double *k = new double[a];
     double *h = new double[a];
     // вычисляемый результат
     double res = 0;
       for(int i=0;i<a;i++)
       {
           if(i+1!=a)
           {
             t=pow(x[i+1]-x,2);
             k=pow(y[i+1]-y,2);
             h=sqrt(t+k);
    wcout<<i + 1<<L" отрезок - "<<h<<endl;
             res+=h;// прибавляем отрезок к результату
    wcout<<L"теекущий результат - "<<res<<endl;
    }else
    {
             t=pow(x[0]-x,2);
             k=pow(y[0]-y,2);
             h=sqrt(t+k);
    wcout<<i + 1<<L" отрезок - "<<h<<endl;
    res+=h;// прибавляем отрезок к результату
    wcout<<L"теекущий результат - "<<res<<endl;
            }
        }
     // освобождаем память
              delete [] k;
     delete [] t;
     delete [] h;
      return res;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог