online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <stdio.h> #include <stdlib.h> #define MAX_N 25 int n; typedef struct{ char name[30]; int year; double box; } Movie; Movie movies[MAX_N] = {}; void read_movies() { int i; scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%s %d %lf", &(movies[i].name[0]), &(movies[i].year), &(movies[i].box)); } } int binary_search(Movie *movies, int num, int qyear) { /** 穴埋め: 二分探索を行ってmoviesの中からqyearにマッチするものを探す。 見つからなければ-1を返す。 **/ // int n = 1; // printf("BS:%d \n",num); int mid; int low = 0; int high = num-1; while(low<=high){ mid = (low+high)/2; if(movies[mid].year>qyear){ high = mid-1; }else if(movies[mid].year<qyear){ low = mid+1; }else{ return mid; } } return -1; // for(int i = num/2;i<num;){ // if(i+1 == num || i-1 == -1){ // return -1; // } // // printf("qyear:%d year:%d \n",qyear,movies[i].year); // if(qyear>movies[i].year){ // i++; // continue; // }else if(qyear < movies[i].year){ // i--; // continue; // }else{ // // printf("bsres:%s %d\n",movies[i].name,movies[i].year); // // break; // return i; // } // // if(qyear>movies[i].year){ // // i++; // // }else{ // // i--; // // } // } // for(int i=0;i<num;i++){ // printf("BS: %d\n",movies[i].year); // } } int linear_search(Movie *movies, int num, int qyear) { // printf('%d \n',num); /** 穴埋め: 線形探索を行ってmoviesの中からqyearにマッチするものを探す。 見つからなければ-1を返す。 **/ // int n=-1; for(int i=0;i<num;i++){ if(qyear == movies[i].year){ return i; } } return -1; } int cmpyear(const void *p1, const void *p2) { Movie *s1 = (Movie *)p1; Movie *s2 = (Movie *)p2; // printf("%d\n",s1->year); // printf("%d\n",s2->year); // printf("-----------------\n"); /** 穴埋め: 配給年(year)が早い順、年が同じ場合は 興行収入(box)が大きい順に 並ぶように比較関数を定義する   s1の方が先に来るべきであれば-1を、   s2の方が先に来るべきであれば1を、   どちらでもよければ0をreturnするようにする。 **/ if(s1->year > s2->year){ return 1; }else{ return -1; } } int main(int argc, char **argv) { // 今回はmain関数は変更しないこと! read_movies(); qsort(movies, n, sizeof(Movie), cmpyear); int qyear; for (qyear = 1997; qyear < 2001; qyear++) { printf("In %d\n", qyear); int index_linear = linear_search(movies, n, qyear), index_binary = binary_search(movies, n, qyear); printf("=== linear search ===\n"); if (index_linear == -1) { printf("%d: not found\n", qyear); } else { printf("%d: %s %d %lf\n", qyear, movies[index_linear].name, movies[index_linear].year, movies[index_linear].box); } printf("=== binary search ===\n"); if (index_binary == -1) { printf("%d: not found\n", qyear); } else { printf("%d: %s %d %lf\n", qyear, movies[index_binary].name, movies[index_binary].year, movies[index_binary].box); } printf("\n"); } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue