Вопрос по С : О жизни : Форум


 D3mon:
14.11.09, 16:14
 Есть программка:

Код: 
#include <stdio.h>
#include <conio.h>
#define deg 3

unsigned int i, fn, gn;
double F[4], G[3];

main(void)
{
  fn = deg;
  gn = deg - 1;

  for (i = 0; i <= fn; i++)
  {
    F[i] = i * 2;
  }
    
  for (i = 0; i <= gn; i++)
  {
    G[i] = (i + 1) * F[i+1];
    printf(" G[%1.0f", i);
    printf("] = %3.1f,", G[i]);
  }
  
  getchar();
}

никак не могу понять, почему она в скобках пишет 0, а не значение i



Подскажите, пожалуйста.

 MahmudS:
14.11.09, 16:22
 Потому что оно целое, попробуй %d

 D3mon:
14.11.09, 16:25
 мде..... :oops: :lol:
Спасибо! 8-)

Еще, а как можно объеденить принты в один, а то у меня не получается? (

[ Редактировано D3mon в 14.11.09 16:29 ]

 MahmudS:
14.11.09, 16:38
 printf("G[%d] = %3.1f\n", i, G[i]); \n - переход на новую строку.

 D3mon:
14.11.09, 16:42
 ну про \n я знаю. Но он мне здесь не нужен :-)
Спасибо!!

p.s. если вдруг кому-то стало интересно, что это за программа, объясню..
Это код проги с использованием функции..

Код: 
#include <stdio.h>
#include <conio.h>
#define deg 3

void polydif(double *f, unsigned int fn, double *g, unsigned int gn)
{
  unsigned int i;
  
  gn = fn - 1;
  for (i = 0; i <= gn; i++)
  {
    *g++ = *++f * (i+1);
  }
}

unsigned int i, fn, gn;
double F[4], G[3];

main(void)
{
  fn = deg;
  gn = deg - 1;

  F[0] = 0;
  F[1] = 2;
  F[2] = 4;
  F[3] = 6;

  polydif(F, fn, G, gn);
   
  for (i = 0; i <= gn; i++)
  {
    printf("G[%d] = %3.2f  ", i, G[i]);
  }
  
  getchar();
}


f - коэффициенты многочлена степени fn, начинаю с 0-го..
g - коэффициенты многочлена, полученного после дифференцирования f и имеющего степень gn..


И тут же назрел еще один вопрос: эта моя функция записывает степень полученного многочлена в gn, а как сделать, чтобы ее можно было потом использовать в основной программе? Есть ли аналог ключа VAR в паскале?

[ Редактировано D3mon в 14.11.09 16:54 ]

 MahmudS:
14.11.09, 19:10
 В си просто пишешь int gn, вот и будет объявлена перемення. Если обьявишь сразу после инклудов и дефайнов (не внутри функций), она будет глобальной

 D3mon:
14.11.09, 19:36
 можеты меня не так понял, или я тебя 8-)
в главной программе я знаю только fn. В ходе работы функции появляется gn, в данном случае оно равно fn-1. как мне сделать, чтобы gn имела тоже значение после работы функции, что и в ней?

 MahmudS:
14.11.09, 21:30
 Переменная gn у тебя описана дважды: в функции и в самой программе. Во втором случае она глобальная, т.е. на всю программу. А функция работает с той переменной gn, какую ей передали. Поэтому из описания функции надо gn убрать, пусть она работает с глобальной переменной. Другой вариант - в описании переменной в функции написать &gn, тогда функция будет работать с самой переменной, а не с ее копией

 noa:
15.11.09, 11:31
 D3mon, а разве сложно найти литературу в которой это все описано? Все что ты спросил - азы, разбираются в самом начале любой нормальной книги.

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=4476

© 2005-2018 supertrubka.org