我正在制作一个简单的函数来重现Secant方法,我认为我有一些精确的问题.
首先,这是函数(以及调用它的main方法,以及与它一起使用的测试函数):
double secant_method(double(*f)(double), double a, double b){
double c;
for (int i = 0; i < 10; i++){
c = a - f(a) * (a - b) / (f(a) - f(b));
b = a; a = c;
}
return c;
}
typedef double (*func)(double);
//test function - x^3 + 4x - 10
double test(double x){
return (x*x*x) + (4*x) - 10;
}
int main(){
func f = &test;
double ans;
ans = secant_method(f, 0, 2);
printf("\nRoot found:\t%.*g\n", …Run Code Online (Sandbox Code Playgroud) 在 C/C++ 中,您可以通过以下语法将一组变量初始化为相同的值: a = b = c = 1;
这会起作用malloc吗?IE 类似的东西:
char *a, *b;
a = b = malloc(SOME_SIZE * sizeof(char));
Run Code Online (Sandbox Code Playgroud)
这会创建两个相同大小的数组,但每个数组都有自己的内存吗?或者它会将两个数组分配到地址空间中的同一个位置?
我想首先说 - 我对"幕后"发生的事情感兴趣导致这个问题,因为我正在盲目修复代码.也许C++标准或我不熟悉的东西决定了它的原因:-)
无论如何...
我试图将3个数组传递A, B, C给一个函数,该函数将合并A并B存储结果C.
功能声明: void merge(int* a, int* b, int* c)
通过main():
int A[] = {1,2,3,4};
int B[] = {6,7,8,9};
int* C; //this could be wrong, btw!
merge(A, B, C);
Run Code Online (Sandbox Code Playgroud)
问题1.
奇怪的是main(),如果我打印结果sizeof(A)/sizeof(A[0]),它给出了数组的"长度"的正确结果4- 和B的相同的东西.但是当我将数组传递给函数时,我尝试通过相同的方法再次计算大小,但我得到2两个数组的结果.第一行merge():
void merge(int* a, int* b, int* c)
{
int sizeA = sizeof(a)/sizeof(a[0]);
int sizeB = sizeof(b)/sizeof(b[0]);
int totalsize = sizeA + …Run Code Online (Sandbox Code Playgroud) 我在这个答案中尝试了这个建议,但它适用于GCC并且无论如何都没有帮助.
我想#include <thread>在一个文件中,所以我有一个make文件如下:
OBJS = clitest.o Sources/NClient.o
CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
clitest: $(OBJS)
$(CC) $(LFLAGS) $(OBJS) -o clitest
Run Code Online (Sandbox Code Playgroud)
我应该在哪里包括-std=c++11和-lpthread在这?我已经尝试了几乎所有的组合,但是当我运行时我仍然遇到这个错误make:
/usr/include/c++/4.8.3/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
我相信这是它正在运行的命令?
[jaska@localhost NClient]make
g++ -c -o clitest.o clitest.cpp …Run Code Online (Sandbox Code Playgroud) 这只是一个感兴趣的问题 - 我不确定它实际上是如何适用的.无论如何 - 是否可以使用位检查来查看数字是否等于1?
只是为了踢和咯咯笑,是否有可能在三元操作中放置一个'for'循环?
这是用于查找数字是否为素数的代码:
int isPrime(int number){
int i, root = sqrt(number)+1;
if(number==1||!(number)||!(number&1)) return 0;
if(number==2) return 1;
for(i=3;i<root;i+=2) if(!(number%i)) return 0;
return 1;
Run Code Online (Sandbox Code Playgroud)
}
这是我"思想"的开始:
int isPrime(int number){
return number&1 || !(number&1) || number==2 ? 0:1;
}
Run Code Online (Sandbox Code Playgroud)
可以在那里添加for循环检查吗?
我正在运行GTK教程中的"hello-world"代码:
#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
GTKWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下方法编译它时,我收到此错误:
$ gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`
base.c: In function ‘main’:
base.c:5:2: error: unknown type name ‘GTKWidget’
GTKWidget *window;
Run Code Online (Sandbox Code Playgroud)
似乎问题不是gtk.h没有包含在内,而是说GTKWidget不是一个东西?