回答数
気になる
-
整数のべき数のプログラムについて
以下のようなプログラムを組んでいます。a^4+b^4+c^4+d^4=(n^4+(n+1)^4+(n+2)^4+(n+3)^4)^4=(e)^4となるような数の組み合わせを探すものです。実行はするのですが、答えがデタラメです。エラーではじくのでも実行しないのでもなく、直感的にわかるような間違った数値をかえしてきます。何が問題でしょうか。 #include <stdio.h> #include <math.h> #include <stdlib.h> unsigned long pow4(unsigned long a,int e) { return (a*a*a*a); } int main() { int i, j, k,z,m; int ctr = 0; unsigned long long int beki, sigma,temp; FILE *file; file = fopen("bekijyo_4.txt", "w"); for (i = 1; i < 200; i++) { for (j = i + 1; j < 300; j++) { for (k = j + 1; k < 400; k++) { for (m = k + 1;m < 500;m++){ beki = pow4(i, 4) + pow4(j, 4) + pow4(k, 4) + pow4(m,4); for(z = 1;z < 500; z++){ sigma = pow4((z-1), 4) + pow4(z, 4) + pow4((z + 1),4) + pow4((z + 2), 4); temp = pow4(sigma, 4); if (beki == temp) { if (ctr == 0){ printf("ready-----go!\n"); } ctr++; printf("(%d ,%d ,%d,%d)=(%d ,%d ,%d, %d)=(%d) \n", i, j, k,m,(z - 1), z, (z + 1),(z + 2), sigma); fprintf(file, "(%d ,%d ,%d ,%d)=(%d ,%d ,%d ,%d)=(%d) \n", i, j, k, m ,(z - 1), z, (z + 1),(z + 2), sigma); } if (beki < temp) break; } } } } } fclose(file); printf("finish!"); return 0; } 実行結果 (a,b,c,d)=(n,n+1,n+2,n+3)=(e) (4 ,164 ,240 ,402)=(0 ,1 ,2 ,3)=(98) (18 ,48 ,80 ,304)=(191 ,192 ,193 ,194)=(1198807058) (24 ,264 ,336 ,414)=(28 ,29 ,30 ,31)=(3055458) (26 ,132 ,200 ,472)=(191 ,192 ,193 ,194)=(1198807058) (28 ,60 ,296 ,494)=(1 ,2 ,3 ,4)=(354) (32 ,176 ,312 ,482)=(32 ,33 ,34 ,35)=(5071458) (36 ,164 ,230 ,268)=(0 ,1 ,2 ,3)=(98) (44 ,176 ,208 ,470)=(0 ,1 ,2 ,3)=(98) (48 ,190 ,196 ,276)=(191 ,192 ,193 ,194)=(1198807058) (64 ,84 ,160 ,214)=(1 ,2 ,3 ,4)=(354) (64 ,146 ,180 ,492)=(32 ,33 ,34 ,35)=(5071458) (72 ,108 ,244 ,258)=(26 ,27 ,28 ,29)=(2310354) (76 ,110 ,236 ,456)=(4 ,5 ,6 ,7)=(4578) (120 ,208 ,230 ,428)=(30 ,31 ,32 ,33)=(3968018) (140 ,190 ,284 ,496)=(191 ,192 ,193 ,194)=(1198807058) (152 ,226 ,352 ,424)=(4 ,5 ,6 ,7)=(4578) よろしくお願いします。
質問日時: 2021/01/23 22:05 質問者: 哲っちゃん
ベストアンサー
8
0
-
Visual Studio Codeについて
初心者です。パイソンをVisual Studio Codeで動かそうと思っていろいろやってみて Visual Studio Codeの黒い画面で 1 print("こんにちわ") とかいて ユーチューブ動画サイトの先生に従って 右の上の実行ボタン (△を横にしたやつ) 押せば 2 こんにちわ と出るはずなんですが その右側上に動画サイトでは△を横にした のが□□(画面が分割)、・・・ とある左側にあるのだが自分のにはないが どうしてか 何かダウンロードできてゐなかったのでしょうかご教授ください。
質問日時: 2021/01/23 18:47 質問者: norakurotodoroki
ベストアンサー
3
0
-
ベストアンサー
2
1
-
C言語に関する質問です フィボナッチ数列を表示するプログラムを作りましたが、これだと第n項しか表示さ
C言語に関する質問です フィボナッチ数列を表示するプログラムを作りましたが、これだと第n項しか表示されないので第0項から第n項まで表示されるようにしたいです。 どのようにすればよいでしょうか、どなたか教えてください!! #include <stdio.h> int fibo(int n){ if(n == 0) return 0; if(n == 1) return 1; if(n >= 2) return fibo(n - 2) + fibo(n - 1); } int main(void){ int n; int fn; printf("n = "); scanf("%d", &n); fn = fibo(n); printf("F_n = %d\n", fn); return 0; }
質問日時: 2021/01/22 14:44 質問者: kanamiーss
ベストアンサー
2
0
-
C言語について質問です。読み取った文字を関数を使って置き換え、それをファイル出力したいのですが、a[
C言語について質問です。読み取った文字を関数を使って置き換え、それをファイル出力したいのですが、a[10] = change(s)でエラーが出てしまいます。戻り値を設定すれば良いのですがどのように設定すればいいのか分かりません。分かる方お願いします。(pritfでターミナルには置き換えた後の文字は表示できたのですが、そこからどうやってファイル出力に移すのか分かりません) #include <stdio.h> #include <stdlib.h> void tenji(char*); int main(void) { FILE *fin; // 読み込み用 FILE *fout; // 書き込み用 char s[5]; char a[10]; int i; // 読み込み if((fin = fopen("report3.txt", "r")) == NULL){ printf("Cannot open the file.\n"); exit(1); } // 書き込み if((fout = fopen("rreport3.txt", "w")) == NULL){ printf("Cannot open the file.\n"); exit(1); } // ファイルの読み込み while(fscanf(fin, "%s", &s) != EOF){ printf("data = %s\n", s); } a[10] = change(s); fprintf(fout, "%s\n", s); //ファイル文字の出力 fprintf(fout,"%s",a); //置き換えた後の出力 // ファイルを閉じる fclose(fout); fclose(fin); return 0; } void change(char *x){ int i; char judge1[] = "O"; char judge2[] = "X"; for ( i = 0; i < 4; i++){ if ("%d",x[i] == 97){ printf("%s%s\n",judge1,judge2); } if ("%d",x[i] == 98){ printf("%s%s\n",judge1,judge2); } if ("%d",x[i] == 99){ printf("%s%s\n",judge2,judge2); } } }
質問日時: 2021/01/22 01:19 質問者: あるまげ
解決済
3
0
-
C言語について質問です。読み取った文字を関数を使って置き換え、それをファイル出力したいのですが、a[
C言語について質問です。読み取った文字を関数を使って置き換え、それをファイル出力したいのですが、a[10] = change(s)でエラーが出てしまいます。戻り値を設定すれば良いのですがどのように設定すればいいのか分かりません。分かる方お願いします。 (長くなるのでコードの前半は省略させていただきます。) char s [5]; char a [10]; // ファイルの読み込み while(fscanf(fin, "%s", &s) != EOF){ printf("data = %s\n", s); } a[10] = change(s); fprintf(fout, "%s\n", s); //ファイル文字の出力 fprintf(fout,"%s",a); //置き換えた後の出力 // ファイルを閉じる fclose(fout); fclose(fin); return 0; } void change(char *x){ int i; char judge1[] = "O"; char judge2[] = "X"; for ( i = 0; i < 4; i++){ if ("%d",x[i] == 97){ printf("%s%s\n",judge1,judge2); } if ("%d",x[i] == 98){ printf("%s%s\n",judge1,judge2); } if ("%d",x[i] == 99){ printf("%s%s\n",judge2,judge2); } } return ; }
質問日時: 2021/01/22 00:58 質問者: あるまげ
解決済
3
0
-
このプログラムは、Pythonのjanomeを利用してます。またこのプログラムは、URLを入力すると
このプログラムは、Pythonのjanomeを利用してます。またこのプログラムは、URLを入力すると、品詞の個数、比率がわかるプログラムです。 「やりたいこと」 URLを3つ打ち込んで、3つの品詞の比率の平均値を求めるプログラムが知りたいです。URL1、URL2、URL3など増やすのは分かりますが、URLを増やすことによって、変更しなければならないとこがあると思います。そこが知りたいです import urllib.request from janome.analyzer import Analyzer from janome.charfilter import * from janome.tokenizer import Tokenizer class MainTextCharFilter(CharFilter): def __init__(self, start, end): self.start = start self.end = end def apply(self, text): return text.split(self.start)[1].split(self.end)[0] while True: print("URLを入力してください") url = input('') html = '' with urllib.request.urlopen(url) as response: html = response.read().decode('shift_jis') char_filters = [UnicodeNormalizeCharFilter(), MainTextCharFilter('<div class="main_text">', '<div class="bibliographical_information">'), RegexReplaceCharFilter('<rp>\(.*?\)</rp>', ''), RegexReplaceCharFilter('<.*?>', '')] tokenizer = Tokenizer() analyzer = Analyzer(char_filters, tokenizer) meishi=0 josi=0 kigou=0 doushi=0 jodousi=0 fukusi=0 settousi=0 keiyousi=0 renntaisi=0 setuzokusi=0 kandousi=0 fira=0 for token in analyzer.analyze(html): if token.part_of_speech.split(',')[0] == "名詞": meishi=meishi+1 elif token.part_of_speech.split(',')[0] =="助詞": josi =josi+1 elif token.part_of_speech.split(',')[0] =="記号": kigou=kigou+1 elif token.part_of_speech.split(',')[0] =="動詞": doushi=doushi+1 elif token.part_of_speech.split(',')[0] =="助動詞": jodousi=jodousi+1 elif token.part_of_speech.split(',')[0] =="副詞": fukusi=fukusi+1 elif token.part_of_speech.split(',')[0] =="接頭詞": settousi=settousi+1 elif token.part_of_speech.split(',')[0] =="形容詞": keiyousi=keiyousi+1 elif token.part_of_speech.split(',')[0] =="連体詞": renntaisi=renntaisi+1 elif token.part_of_speech.split(',')[0] =="接続詞": setuzokusi=setuzokusi+1 elif token.part_of_speech.split(',')[0] =="感動詞": kandousi=kandousi+1 elif token.part_of_speech.split(',')[0] =="フィラー": fira=fira+1 tango_kosuu=meishi+josi+kigou+doushi+jodousi+fukusi+settousi+keiyousi+renntaisi+setuzokusi+kandousi+fira a={"名詞":meishi,"助詞":josi,"記号":kigou,"動詞":doushi,"助動詞":jodousi,"副詞":fukusi, "接頭詞":settousi,"形容詞":keiyousi,"連体詞":renntaisi,"接続詞":setuzokusi,"感動詞":kandousi,"フィラー":fira} for k,v in sorted(a.items(),key=lambda x:x[1],reverse=True): print(k,v) for k,v in sorted(a.items(),key=lambda x:x[1],reverse=True): print(k,'の比率',round((v/tango_kosuu)*100,3),"%") 実行結果 助詞 61080 名詞 58433 動詞 28900 記号 25630 助動詞 19815 副詞 6576 形容詞 3600 連体詞 2145 接頭詞 1519 接続詞 1398 感動詞 740 フィラー 226 助詞 の比率 29.077 % 名詞 の比率 27.817 % 動詞 の比率 13.758 % 記号 の比率 12.201 % 助動詞 の比率 9.433 % 副詞 の比率 3.131 % 形容詞 の比率 1.714 % 連体詞 の比率 1.021 % 接頭詞 の比率 0.723 % 接続詞 の比率 0.666 % 感動詞 の比率 0.352 % フィラー の比率 0.108 %
質問日時: 2021/01/21 21:35 質問者: Qじろー42287456
解決済
1
0
-
C言語について質問です。
下のコードに平均を昇順に並び替える関数を組み込みたいのですがどのようにプログラムを組めばよいかわかりません。誰かわかる方いらっしゃいましたら教えて下さい。 /*成績管理システム*/ #include<stdio.h> #include<string.h> #include<math.h> #define NAME_LEN 128 #define NUM_LEN 64 #define NUMBER 5 /*学生を表す構造体*/ typedef struct{ char name[NAME_LEN]; //名前 char number[NUM_LEN]; //学籍番号 double math; //数学の得点 double eng; //英語の得点 double phy; //物理の得点 }Student; /*x,yで指す学生の入れ替え*/ void swap_Student(Student *x,Student *y) { Student temp = *x; *x = *y; *y = temp; } /*3教科それぞれの平均点を求める*/ void sum_Student(Student a[],int n,double *ave1,double *ave2,double *ave3) { int i=0; double sum1=0; double sum2=0; double sum3=0; for(i=0;i<n;i++){ sum1 += a[i].math; sum2 += a[i].eng; sum3 += a[i].phy; } *ave1 = sum1/n; *ave2 = sum2/n; *ave3 = sum3/n; } /*ファイルの読み込み*/ int out_file(Student a[]) { FILE *fp; int i = 0; if((fp = fopen("File1","r")) == NULL) printf("\aファイルをオープンできません\n"); else{ while(fscanf(fp,"%s %s %lf %lf %lf",a[i].name,a[i].number,&a[i].math,&a[i].eng,&a[i].phy)==5){ printf("%-10s %-10s %5.1f %5.1f %5.1f\n",a[i].name,a[i].number,a[i].math,a[i].eng,a[i].phy); i++; } fclose(fp); } return i; } int main(void) { int a; int flag=0; int i=0; int cnt=0; double ave1; double ave2; double ave3; Student human[40]; do{ printf("ファイル読み込み:1 終了:0 :"); scanf("%d",&flag); if(flag==1) out_file(human); }while(flag!=0); printf("平均点を表示しますか? はい:1 いいえ:2 :"); scanf("%d",&a); if(a==1){ sum_Student(human,cnt,&ave1,&ave2,&ave3); printf("数学の平均点は%3.1lfです。",ave1); printf("英語の平均点は%3.1lfです。",ave2); printf("物理の平均点は%3.1lfです。",ave3); } return 0; }
質問日時: 2021/01/21 02:16 質問者: nomorethan
ベストアンサー
1
0
-
離散フーリエ変換のプログラムで,思うような結果が得られません...
離散フーリエ変換のプログラムをC言語で書きました. 周波数スペクトルを得るときに,grは-3と3(Hz)で8,giは-1と1(Hz)でそれぞれ16,-16,そのほかの周波数では0の値を取るようにしたいのですが,そのようになりません. どうすればそんな結果を得ることができるか教えていただきたいです. よろしくお願いします。 以下,プログラム #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n, N = 32, k; double t, *g, *r_data, *i_data, *s_data, gr, gi; g = (double*)malloc(sizeof(double)*N); r_data = (double*)malloc(sizeof(double)*N); i_data = (double*)malloc(sizeof(double)*N); s_data = (double*)malloc(sizeof(double)*N); /*入力データ*/ for(n = 0; n < N; n++){ t = (double) (n * 3) / 32; g[n] = sin(2 * (M_PI) * t) + 0.5 * cos(6 * (M_PI) * t); printf("g[%d] = %lf\n", n, g[n]); } /*離散フーリエ変換と周波数スペクトル*/ for ( k = -(N/2); k < (N/2); k++ ){ gr = 0; gi = 0; for(n = 0; n < N; n++){ gr = gr + g[n] * cos(2 * (M_PI) * k * n / N); gi = gi - g[n] * sin(2 * (M_PI) * k * n / N); } r_data[k] = gr; i_data[k] = gi; s_data[k] = sqrt(r_data[k] * r_data[k] + i_data[k] * i_data[k]); } /*結果の表示*/ for(k = -(N/2); k < (N/2); k++){ printf("gr[%d] = %lf, gi[%d] = %lf\n", k, r_data[k], k, i_data[k]); } for (k = -(N/2); k < (N/2); k++) { printf("gs[%d] = %lf\n", k, s_data[k]); } free(g); free(r_data); free(i_data); free(s_data); return 0; }
質問日時: 2021/01/19 15:00 質問者: shiomiso
ベストアンサー
5
0
-
エラーについて質問です。
subscripted value is neither array nor pointer nor vector と言うエラーが出てしまいました。 ソースコードは下記の通りです。 #include <stdio.h> #define STUD 100 #define CORS 3 typedef struct Body { char name[32]; int age; double height; double weight; }Body; //構造体定義の宣言 //参考:【B4】おまけ課題 3~9行目 int print_bodydata(const Body* pData); int input_bodydata(Body* pData); FILE* open_file(char mode[]); //関数のプロトタイプ宣言 //参考:【B4】おまけ課題 11~13行目 int main(void) { int i,rc=0,cnt=0; Body Data[2]; FILE* fp; //変数の宣言 //参考:【B4】おまけ課題 17~19行目 int menu; int Sum_a[1]={0}; while(1){ printf("\n=== 操作メニュー ===\n"); printf("1:ファイル読み込み\n"); printf("2:全データ表示\n"); printf("3:新データ入力\n"); printf("4:ファイル書き出し\n"); printf("1~4以外:終了\n\n"); printf("操作No の入力:"); scanf("%d",&menu); printf("\n"); switch(menu){ case 1: printf("\n=== ファイル読み込み ===\n"); fp=open_file("r"); if(fp==NULL) return -1; for(i=0;i<100;i++){ rc=fscanf(fp,"%s\t%d\t%lf\t%lf\r\n", Data[i].name, &Data[i].age, &Data[i].height, &Data[i].weight); if(rc==EOF) break; } cnt=i; printf("%d件のデータをファイルから読み込みました\n",cnt); fclose(fp); //ファイルを開き 構造体配列に読み込む //参考:【B4】おまけ課題 22~32行目 break; case 2: printf("\n=== 全データ表示 ===\n"); printf("\n名前\t年齢\t身長\t 体重\n"); for(i=0;i<cnt;i++) print_bodydata(&Data[i]); //構造体配列の内容を一件1行として画面に表示 //データ件数と、それぞれの項目についての前件の平均値を表示 //参考:【B4】おまけ課題 34~36行目 printf("%d件のデータをファイルから読み込みました\n",cnt); for(rc=0;rc<CORS;rc++) { Sum_a[rc] = Sum_a[rc] + Data[cnt][rc]; } printf("\n【平均】\n"); printf("%.1f才\t", (float)Sum_a[rc]/STUD); break; case 3: printf("\n=== 新データ入力 ===\n"); if(cnt==100){ printf("最大件数のため、データ入力できません\n\n"); return -1; } input_bodydata(&Data[cnt]); print_bodydata(&Data[cnt]); cnt++; //構造体配列に新データを追加する //参考:【B4】おまけ課題 38~46行目 break; case 4: printf("\n=== ファイル書き出し ===\n"); fp=open_file("w"); if(fp==NULL) return -1; for(i=0;i<cnt;i++){ fprintf(fp,"%s\t%d\t%f\t%f\r\n", Data[i].name, Data[i].age, Data[i].height, Data[i].weight); } printf("%d件のデータをファイルへ書き出しました\n", cnt); fclose(fp); //printf("ファイルを閉じました\n"); //構造体配列の内容をファイルに書き出す //参考:【B4】おまけ課題 48~56行目 break; default: //プログラム終了 return 0; } } return 0; } FILE* open_file(char mode[]) { FILE* fp; char filename[32]; printf("\nファイル名を指定:"); scanf("%s",filename); fp=fopen(filename, mode); if(fp==NULL){ printf("ファイルを開けませんでした\n"); return NULL; } //printf("ファイルを開きました\n"); return fp; } int print_bodydata(const Body* pData) { printf("%s\t", pData->name); printf("%d才\t", pData->age); printf("%.1fcm\t", pData->height); printf("%7.1fkg\n", pData->weight); return 0; } int input_bodydata(Body* pData) { printf("名前:"); scanf("%s", pData->name); printf("年齢:"); scanf("%d", &pData->age); printf("身長:"); scanf("%lf", &pData->height); printf("体重:"); scanf("%lf", &pData->weight); printf("\n"); return 0; } エラー文は Sum_a[rc] = Sum_a[rc] + Data[cnt][rc]; のところで出てしまっています。 ご指摘お願いします。
質問日時: 2021/01/19 12:10 質問者: qopp
解決済
2
0
-
C言語について質問です。
http://psa2.kuciv.kyoto-u.ac.jp/staff/susaki/c/struct1.html の課題4の*の部分について平均や成績を求める関数とそれらを出力する関数をつくって求める方法が知りたいので誰かわかる方いらっしゃいましたらお願いします。また、平均点の高い順にソートする関数やこれらをファイル(scoare.txt)に書き込むプログラムの関数についても教えていただくと幸いです。
質問日時: 2021/01/18 11:40 質問者: nomorethan
ベストアンサー
3
1
-
C言語エラーについて
以下のようなプログラムを作ったのですが、 c:\mingw\include\string.h:90:40: note: expected 'const char *' but argument is of type 'int' 90 | _CRTIMP __cdecl __MINGW_NOTHROW char *strstr (const char *, const char *) __MINGW_ATTRIB_PURE; というエラーが出てきます。エラーの意味を教えてください。 #include <stdio.h> #include <string.h> int main(void) { FILE *fp = fopen("file.txt", "r"); if (fp == NULL) { perror("ファイルの読み込みに失敗\n"); return 1; } char ch[2001]; fscanf(fp, "%2000s", ch); fclose(fp); printf("▼=====テキストファイルの内容=====▼\n%s\n", ch); printf("\nパターンを入力してください。*a,t,g,cのみ\n"); char str[2001]; scanf("%2000s", str); char *k ; if (k != strstr(str,(int)'*') ){ int count1 = 0, count2 = -1; for (char *p = ch; p = strstr(p, str); p++){ count1++; count2 = ( p - ch ) / sizeof( char ) + 1; printf("%d箇所目 %d番目から\n",count1,count2); } printf("パターン「\"%s\"」は計%d箇所に含まれています。", str, count1); } else{ int number = -1, count= 0, count3 = -1; char* str1; char* str2; str1 = str; str2 = strchr( str, '*' ); *str2 = '\0'; str2 += 2; for (char *q = ch; q = strstr(q, str1); q++){ char *r = ch; for (r+(q-ch); r = strstr(r, str2); r++){ count++; count3 = ( q - ch ) / sizeof( char ) + 1; printf("%d箇所目 %d番目から\n",count,count3); } } printf("パターン「\"%s\"」は計%d箇所に含まれています。", str, count); } return 0; }
質問日時: 2021/01/18 00:09 質問者: miyabiishiko
ベストアンサー
3
0
-
このどこにバグがあるか、教えてください
整数の3乗の関係を求めるプログラムです。パソコンのOSはwin7、32ビット。環境はVisual Studio1998のようです。いずれ、かなり古いバージョンです。プログラムは以下のように単純ですが、計算する数の桁がとても大きくなります。 かなり以前に作ったプログラム(スペックのかなり落ちるバソコンで作った)では、 1^3+6^3+8^3=(0^3+1^3+2^3)^3=9^3、 4^3+24^3+32^3=(1^3+2^3+3^3)^3=36^3、 11^3+66^3+88^3=(2^3+3^3+4^3)^3=99^3、 24^3+144^3+192^3=(3^3+4^3+5^3)^3=216^3 という4つは作り出すことができました。とりあえず10組くらいは探したいと思っています。前回は、マイクロソフトのCもしくはC++だったと思います。今回も、(1^3+6^3+8^3)=(0^3+1^3+2^3)^3=9^3、一組だけは出てくるのですが、二組目以降は出てきません。beki、sigmaの定義かと思って、long int を unsigned long long int にすると、エラーではじかれてしまいます。i、j、k の最大値は、アバウトに決めています。kを10000にすると、明らかなエラーを出します。 よろしくお願いします。(ちなみに、Visual Studio の最新版は、使い方がよくわかりません。) int main() { int i,j,k; long int beki,sigma; FILE *file; file = fopen("bekijyo_3.txt","w"); for (i=1 ; i<300 ; i++ ) { for (j=i+1 ; j<500 ; j++) { for (k=j+1 ; k<2000 ; k++) { beki = pow(i,3) + pow(j,3) + pow(k,3); sigma = pow((i-1),3) + pow(i,3) + pow((i+1),3); if(beki == pow(sigma,3)) { printf("ファイルに書き込みます。\n "); printf("(%d ,%d ,%d)=(%d ,%d ,%d)=(%d) \n",i,j,k,(i-1),i,(i+1),sigma); fprintf(file, "(%d ,%d ,%d)=(%d ,%d ,%d)=(%d) \n",i,j,k,(i-1),i,(i+1),sigma); break; } } } } fclose(file); printf("処理が終了したよ~ん!"); return 0; }
質問日時: 2021/01/17 21:42 質問者: 哲っちゃん
ベストアンサー
4
1
-
誰かこのC言語のソースコードがわかる人至急教えてくださいお願いします
static int a[] = {99,21,10,94,56,3,44,12,51,33,84,81,36,99,11,76,26,99,50,51,69,98,4,83・・・,-999}; データの中から成績上位〇名(任意入力)のデータを表示するプログラムを作成 その際に下の図のように、全データ数及び順位、番号、成績を表示するようにするにはどういったソースコードか教えてください
質問日時: 2021/01/17 13:58 質問者: 烏の戯れ
解決済
2
0
-
C言語、自己参照構造体のプログラムのトレース
参考書の次のプログラムで、どうしても分からないことがあります。 ------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct person { char name[30]; int age; struct person *next; } Person; void getsn(char *ss, int n); // gets()の代替関数 int main(void) { Person dmy = {"", 0, NULL}; // NULLを終端マークにする Person *start = &dmy; // 先頭管理用の構造体を指す Person *wkdtp; // 作業用の構造体を指す Person *ip; // forループ制御用 char name[30], age_ss[10]; // データ入力用 while (1) { /* キーボードからデータを入力する */ printf("名前 = "); getsn(name, 80); if (strcmp(name, "") == 0) break; // 改行だけなら入力の終了 printf("年齢 = "); getsn(age_ss, 80); /* 構造体1個分のメモリを確保する */ wkdtp = (Person *)malloc(sizeof(Person)); if (wkdtp == NULL) { printf("メモリ確保できません。\n"); exit(EXIT_FAILURE); } /* 確保した構造体に名前と年齢を設定する */ strcpy(wkdtp->name, name); wkdtp->age = atoi(age_ss); /* 作成した構造体wkdtpを既存のチェーンにはめ込んでいく */ for (ip = start; ip->next != NULL; ip = ip->next) { if (wkdtp->age < ip->next->age) { wkdtp->next = ip->next; ip->next = wkdtp; break; } } /* 最高齢だったらチェーンの最後につなぐ */ if (ip->next == NULL) { ip->next = wkdtp; wkdtp->next = NULL; } } /* チェーンをたどって構造体の内容を表示する */ for (ip = start->next; ip != NULL; ip = ip->next) printf("%s %d\n", ip->name, ip->age); free(wkdtp); return EXIT_SUCCESS; } void getsn(char *ss, int n) { fgets(ss, n, stdin); if (ss[strlen(ss)-1] == '\n') ss[strlen(ss)-1] = '\0'; } ------------------------- 【実行結果】 ------------------------- 名前 = 田中一郎(キーボードから入力) 年齢 = 20(キーボードから入力) 名前 = 伊藤二郎(キーボードから入力) 年齢 = 40(キーボードから入力) 名前 = 鈴木三郎(キーボードから入力) 年齢 = 10(キーボードから入力) 名前 = 内田四郎(キーボードから入力) 年齢 = 30(キーボードから入力) 名前 = [Enter]のみ入力 鈴木三郎 10 田中一郎 20 内田四郎 30 伊藤二郎 40 ------------------------- これをトレースしていて、ポインタstartの中身がどうしても分からないので、プログラムの所々にprintf()を入れて、start->nextとip->nextを文字列として出力させたら、次のようになりました。 【改変したプログラムの実行結果】 ------------------------- whileループ1回目 名前 = 田中一郎 年齢 = 20 start->next = (null), ip->next = (null) start->next = 田中一郎, ip->next = 田中一郎 whileループ2回目 名前 = 伊藤二郎 年齢 = 40 whileループ2回目中のforループ1回目: start->next = 田中一郎, ip->next = 田中一郎 if文は偽 start->next = 田中一郎, ip->next = (null) start->next = 田中一郎, ip->next = 伊藤二郎 whileループ3回目 名前 = 鈴木三郎 年齢 = 10 whileループ3回目中のforループ1回目: start->next = 田中一郎, ip->next = 田中一郎 if文は真 start->next = 鈴木三郎, ip->next = 鈴木三郎 start->next = 鈴木三郎, ip->next = 鈴木三郎 start->next = 鈴木三郎, ip->next = 鈴木三郎 whileループ4回目 名前 = 内田四郎 年齢 = 30 whileループ4回目中のforループ1回目: start->next = 鈴木三郎, ip->next = 鈴木三郎 if文は偽 whileループ4回目中のforループ2回目: start->next = 鈴木三郎, ip->next = 田中一郎 if文は偽 whileループ4回目中のforループ3回目: start->next = 鈴木三郎, ip->next = 伊藤二郎 if文は真 start->next = 鈴木三郎, ip->next = 内田四郎 start->next = 鈴木三郎, ip->next = 内田四郎 start->next = 鈴木三郎, ip->next = 内田四郎 whileループ5回目 名前 = 鈴木三郎 10 田中一郎 20 内田四郎 30 伊藤二郎 40 ------------------------- これでも、どうしても分からない疑問が残りました。 forループの第1項で、ip=start;が実行されるので、 ip->next = wkdtp; が実行されるとstart->nextも変化することは理解できるのですが、それなのにそれ以降でstart->nextとip->nextが違う変化をするのはなぜでしょうか。プログラムを慎重にトレースしていっても、どうしても分かりません。 forループの第1項でip=start;とされたipとstartが、どうして同じ変化をしたり異なったりするのでしょうか。 どなたか解説をお願い致します。
質問日時: 2021/01/16 18:42 質問者: awa3yee
ベストアンサー
2
0
-
Cプログラム 行列
C言語勉強中です。 行列計算で int i,j,e unsigned short a[4][4]= { {0x00,0x04, 0x08, 0x12}, {0x01 0x05, 0x09, 0x13}, {0x02, 0x06, 0x10, 0x14}, {0x03, 0x07, 0x11, 0x15} }; unsigned short gyouretu[4][4]= { {0x01, 0x02, 0x03, 0x01}, {0x03, 0x03, 0x02, 0x01}, {0x02, 0x02, 0x03, 0x01}, {0x01, 0x01, 0x02, 0x03} }; unsigned short b[4][4][4]; for(i= 0; i < 4; i++){ for(j= 0; j < 4; j++){ for(e= 0; e < 4; e++){ b[i][j][k] = (gyouretu[j][e] & 0x01) * a[e][i] ^ (gyouretu[j][e] & 0x02) * a[e][i] ^ (gyouretu[j][e] & 0x04) * a[e][i] ^ (gyouretu[j][e] & 0x08) * a[e][i]; } } } この処理がどのような処理しているか教えてください。 行列の中身を1から3を判定してaの配列とかけていると思うのですが 入れ子でi,j,k に分けてgyouretu[j][e] の配列と a[e][i]が b[i][j][e]にどのように入るのか、なぜ[j][e] [e][i]なのかわかりません。
質問日時: 2021/01/16 13:47 質問者: jenseits
解決済
3
0
-
解決済
1
0
-
c言語の構造体について質問します
c言語の学習をしています。 学習の上で、マイコン上の液晶上に処理した内容を表示しようと試行錯誤しているのですが、 以下2点教えていただきたいことがあります。 ①malloc関数を使用しないで、メモリ領域を指定することは可能でしょうか? (静的アドレスで指定) 簡単な変数であれば int* a =(int*)0x12345678; のようにしてアドレスを指定可能ですが、 構造体の場合、アドレス位置を指定することはできるのでしょうか? 例えば、以下のような構造体を宣言、するとします。 typedef struct person { char name[10]; char sex; int age; char add[10]; char job[10]; } person; int main(void) { person Test, *p1; //宣言 p1 = &Test; // 実体のアドレス代入 } これだと、Testを宣言した段階で、Test用の領域が確保されます。 これを、指定したアドレス(0x12345678を先頭アドレスとして、使用可能なメモリ領域は確保できているものとします)に展開する方法を知りたいです。 person *p1 =0x12345678; //宣言 とかとすればOKなんでしょうか? ② typedef struct person { char *name; char sex; int age; char *add; char *job; } person; int main(void) { person Test, *p1; //宣言 p1 = &Test; // 実体のアドレス代入 p1->name = "T.Tanaka"; p1->age = 20; p1->add = "Tokyo"; } このようにしている場合、 ・"char *name"等の配列サイズは、コンパイル時に決まるのでしょうか? ・代入処理していない他のメンバ(sex,jobなど)はどのような扱いになるのでしょうか?(Nullが入る?それとも不定?不定だとchar型のポインタサイズはどれくらいになる?) また、上記のような構造体の宣言の場合、 mallocを使用した動的メモリの処理はできないのでしょうか? ("char *name"の部分だと名前文字数が決まらない →配列サイズが決まらないため 入力する文字数が分かっていればそれを加味してmalloc関数を使用すればOKなんでしょうか?) 分かりにくい質問で申し訳ありませんが、 よろしくお願いいたします。
質問日時: 2021/01/14 23:41 質問者: moto80
解決済
3
0
-
次のソースコードで間違っているところを教えて欲しいです。できればタンジェントの波も追加してほしいです
次のソースコードで間違っているところを教えて欲しいです。できればタンジェントの波も追加してほしいです。お願いします。 #include <studio.h> #include<math.h> #include<string.h> #define PI 3.1415 #define amp 30 int main(void) { double x ,y; int p; char s[2*amp+2]; s[2*amp+1]=0; for(x=0;x<=2*PI;x=x+PI/15) { _strset(s,’ ‘); y=sin(x); p=(int)(amp*y+amp+0.5) s[p]=‘*’; printf(“%s”,s); y=cos(x) p=(int)(amp*y+amp+0.5) s[p]=‘+’; printf(“%s¥n”,s) } }
質問日時: 2021/01/14 16:22 質問者: こう1200
解決済
3
0
-
次のようなソースを書いたんですが余計な*が出てきてしまいます。どこが間違っているか教えていただきたい
次のようなソースを書いたんですが余計な*が出てきてしまいます。どこが間違っているか教えていただきたいです。 サインカーブとコサインカーブを同時に縦向きに出力したいです。
質問日時: 2021/01/14 12:28 質問者: こう1200
ベストアンサー
1
2
-
c++でサインカーブ、コサインカーブ、タンジェントカーブを表示するプログラムを教えてください。お願い
c++でサインカーブ、コサインカーブ、タンジェントカーブを表示するプログラムを教えてください。お願いします。 ・0〜2Πの範囲でxがΠ/15ずつ変化 ・y=0を中心に両側に30文字ずつ変化 ・sinx→* cosx→+ tanx→# このソースを基にしてください。 #include <stdio.h> #include <math.h> #include <string.h> #define PI 3.1415 #define amp 10 int main(void) { double x, y; int p; char s[2 * amp + 2]; s[2 * amp + 1] = 0; for (x = 0; x <= 2 * PI; x = x + PI / 10) { _strset(s, ' '); y = sin(x); p = (int)(amp * y + amp + 0.5); s[p] = '*'; printf("%s\n", s); } }
質問日時: 2021/01/14 10:58 質問者: こう1200
ベストアンサー
1
0
-
Atom上でc言語を用いてgnuplotを起動させたいです.助けてください!
実行するとgnuplotは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と表示されてしまいます。 プログラムは画像のようなものです. コマンドプロンプト上で,gnuplotと打つと起動して,そのうえでグラフも描けました.つまりパスも通っています. 絶対パスで指定しても同じ文言が出てきます. なにか解決策がある方があれば教えていただけますでしょうか。よろしくお願いします!
質問日時: 2021/01/13 13:46 質問者: 学生n
解決済
5
0
-
(ポインタ変数を用いた)プログラミングをしたのですが、うまく作動しません。 1~100の整数を6つ選
(ポインタ変数を用いた)プログラミングをしたのですが、うまく作動しません。 1~100の整数を6つ選んでもらい入力させ,その6つのデータの合計,平均,最大,最小を表示するプログラムを,以下のユーザ関数を用いて作成しようとしてるのですがうまくいきません. void call(int n,int a[],int *sum,int *ave,int *max,int *min) 作成したプログラムのどこがいけないのかご指摘してもらえると幸いです.
質問日時: 2021/01/13 08:08 質問者: そらじろーのすけ
ベストアンサー
3
0
-
ポインタ変数の取り扱いについて
1~100の整数を6つ選んでもらい入力させ,その6つのデータの合計,平均,最大,最小を表示するプログラムを,以下のユーザ関数を用いて作成しようとしてるのですがうまくいきません. void call(int n,int a[],int *sum,int *ave,int *max,int *min) 作成したプログラムのどこがいけないのかご指摘してもらえると幸いです.
質問日時: 2021/01/13 07:28 質問者: リトルおひさま
解決済
1
0
-
Visual studio2019 C#で生まれた年と生年月日を入力してもらって十二支と星座を表示さ
Visual studio2019 C#で生まれた年と生年月日を入力してもらって十二支と星座を表示させるプログラムを作りたいのですが、誰か一例としてソースコードを教えてもらえないでしょうか? 自分で考えてみたんですが、あまりコンパクトにまとめれなくて他の方がどのような感じで書くのか知りたいです。 中学生で興味本位でやってるだけなので、知識はまだまだ浅いんです... どなたか教えてもらえないでしょうか?
質問日時: 2021/01/12 20:55 質問者: あいおえう
解決済
3
0
-
visualstudio2019 C#で数字を入力してもらってそれを表示させたいんですが、どの関数を
visualstudio2019 C#で数字を入力してもらってそれを表示させたいんですが、どの関数を使えばいいでしょうか? scanf、scanf_sを使ってもエラーになってしまいます... 自分は中学生で、興味本位で遊んでみてるだけなので知識が浅く、わかりません。 どなたか教えてください。
質問日時: 2021/01/12 20:39 質問者: あいおえう
解決済
1
0
-
PythonのJanomeを使って品詞の比率を求めたのですが、このプログラムに何を付けたしたらいいで
PythonのJanomeを使って品詞の比率を求めたのですが、このプログラムに何を付けたしたらいいでしょうか? import urllib.request from janome.analyzer import Analyzer from janome.charfilter import * from janome.tokenizer import Tokenizer class MainTextCharFilter(CharFilter): def __init__(self, start, end): self.start = start self.end = end def apply(self, text): return text.split(self.start)[1].split(self.end)[0] # 夏目漱石 # 吾輩は猫である url = 'http://www.aozora.gr.jp/cards/000148/files/789_14547.html' html = '' with urllib.request.urlopen(url) as response: html = response.read().decode('shift_jis') char_filters = [UnicodeNormalizeCharFilter(), MainTextCharFilter('<div class="main_text">', '<div class="bibliographical_information">'), RegexReplaceCharFilter('<rp>\(.*?\)</rp>', ''), RegexReplaceCharFilter('<.*?>', '')] tokenizer = Tokenizer() analyzer = Analyzer(char_filters, tokenizer) meishi=0 josi=0 kigou=0 doushi=0 jodousi=0 fukusi=0 settousi=0 keiyousi=0 renntaisi=0 setuzokusi=0 kandousi=0 fira=0 for token in analyzer.analyze(html): if token.part_of_speech.split(',')[0] == "名詞": meishi=meishi+1 elif token.part_of_speech.split(',')[0] =="助詞": josi =josi+1 elif token.part_of_speech.split(',')[0] =="記号": kigou=kigou+1 elif token.part_of_speech.split(',')[0] =="動詞": doushi=doushi+1 elif token.part_of_speech.split(',')[0] =="助動詞": jodousi=jodousi+1 elif token.part_of_speech.split(',')[0] =="副詞": fukusi=fukusi+1 elif token.part_of_speech.split(',')[0] =="接頭詞": settousi=settousi+1 elif token.part_of_speech.split(',')[0] =="形容詞": keiyousi=keiyousi+1 elif token.part_of_speech.split(',')[0] =="連体詞": renntaisi=renntaisi+1 elif token.part_of_speech.split(',')[0] =="接続詞": setuzokusi=setuzokusi+1 elif token.part_of_speech.split(',')[0] =="感動詞": kandousi=kandousi+1 elif token.part_of_speech.split(',')[0] =="フィラー": fira=fira+1 print("名詞:"+str(meishi)) print("助詞:"+str(josi)) print("記号:"+str(kigou)) print("動詞:"+str(doushi)) print("助動詞:"+str(jodousi)) print("副詞:"+str(fukusi)) print("接頭詞:"+str(settousi)) print("形容詞:"+str(keiyousi)) print("連体詞:"+str(renntaisi)) print("接続詞:"+str(setuzokusi)) print("感動詞:"+str(kandousi)) print("フィラー:"+str(fira)) 実行結果 名詞:58432 助詞:61080 記号:25630 動詞:28901 助動詞:19816 副詞:6576 接頭詞:1519 形容詞:3599 連体詞:2145 接続詞:1398 感動詞:740 フィラー:226 と表示されます
質問日時: 2021/01/12 11:25 質問者: Qじろー42287456
解決済
3
0
-
C言語のプログラミングに関する質問です 下のプログラムは符号無し整数xをnビット回転した値を返すとい
C言語のプログラミングに関する質問です 下のプログラムは符号無し整数xをnビット回転した値を返すというプログラムの一部であり、右に回転させる関数rrotateなのですが、この部分のフローチャートを教えてください!!! unsigned rrotate(unsigned nx, int n) { unsigned na, nb, nc; nb = nx >> n; nc = nx << 32 - n; na = nb | nc; print_bits(na); }
質問日時: 2021/01/10 17:29 質問者: kanamiーss
ベストアンサー
1
0
-
配列データをファイルに読み込んで、ファイルを表示させるプログラムを作りたいです。 以下のプログラムを
配列データをファイルに読み込んで、ファイルを表示させるプログラムを作りたいです。 以下のプログラムを作ったのですがうまくいきません。 内容としては、初めにファイルがあったら読み込んで、メニューである2を入力したら読み込んだものをそのまま表示、何もなかったら1で入力したものを2で表示させたいです。 このプログラムを実行させると、何も出力されず終了します。 配列に入力したものを格納することは出来ているみたいなので、配列そのものをフォルダに入れて、表示させるにはどうしたら良いでしょうか。 何時間も調べているのですが、どこがおかしいのか分かりません。 わかる方教えて頂きたいです。 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct aaa{ char *a; char *b; char *c; }test; char x[12]; char y[12]; char z[12]; int main(void){ test s[3]; FILE *file1,*file2,*file3; int menu; char ans1,ans2,ans3; menu=1; int c; int h; h=1; c=1; int n=0; int m=0; int l=0; char data1[12],data2[12],data3[12]; file1=fopen("data1.txt","r"); file2=fopen("data2.txt","r"); file3=fopen("data3.txt","r"); /*ファイルの中身があったら読み込む*/ if(file1==NULL){ printf("data1ファイルはありません\n"); } else{ while(1){ ans1=fscanf(file1,"%s",data1); if(ans1==EOF){ break; } } fclose(file1); } if(file2==NULL){ printf("data2のファイルはありません\n"); } else{ while(1){ ans2=fscanf(file2,"%s",data2); if(ans2==EOF){ break; } } fclose(file2); } if(file3==NULL){ printf("data3のファイルはありません\n"); } else{ while(1){ ans3=fscanf(file3,"%s",data3); if(ans3==EOF){ break; } } fclose(file3); } while(c!=2){//2のとき終了 if(menu==1){//メニュー表示 printf("\n[1]データ入力\n"); printf("[2]データ表示して終了\n"); printf(">"); scanf("%d",&c); } switch(c){ case 1: printf("何番目のデータを入力したいですか:"); scanf("%d",&h); printf("名前は?:"); scanf("%11s%*[^\n]%*c",x); s[h].a=(char*)malloc(sizeof(char)*(strlen(x))); strcpy(s[h].a,x); printf("性別は?:"); scanf("%11s%*[^\n]%*c",y); s[h].b=(char*)malloc(sizeof(char)*(strlen(y))); strcpy(s[h].b,y); printf("年齢は?:"); scanf("%11s%*[^\n]%*c",z); s[h].c=(char*)malloc(sizeof(char)*(strlen(z))); strcpy(s[h].c,z); break; case 2: if(file1==NULL||file2==NULL||file3==NULL){ file1=fopen("data1.txt","w"); file2=fopen("data2.txt","w"); file3=fopen("data3.txt","w"); while(1){ ans1=fprintf(file1,"%s",s[n].a); n++; if(ans1==EOF){ break; } } fclose(file1); while(1){ ans2=fprintf(file2,"%s",s[m].b); m++; if(ans2==EOF){ break; } } fclose(file2); while(1){ ans3=fprintf(file3,"%s",s[l].c); l++; if(ans3==EOF){ break; } } fclose(file3); } file1=fopen("data1.txt","r"); file2=fopen("data2.txt","r"); file3=fopen("data3.txt","r"); while(1){ ans1=fscanf(file1,"%s",data1); if(ans1==EOF){ break; } printf("%s",data1); } fclose(file1); while(1){ ans2=fscanf(file2,"%s",data2); if(ans1==EOF){ break; } printf("%s",data2); } fclose(file2); while(1){ ans3=fscanf(file3,"%s",data3); if(ans3==EOF){ break; } printf("%s",data3); } fclose(file3); printf("\n終了\n"); break; } } }
質問日時: 2021/01/10 17:04 質問者: mjgtj
ベストアンサー
2
0
-
配列をまるごとフォルダにコピーして、フォルダを表示させるプログラムを作りたいです。 以下のプログラム
配列をまるごとフォルダにコピーして、フォルダを表示させるプログラムを作りたいです。 以下のプログラムを作ったのですがうまくいきません。 初めにフォルダがあったら読み込んで、メニューである2を入力したら読み込んだものをそのまま表示、何もなかったら1で入力したものを2で表示させたいです。 実行させると、何も出力されず終了します。 配列に入力したものを格納することは出来ているみたいなので、配列そのものをフォルダに入れて、表示させるにはどうしたら良いでしょうか。 わかる方教えて欲しいです。 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct aaa{ char *a; char *b; char *c; }test; char x[12]; char y[12]; char z[12]; int main(void){ test s[3]; FILE *file1,*file2,*file3; int menu; char ans1,ans2,ans3; menu=1; int c; int h; h=1; c=1; int n=0; int m=0; int l=0; char data1[12],data2[12],data3[12]; file1=fopen("data1.txt","r"); file2=fopen("data2.txt","r"); file3=fopen("data3.txt","r"); /*ファイルの中身があったら読み込む*/ if(file1==NULL){ printf("data1ファイルはありません\n"); } else{ while(1){ ans1=fscanf(file1,"%s",data1); if(ans1==EOF){ break; } } fclose(file1); } if(file2==NULL){ printf("data2のファイルはありません\n"); } else{ while(1){ ans2=fscanf(file2,"%s",data2); if(ans2==EOF){ break; } } fclose(file2); } if(file3==NULL){ printf("data3のファイルはありません\n"); } else{ while(1){ ans3=fscanf(file3,"%s",data3); if(ans3==EOF){ break; } } fclose(file3); } while(c!=2){//2のとき終了 if(menu==1){//メニュー表示 printf("\n[1]データ入力\n"); printf("[2]データ表示して終了\n"); printf(">"); scanf("%d",&c); } switch(c){ case 1: printf("何番目のデータを入力したいですか:"); scanf("%d",&h); printf("名前は?:"); scanf("%11s%*[^\n]%*c",x); s[h].a=(char*)malloc(sizeof(char)*(strlen(x))); strcpy(s[h].a,x); printf("性別は?:"); scanf("%11s%*[^\n]%*c",y); s[h].b=(char*)malloc(sizeof(char)*(strlen(y))); strcpy(s[h].b,y); printf("年齢は?:"); scanf("%11s%*[^\n]%*c",z); s[h].c=(char*)malloc(sizeof(char)*(strlen(z))); strcpy(s[h].c,z); break; case 2: if(file1==NULL||file2==NULL||file3==NULL){ file1=fopen("data1.txt","w"); file2=fopen("data2.txt","w"); file3=fopen("data3.txt","w"); while(1){ ans1=fprintf(file1,"%s",s[n].a); n++; if(ans1==EOF){ break; } } fclose(file1); while(1){ ans2=fprintf(file2,"%s",s[m].b); m++; if(ans2==EOF){ break; } } fclose(file2); while(1){ ans3=fprintf(file3,"%s",s[l].c); l++; if(ans3==EOF){ break; } } fclose(file3); } file1=fopen("data1.txt","r"); file2=fopen("data2.txt","r"); file3=fopen("data3.txt","r"); while(1){ ans1=fscanf(file1,"%s",data1); if(ans1==EOF){ break; } printf("%s",data1); } fclose(file1); while(1){ ans2=fscanf(file2,"%s",data2); if(ans1==EOF){ break; } printf("%s",data2); } fclose(file2); while(1){ ans3=fscanf(file3,"%s",data3); if(ans3==EOF){ break; } printf("%s",data3); } fclose(file3); printf("\n終了\n"); break; } } }
質問日時: 2021/01/09 22:32 質問者: mjgtj
解決済
1
0
-
C言語 エラーの原因がわからないので,見てほしいです
学校の課題で,二つのファイルから得たデータで相互相関関数を計算する,という課題がでました. 以下のようなプログラムを書いたのですが,コンパイルの時点でエラーはなく,実行したときに malloc(): corrupted top size Aborted (core dumped) というエラーがでてきます. この原因がもしわかれば教えていただきたいです. また,他にもおかしな点があれば教えてください. よろしくお願いいたします. 以下,プログラム #include <stdio.h> #include <stdlib.h> #include <stddef.h> #define BUF_SIZE 4000 int main() { /* open file */ FILE *fp_x = fopen("ecg400.txt", "r"); if (fp_x == NULL){ printf("Can't open data file.\n"); return 1; } FILE *fp_y = fopen("ecg4000.txt", "r"); if (fp_y == NULL){ printf("Can't open data file.\n"); return 1; } /* read data */ char buf[BUF_SIZE]; int N_x = 0, N_y = 0, k, y; int a = 0, a2 = 2, b; int line = 3000000; float *etime_x, *resp_x, *etime_y, *resp_y, *resp2_x, *resp2_y; float m = 0, *d, *e, *f, *peak; float r, time_ave, bpm_ave; etime_x = (float*)malloc(sizeof(float)*N_x); resp_x = (float*)malloc(sizeof(float)*N_x); etime_y = (float*)malloc(sizeof(float)*N_y); resp_y = (float*)malloc(sizeof(float)*N_y); fgets(buf, BUF_SIZE-1, fp_x); sscanf(buf, "%d\n", &N_x); fgets(buf, BUF_SIZE-1, fp_y); sscanf(buf, "%d\n", &N_y); for (int i = 0; i < N_x ; i++ ){ fgets(buf, BUF_SIZE-1, fp_x); sscanf(buf, "%f,%f\n", &etime_x[i], &resp_x[i]); } for (int i = 0; i < N_y ; i++ ){ fgets(buf, BUF_SIZE-1, fp_y); sscanf(buf, "%f,%f\n", &etime_y[i], &resp_y[i]); } b = N_y - N_x; resp2_x = (float*)malloc(sizeof(float)*N_x); resp2_y = (float*)malloc(sizeof(float)*N_y); peak = (float*)malloc(sizeof(float)*b); d = (float*)malloc(sizeof(float)*(b+1)); e = (float*)malloc(sizeof(float)*(b+1)); f = (float*)malloc(sizeof(float)*b); printf("ノイズ除去(移動平均処理)しますか?(はい→1)\n"); scanf("%d", &y); /* ノイズ除去するとき */ if(y == 1){ for(int i = a2-1; i <= N_x-1; i++ ){ for(int j = 0; j <= a2-1; j++ ){ resp2_x[i] += resp_x[i-j]; } resp2_x[i] /= a2; } for(int i = a2-1; i <= N_y-1; i++ ){ for(int j = 0; j <= a2-1; j++ ){ resp2_y[i] += resp_y[i-j]; } resp2_y[i] /= a2; } for(int i = a2-1; i <= N_x-1; i++ ){ resp_x[i] = resp2_x[i]; } for(int i = a2-1; i <= N_y-1; i++ ){ resp_y[i] = resp2_y[i]; } a = a2 - 1; } for(int i = a; i <= N_y-1; i++ ){ m += resp_y[i]; } m /= (N_y - a); for(int i = a; i <= N_x-1; i++){ resp_x[i] -= m; } for(int i = a; i <= N_y-1; i++){ resp_y[i] -= m; } for(int i = 0 ; i <= b ; i++){ for(int j = a; j <= N_x-1; j++){ d[i] += resp_x[j] * resp_y[j+i]; } } for(int i = 1; i <= b ; i++){ e[i] = d[i] - d[i-1]; } for(int i = 1; i <= (b - 1) ; i++){ f[i] = e[i]*e[i+1]; } for(int i = 1; i <= (b - 1) ; i++){ if(f[i] < 0){ if(d[i] >= line){ peak[k] = etime_y[i]; k++; } } } for(int i = 1; i <= k-1; i++){ r = peak[i] - peak[i-1]; printf("R波間隔%d:%f\n", i, r); } time_ave = (peak[k-1] - peak[0])/5; bpm_ave = 60/time_ave; printf("R波間隔の平均値:%f\n", time_ave); printf("心拍数:%f\n", bpm_ave); fclose(fp_x); fclose(fp_y); free(etime_x); free(resp_x); free(resp2_x); free(etime_y); free(resp_y); free(resp2_y); free(d); free(e); free(f); free(peak); }
質問日時: 2021/01/09 14:55 質問者: shiomiso
ベストアンサー
2
0
-
プログラミングについての質問です
//Find the number of prime numbers between NUM1 and NUM2 final int NUM1 = 1234; final int NUM2 = 120455; void setup(){ noLoop();} void draw(){ int count; // variable to keep the number // of prime numbers. println(“Number of Prime Number between”, NUM1,”and”,NUM2,”is”,count);} このソースコードをベースに 1234から120455の範囲に含まれる素数の個数を求めて表示するにはどのようにしたらよいでしょうか? 素数か否か判別する関数が分からなくて困っています
質問日時: 2021/01/09 14:16 質問者: nemousu
解決済
1
0
-
プログラミングについて
プログラミング言語の歴史を概観した上で,オブジェクト指向言語の機能や位置 づけをまとめ、そのうえでさらに,オブジェクト指向言語としてのJavaの特徴を論じ、 また,他の言語(R や Python など)との相違について教えてください。
質問日時: 2021/01/09 11:33 質問者: masa1961
解決済
6
0
-
c言語 実数乱数の問題
c言語の問題です。授業で習ったはずなのですが、理解が追い付かず手が付けれなかった問題です。 どなたか教授いただけると幸いです。 [0,1)の実数乱数の装置を5000回動かし、出た目を[0.0 , 0.1),[0.1 , 0.2)...[0.9 , 1)の10階級で記録しそれぞれの階級での出現確率を求める。 装置を二つ同時に動かしたときの平均値を.csv記録するようにしなさい。 自分だけではまず出現確率を求めるとこからつまずいてます... #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i, freq[10]; double v; srand((unsigned int)time(NULL)); for(i=0; i<10; i++){freq[i] = 0;} for(i=0; i<5000; i++){ v = (double)rand() / (RAND_MAX +0.1); freq[(int)(v*10)] +=1; } for(i=0; i<10; i++){ printf("%.2lf,%.5lf\n",(double)i/10, (double)freq[i]/5000; 一応ここまで記述してみたのですが…
質問日時: 2021/01/07 07:10 質問者: eikun_
ベストアンサー
3
0
-
プログラミング 文字入力のエラー ソースコード
下記のソースコードを用いて変数入力の際、文字などをいれたときエラーになるようなプログラミングを作りました。まだC言語をある程度使えるようになったくらいなのでこのソースコードを完璧には理解できていません。自分が意味を分かっていなくても、ちゃんと動作するというのは自分では受け入れることができないのでしっかりと理解したいです。ですので、どなたかご説明いただけると幸いです。 char buff[ 256 ]; char *argp; int value; // 文字列で入力 scanf( "%s", buff ); value = strtol( buff, &argp, 10 ); ←10進数で変換 // ここでチェック if ( (errno != ERANGE) && (*argp != '\0') ){ printf( "変換不可能な文字が入力されています。\n" ); exit( 1 ); }
質問日時: 2021/01/05 17:59 質問者: opoke
解決済
4
0
-
先日、技術の授業がありました。先生から「c言語を知っている奴はいるか?」と聞かれ、僕は体験授業で少し
先日、技術の授業がありました。先生から「c言語を知っている奴はいるか?」と聞かれ、僕は体験授業で少し触ったことがあったので「一応知っています」と答えました。「すると、次の時間○○にはc言語について聞きながら授業進めます。期待しています。そんな深い話はせず基本的なこと聞くだけやけん、大丈夫。」と言われました。 正直、「知っているか」と聞かれたので「知っている」と答えただけでほとんど知りません。 「c言語をある程度されている人なら知っている、知識を教えていただきたいです。よろしくお願いします。 補足 我が校の技術教師は評定2下がっていい奴だけ、文句言えという人なのです。 だから、そう簡単に文句は言えません。 また、50分でざっくり学ぶだけなのでその場凌ぎの知識で大丈夫です。
質問日時: 2021/01/04 16:50 質問者: 人を笑う方じゃない
解決済
9
1
-
先日、技術の授業がありました。先生から「c言語を知っている奴はいるか?」と聞かれ、僕は体験授業で少し
先日、技術の授業がありました。先生から「c言語を知っている奴はいるか?」と聞かれ、僕は体験授業で少し触ったことがあったので「一応知っています」と答えました。「すると、次の時間○○にはc言語について聞きながら授業進めます。期待しています。そんな深い話はせず基本的なこと聞くだけやけん、大丈夫。」と言われました。 正直、「知っているか」と聞かれたので「知っている」と答えただけでほとんど知りません。 「c言語をある程度されている人なら知っている、知識を教えていただきたいです。よろしくお願いします。
質問日時: 2021/01/04 08:48 質問者: 人を笑う方じゃない
解決済
4
0
-
C言語のscanf関数で\nをよみとる方法は無いでしょうか。
自作のターミナル的なアプリケーションを作成したいと考えているのですが、 通常ターミナルでは、プロンプトの状態でエンターしたらプロンプトが再表示されるのですが、 [例] $ ←ここでエンター $ 再表示される scanfでそれをしようとすると、なにも表示されません。おそらくまだ入力待ちになっています。 scanfの使用上エンターを読み取れないと言っていた人がいたので、代替出来る関数はありませんか? また、scanfで出きるなら方法を教えて下さい。 ーーー|使用環境|ーーー OS:Linux(Debian派生) コンパイラー:GCC C言語は初めて1年ほどになりますが、途中JavaにいったりHaskellにいったりしてたので、経験は半年分ぐらいです。 よろしくお願い致します。
質問日時: 2021/01/02 21:25 質問者: Ask.alte-x10
ベストアンサー
6
0
-
輪郭線追跡をしてそのコードを出力させるプログラムを書いたのですが、trace関数のwhileの中が全
輪郭線追跡をしてそのコードを出力させるプログラムを書いたのですが、trace関数のwhileの中が全く作動していないみたいで、どのようにすれば実行できるのかわかる方教えて頂きたいです。 エラーは出ずに、findStartPt関数の最初の点のみ出力されてプログラムが終了してしまいます。 #include <stdio.h> #include <stdlib.h> #define NN 1600000 #define COL_BLACK 0 #define COL_WHITE 255 void trace(unsigned char image[], int im, int jm, int starti, int startj, int fcode[], int *num); void findStartPt(unsigned char image[], int im, int jm, int *starti, int *startj); int main(int argc, char *argv[]) { int im,jm; char fname[100]; unsigned char image[NN]; int i,j; int th; int col; int starti, startj; int num=0; int fcode[NN]; printf("元の画像ファイル名を入れてください: \n"); scanf("%s",fname); read_pnm(fname, &im, &jm, &col, image); findStartPt(image,im,jm,&starti,&startj); printf("%d %d\n", starti, startj); num=1; trace(image,im,jm,starti, startj, fcode, &num); } typedef struct dir_t{ //direction//進む方向 int x, y; }Dir; const Dir dir[] = { {1, 0}, {1, 1}, {-1, 1}, {-1, 1}, {-1, 0},{-1, -1}, {0, -1}, {1, -1}, }; const int dirs = sizeof(dir)/sizeof(dir[0]); void trace(unsigned char image[], int im, int jm, int starti, int startj, int fcode[], int *num) { int i; int x, y; *num = 0; while(x<=im && y<=jm && image[y*im + x] == COL_BLACK){ for(i=0; i<dirs; i++){ if(image[(y+dir[i].y)*im + (x+dir[i].x)] == COL_BLACK){ fcode[(y+dir[i].y)*im+(x+dir[i].x)] = i; printf("%d\n",fcode[(y+dir[i].y)*im+(x+dir[i].x)]); x += dir[i].x; y += dir[i].y; *num++; break; } } } } void findStartPt(unsigned char image[], int im, int jm, int *starti, int *startj) { int i, j; int dist; int dmin=im*im+jm*jm; // find start point for (j=0;j<jm;++j) { for (i=0;i<im;++i) { if (image[i+j*im]==255) { dist=i*i+j*j; if (dist<dmin) { *starti=i; *startj=j; dmin=dist; } } } } } void read_pnm(char filename[],int *im,int *jm, int *col, unsigned char image[]) { int i,j; FILE *fp; char buf[10000]; if((fp=fopen(filename,"rb"))==NULL) { printf("file %s can not open ",filename); exit(0); } check_pnm(buf,fp,im,jm,col); fread(image,sizeof(unsigned char),(*im)*(*jm)*(*col),fp); fclose(fp); }
質問日時: 2021/01/01 23:15 質問者: mjgtj
解決済
1
0
-
輪郭線追跡プログラム他の質問を参考にして輪郭線追跡プログラムを作成しましたが、trace関数部分が実
輪郭線追跡プログラム他の質問を参考にして輪郭線追跡プログラムを作成しましたが、trace関数部分が実行できません。教えて頂きたいです #include <stdio.h> #include <stdlib.h> #define NN 1600000 void trace(unsigned char image[], int im, int jm, int starti, int startj, int fcode[], int *num); void findStartPt(unsigned char image[], int im, int jm, int *starti, int *startj); int main(int argc, char *argv[]) { int im,jm; char fname[100]; unsigned char image[NN]; int i,j; int th; int col; int starti, startj; int num=0; int fcode[NN]; printf("元の画像ファイル名を入れてください: \n"); scanf("%s",fname); read_pnm(fname, &im, &jm, &col, image); findStartPt(image,im,jm,&starti,&startj); printf("%d %d\n", starti, startj); num=1; trace(image,im,jm,starti, startj, fcode, &num); } void trace(unsigned char image[], int im, int jm, int starti, int startj, int fcode[], int *num) { int x,y,i; x = starti; y=startj; num=0; while(x<=im && y<=jm){ if(image[y*im+x]==0){ if(image[(y-1)*im+(x-1)]==0){ *fcode=5; x=x-1; y=y-1; num++; } else{ if(image[(y-1)*im+x]==0){ *fcode=6; y=y-1; num++; } else{ if(image[(y-1)*im+(x+1)]==0){ *fcode=7; x=x+1; y=y-1; num++; } else{ if(image[y*im+(x+1)]==0){ *fcode=0; x=x+1; num++; } else{ if(image[y*im+(x-1)]==0){ *fcode=4; x=x-1; num++; } else{ if(image[(y+1)*im+(x-1)]==0){ *fcode=3; x=x-1; y=y+1; num++; }else{ if(image[(y+1)*im+x]==0){ *fcode=2; y=y+1; num++; } else{ if(image[(y+1)*im+(x+1)]==0){ *fcode=1; x=x+1; y=y+1; num++; } } } } } } } void findStartPt(unsigned char image[], int im, int jm, int *starti, int *startj) { int i, j; int dist; int dmin=im*im+jm*jm; // find start point for (j=0;j<jm;++j) { for (i=0;i<im;++i) { if (image[i+j*im]==255) { dist=i*i+j*j; if (dist<dmin) { *starti=i; *startj=j; dmin=dist; } } } } } void read_pnm(char filename[],int *im,int *jm, int *col, unsigned char image[]) { int i,j; FILE *fp; char buf[10000]; if((fp=fopen(filename,"rb"))==NULL) { printf("file %s can not open ",filename); exit(0); } check_pnm(buf,fp,im,jm,col); fread(image,sizeof(unsigned char),(*im)*(*jm)*(*col),fp); fclose(fp); }
質問日時: 2021/01/01 12:26 質問者: mjgtj
解決済
2
0
-
C初心者です。累乗と除算の併用について
例えば9の数値を例にすると 9を0乗から70乗までの除算結果が欲しいと仮定した場合。 普通に計算するとPCの性能上途中までしか計算できません。 そこでmodをしてからそれをかけていく方法を検討しました。 pow関数はなぜか使用できませんでした。 (windows10,LINUXそれぞれ使用、VisualstudioCodeにて) int a=9,b=70; int x[b]={0}; x[0]=0; x[1]=a; x[2]=a*a%b for(i=3;i<b;i++){ x[i]=x[i-1]*a%b; } これをnとして何かに置き換えて i=0から繰り返しで配列に一つにまとめて簡略化したいのですが何かいい方法はないでしょうか?
質問日時: 2020/12/30 17:32 質問者: jenseits
ベストアンサー
5
0
-
ソケットプログラミング について c言語で下の条件ようなサーバプログラムを作りたいのですがうまくいき
ソケットプログラミング について c言語で下の条件ようなサーバプログラムを作りたいのですがうまくいきません。どうすれば良いのでしょうか?お願いします。 • HTTPリクエストを処理する簡単なWebサーバプログラム • Webサーバの仕様 • HTTP request messageを受信・解析する • 要求されたファイルをサーバのファイルシステムから取得する • HTTP response messageを作成・送信する • 要求されたファイルとその前にHTMLヘッダなどをつける #include <sys/socket.h>//socket(), bind(), accept(), listen() #include <arpa/inet.h>// struct sockaddr_in, struct sockaddr, inet_ntoa() #include <netinet/in.h>#include <unistd.h>//close() #include <netdb.h>#include <sys/types.h>#include <sys/fcntl.h>#include <stdio.h>//printf(), fprintf(), perror() #include <stdlib.h>//atoi(), exit(), EXIT_FAILURE, EXIT_SUCCESS #include <string.h>//memset() #include <errno.h>#define BUF_LEN 1024 #define NAME_LEN 256 void httpd(int sockfd); int send_msg(int fd, char *msg); void main() { int sockfd, new_sockfd; int writer_len; int http_port = 12345; // サーバのポート番号のデフォルト値 struct sockaddr_in reader_addr, writer_addr; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) <0) { fprintf(stderr, "error: socket()\n"); fprintf(stderr, "error code is %d\n",errno); close(sockfd); exit(1); } fprintf(stderr, "socket () passed. socket descriptor=%d.\n",sockfd); memset(&reader_addr, 0, sizeof(reader_addr)); reader_addr.sin_family = AF_INET; reader_addr.sin_addr.s_addr = htonl(INADDR_ANY); reader_addr.sin_port = htons(http_port); if (bind(sockfd, (struct sockaddr *)&reader_addr, sizeof(reader_addr)) <0) { fprintf(stderr, "error: bind()\n"); fprintf(stderr, "error code is %d\n",errno); close(sockfd); exit(1); } fprintf(stderr, "bind () passed\n"); if (listen(sockfd, 5) <0) { fprintf(stderr, "error: listen()\n"); fprintf(stderr, "error code is %d\n",errno); close(sockfd); exit(1); } fprintf(stderr, "listen () passed\n"); while(1) { if ((new_sockfd = accept(sockfd,(struct sockaddr *)&writer_addr, &writer_len)) <0) { fprintf(stderr, "error: accepting a socket.\n"); fprintf(stderr, "error code is %d\n",errno); break; } else { httpd(new_sockfd); close(new_sockfd); } } close(sockfd); } void httpd(int sockfd) { int len; int read_fd; // 送信するファイルのファイル記述子 char buf[BUF_LEN]; // 送信するファイルを格納するバッファ char send_buf[BUF_LEN]; // 送信するメッセージを格納するバッファ char meth_name[16]; // 抽出したメソッド名を格納する変数 char uri_addr[256]; // 抽出したURI格納する変数 char http_ver[64]; // 抽出したhttp version格納する変数 char *uri_file; if (read(sockfd, buf, 1024) <= 0 ) { fprintf(stderr, "error: reading a request.\n"); } else { sscanf(buf, "%s %s %s", meth_name, uri_addr, http_ver); fprintf(stderr, "method = %s, uri = %s, http_ver = %s\n",meth_name, uri_addr, http_ver); if (strcmp(meth_name, "GET") != 0) { send_msg(sockfd, "501 Not Implemented"); } else { uri_file = uri_addr+1; //fprintf(stderr, "uri = %s\n",uri_file); if ((read_fd = open(uri_file, O_RDONLY, 0666)) == -1) { send_msg(sockfd, "404 Not Found"); } else { //send_msg(sockfd, "HTTP/1.1 200 OK\r\n"); sprintf(send_buf,"%s 200 OK\r\n",http_ver); //fprintf(stderr,"%s",send_buf); send_msg(sockfd, send_buf); send_msg(sockfd, "text/html\r\n"); send_msg(sockfd, "\r\n"); while((len = read(read_fd, buf, 1024)) >0) { if (write(sockfd, buf, len) != len) { fprintf(stderr, "error: writing a response.\n"); break; } } close(read_fd); } } } } int send_msg(int fd, char *msg) { int len; len = strlen(msg); if ( write(fd, msg, len) != len ){ fprintf(stderr, "error: writing."); } return len; }
質問日時: 2020/12/30 12:13 質問者: ggts
ベストアンサー
3
0
-
NULLと’\0’のNULL文字は違うものですか?また、’\0’はエスケープシーケンスですか?
NULLと’\0’のNULL文字は違うものですか?また、’\0’はエスケープシーケンスですか?
質問日時: 2020/12/26 13:58 質問者: POffff
ベストアンサー
3
0
-
C言語初心者です。以下のようなtypedefの構造体から関数に配列の値を出したいとき、どのようにすれ
C言語初心者です。以下のようなtypedefの構造体から関数に配列の値を出したいとき、どのようにすれば良いのでしょうか。 #include <stdio.h> typedef struct aaa{ int *a; int *b; }test; void x(test *tp); int main(void){ test s[2]; s[1].a=1; s[2].b=2; x(&s); } void x(test *tp){ int y; for(y=1;y<=2;y++){ printf("%d\n",tp[y].a); } } 上のプログラムで、1,2と表示させたいのですが受け渡し方法がよく分かりません。
質問日時: 2020/12/25 22:36 質問者: mjgtj
解決済
3
0
-
Alt+PrintScreenでPCのアクティブなスクリーンの画面がクリップボードにコピーされますが
この画像を加工するため、ファイルに保存したいのですがどうすればいいんでしょうか? (WORDとかで貼付けを選択すれば、そのまま貼り付けられることはわかったのですが...) できるだけ高画質で保存したいです。
質問日時: 2020/12/25 10:00 質問者: kihonkana
ベストアンサー
9
0
-
ベストアンサー
5
1
-
以下のようなプログラムを書いたのですが、うまく実行することができません。 データを複数個入力し、いつ
以下のようなプログラムを書いたのですが、うまく実行することができません。 データを複数個入力し、いつでも変更できる状態で調べたいもののみを抽出させた一覧も作りたいです。どのようにすれば実行できるのでしょうか。分かる方教えて頂きたいです。 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Data{ char *namae; char *sei; long bangou; }DATE; int main(void){ DATE *x; int menu; menu=1; int a; a=1; int y,z; y=1; while(a!=9){ if(menu==1){ printf("\n1.データを入力又は、変更\n"); printf("2.名前一覧\n"); printf("3.性別一覧\n"); printf("4.電話番号一覧\n"); printf("9.終了\n"); printf(">"); scanf("%d",&a); } switch(a){ case 1: printf("何番目のデータを入力したいですか:"); scanf("%d",&y); printf("名前を入力:"); scanf("%s",&x[y].namae); x[y].namae=(char*)malloc(sizeof(char)*(strlen(&x[y].namae)+1)); printf("性別を入力:"); scanf("%s",&x[y].sei); x[y].sei=(char*)malloc(sizeof(char)*(strlen(&x[y].sei)+1)); printf("電話番号を入力:"); scanf("%ld",&x[y].bangou); x[y].bangou=(char*)malloc(sizeof(char)*(strlen(&x[y].bangou)+1)); break; case 2: for(z=1;z<=y;z++){ printf("%s",x[z].namae); } break; case 3: for(z=1;z<=y;z++){ printf("%s",x[z].sei); } break; case 4: for(z=1;z<=y;z++){ printf("%ld",x[z].bangou); } break; case 9: printf("\n終了します\n"); break; } } }
質問日時: 2020/12/23 22:43 質問者: mjgtj
解決済
7
0
-
c言語 グローバル変数
c言語初心者です。初心者故、間違った言い回しをしているかもしれないので、あったら訂正してほしいです。それで質問が、グローバル変数として宣言した配列に、一つ目の関数でscanf等で文字列の入力を促してグローバル変数に代入(?)し、二つ目の関数でprintfで表記させたいのに、いろいろ試しましたが代入ができていないみたいで全く表記がされません。なにか必要な宣言などがあるのでしょうか?
質問日時: 2020/12/23 00:16 質問者: 翡翠87549
解決済
8
0
-
pic 複数の割り込み関数 切り分けるコード
pic 12F1822で、 割り込みを、 IOCAN3 = 1; IOCIE = 1; GIE = 1; のようにして下の関数を呼び出して、正常に動作していますが、、呼び出す側にisr()をターゲットにする記述はみあたりません。 void __interrupt() isr(void) { // 割込み処理プログラム内容を記述する // 割込み処理の最後に割り込みフラグをクリアする } 割り込みをRA3だけでなく、RA0,1,2などをトリガとして、複数の割り込み関数を切り分けることはできるでしょうか。 出来ないわけはないと思うのですが、web上を探しても、簡略な方法はありませんでした。 picの入門レベルでも解説されていませんでした。 どうぞよろしくおねがいします。
質問日時: 2020/12/22 17:07 質問者: sugar_p
ベストアンサー
2
0
-
c++ ランダムウォーク
初め、粒子は原点にいるとして、確率1/4ずつでx方向へ+1,-1,y方向へ+1,-1ジャンプする場合、nステップ後の粒子の位置の2乗平均(平均2乗変位)を求めたいです(n=0から100ステップまでの平均2乗変位)。アンサンブルの数は10000とします。 添付のコードではxしか実行できないのですが、yの分も実行するにはどこを直せばよいかご教示いただきたいです。
質問日時: 2020/12/22 15:17 質問者: ふれーく
ベストアンサー
3
0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
最新のコラム/記事
-
マッチングアプリで出会ったカップルは成婚率が高い!?結婚カウンセラーに聞いてみた
パートナーとの出会いの場として、もはや主流となったネット婚活やマッチングアプリ。中でも手軽に登録できるマッチングアプリは、10代から50代と幅広い年代が利用している。一方で、“相手の目的が投資関係の詐欺や...
-
メダロット:第250話「Vol.250※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
メダロット:第249話「Vol.249※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
日本古来の伝統工芸「金継ぎ」で修復した食器は前と同じように使えるの?
大切にしている食器が割れてしまったら、きっと誰もが「元に戻したい」と願うだろう。「教えて!goo」にも「割ってしまったお気に入りの食器を復活できる?」という質問があり、最適な方法について様々な意見が寄せら...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
逆コンパイルと逆アセンブルの違い...
-
C言語について。
-
これて逆じゃないですか?
-
C言語について。
-
コンソールアプリを作成するのにお...
-
私は
-
C言語 1から20までの逆数の和を求め...
-
Windows Formアプリからコンソール...
-
プログラムの実行時に'<'でリダイレ...
-
パソコン
-
あんまり考えたくないけど
-
10進数からN進数に変換するプログラ...
-
バッチファイルで以下のようなもの...
-
c#のTLS1.2での通信について
-
だいがくの電し書籍で
-
VisualStudio2022でC言語プログラム...
-
VisualStudioでのプログラミングに...
-
C言語って古いですか?
-
ホワイトハッカーを目指そうかと思...
-
【C言語】全角文字の配列を、全角の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語について c言語もコ...
-
C#でログファイルにファイルパスが...
-
Python、プログラミングについて質...
-
バッチファイルで以下のようなもの...
-
プログラミングの課題がわからない...
-
だれがとけるの?
-
0 == False はいいけど
-
CPUが16bitでも32bitOSでコンパイル...
-
なんで
-
c++でテンプレートのコードでわから...
-
プログラマーです。このDB設計だと...
-
c言語のリダイレクトによる円の描...
-
プログラミングでArduinoのc++かc#...
-
大量のデータを読み込んで表示する...
-
応用情報技術者試験の令和元年秋、...
-
複素関数はどこはあんまりやらなく...
-
gccを行ってもexeファイルが生成さ...
-
c言語
-
swift言語の最適化 swift最適化を最...
-
VisualStudio2022でC言語プログラム...
おすすめ情報