これは一日中私を食べています。私はC言語には比較的新しいので、この作業を行うことはできません。理由はわかりません。関数の暗黙的な宣言time、rand、printf、すべての関数呼び出し
assignment_1.h --- ...私は3つのファイル..
私も、これは、スタックオーバーフローを使用して私の最初の時間であるとの間隔をお詫びしたいを持っている...しかし、とにかく、ここにコードがあります-------------------------------------------------- ------
#ifndef ASSIGNMENT_1_H
#define ASSIGNMENT_1_H
#define NULL 0
int CalculateFactorial(int input);
int CalculateFibonacci(int input);
void ReverseArray(int size, int array[]);
void ShuffleArray(int size, int array[]);
#endif
Main.c ---------------------------------- -------------------------------------
#include "assignment_1.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int fact = CalculateFactorial(15);
int fib = CalculateFibonacci(15);
printf("Factorial: %d\n", fact);
printf("Fib: %d\n", fib);
int array[] = {1,2,3,4,5,6};
int size = 6;
ReverseArray(size, array);
ShuffleArray(size, array);
return 0;
}/*end main*/
assignment_1.c --- ------------------ ------------------------------------------
#include "assignment_1.h"
int CalculateFactorial(int input){
if(input<=0) return 0;
int factorial = input;
int multiplier = input;
while(multiplier > 1){
factorial *= multiplier;
--multiplier;
}/*end while*/
return factorial;
}/*end calcfact*/
int CalculateFibonacci(int input){
if(input<=0) return 0;
else if(input == 1) return 1;
return CalculateFibonnaci(input-1) + CalculateFibonacci(input-2);
}/*end calcfib*/
void ReverseArray(int size, int array[]){
int last = size-1;
int first = 0;
int temp;
while (last-first > 1){ /*stops the loop if size is even*/
temp = array[last];
array[last] = array[first];
array[first] = temp;
++first;
--last;
if(last-first == 2) break; /*stops loop if size is odd*/
}/*end while*/
int i;
for (i = 0; i< size;++i){
printf("%d, ",array[i]);
}
printf("\n");
}/*end reverse*/
void ShuffleArray(int size, int array[]){
srand((unsigned int)time(NULL));
int i;
for (i = 0; i < size; ++i){
int idx = rand()%size; /*random unsigned int between 0 and the
max index of the array*/
int temp = array[i];
array[i] = array[idx];
array[idx] = temp;
}/*end for loop*/
for (i = 0; i< size;++i){
printf("%d, ",array[i]);
}
printf("\n");
}/*end shuffle*/
Iあなたはmain.cのに別々にassignment_1.cをコンパイルしているので合理的である(
これは分かりませんが、注意してください。1)プログラムの先頭に '' srand()を一度呼び出す必要があります.3) '' int''を定義する必要はありません。 '15! 'の値を保持しません。 –
'assignment_1.c'の中の' assignment_1.c'で使われている関数(またはそれがインクルードしている別のヘッダ)のヘッダを '#インクルード 'する必要があります。両方のファイルがそれらの関数を使用する場合は、両方の '.c'ファイルにそれらを含めることはOKです。 – Dmitri
@Dmitiri、 私があなたのことを理解しているかどうか分からないのですが、assignment1.cとmain.ciの先頭に '#include" assignment_1.h " – spencerktm30