C/C++の宿題を片付け ..
539:525
08/11/10 20:03:17
>>538
URLリンク(kansai2channeler.hp.infoseek.co.jp)
540:374
08/11/10 20:27:03
>>539
もうなんとお礼を言えばよいのかわかりません。本当にありがとうございました。
541:デフォルトの名無しさん
08/11/10 21:12:16
>>535
#include<stdio.h>
#include<stdlib.h>
struct cell {
int data;
struct cell *next;
};
int main(void){
int num;
struct cell *new, *start, *p1, *p2;
new = start = p1 = p2 = NULL;
while (1) {
scanf("%d", &num);
if (num == -1) break;
new = (struct cell *) malloc(sizeof(start));
if (new == NULL) { return 1; }
new->data = num;
new->next = NULL;
for(p1=start,p2=NULL; (p1) && new->data > p1->data; p2=p1, p1=p1->next);
if(p2){
p2->next = new;
new->next = p1;
}else{
new->next = start;
start = new;
}
}
for (p1=start; (p1); p1=p1->next) { printf("%d\n", p1->data); }
return 0;
}
542:デフォルトの名無しさん
08/11/10 22:01:28
[1] 授業単元:プログラミングC演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Unix
[3.2] コンパイラ名とバージョン: gcc(versionは不明
[3.3] 言語: C
[4] 期限: 2008年11月13日(木曜日)12:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
・ポインタをメインに使用してください
よろしくお願いします
543:デフォルトの名無しさん
08/11/10 23:11:51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年11月12日
[5] その他の制限:
よろしくお願いいたします。
544:デフォルトの名無しさん
08/11/10 23:14:37
>>542
malloc は ok なの?
最大長とか単語数は別プログラムで調べるんだったらいいけど、
一度にやるんだったら必ず必要だよ
545:デフォルトの名無しさん
08/11/10 23:22:34
>>543
printf("学籍番号:%d 氏名:%s\n",
p->id, p->name);
○○○ //pに次の構造体のポインタを代入
↑↑↑
ここを p = p->next とやるだけでとりあえず動くものはできるけど・・・
List3 は点数を取り込んでないよね。点数を取り込むようにしたいの?
読み込むデータのサンプルはないの?
546:デフォルトの名無しさん
08/11/10 23:25:53
>>542
ツッコミどころが多すぎるんだが・・・
とりあえず
- char *dict[999], *input[50]
+ char dict[999][100], input[50][100]
として、適当に文字列を格納する領域を確保しておくこと。
勘違いだと思うけど
- for(i = 0; scanf("%s",input[i]) != '\n'; i++);
+ for(i = 0; scanf("%s",input[i]) == 1; i++);
添字が逆
- judge = compare( dict[j], input[k]);
+ judge = compare( dict[k], input[j]);
それから、そもそも input[j] に入っているのは標準入力から得た一行だから、単語ごとに分割する処理が必要
547:デフォルトの名無しさん
08/11/10 23:36:49
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
10 個の要素をもつ整数配列data を初期化して宣言する。
配列の隣り合った添え字のデータ同士の差(data[i] – data[i-1])を調べる。
その値が,最も大きなものを探し,データの差がい
くつなのか,添え字の何番と何番との間の差なのか出力しなさい。
最大のものが複数あったときには,添え字の最も大きなものを出力すること。
例えば,data[10]={-6,4,7,-3,-1,9,5,-5,4,6}
で初期化したときには,4 と5 の間の10 が最大となる。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 6.0
[3.3] 言語:C言語
[4] 期限:11/14
[5] その他の制限:特になし
よろしくお願い致します。
548:デフォルトの名無しさん
08/11/10 23:45:02
>>547
6,7番目の間の10が最大値になる?
549:デフォルトの名無しさん
08/11/10 23:46:40
>>547
素直に書いてみた
差の絶対値じゃなくて差の比較だけでいいんだよね?
#include<stdio.h>
#define N 10
int main(){
int data[N]={-6,4,7,-3,-1,9,5,-5,4,6};
int*max_diff = data;
int*it;
for(it=data+1;it!=data+N-1;++it)
if(1[max_diff]-0[max_diff] <= 1[it]-0[it])
max_diff = it;
printf("%dと%dの間の差%dが最大\n",
max_diff-data,max_diff-data+1,1[max_diff]-0[max_diff]);
return 0;
}
550:デフォルトの名無しさん
08/11/11 00:50:44
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
一次元配列を用いて5人分の得点を100点満点で入力し、平均値を画面およびファイルに書き出すプログラムを作成しなさい。
書き出し用ファイル名はave.txtとする。
[3] 環境:
[3.1] Windows Vista
[3.2] Borland C++
[3.3] C言語
[4] 期限: 11月11日12:00
昼すぎ提出なので時間があまりないですが、どなたかお願いします。
551: ◆8w4FYxc7TQ
08/11/11 00:52:24
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
三つの数字a,b,cを入力したとき、大きい順に出力するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 9.0
[3.3] 言語:C++
[4] 期限:11/12
[5] その他の制限:
この問題で使えそうなものは、if、もしくはswitchしか習っていないので、それでお願いします。
自分でif文を使って組み立てると、どうしても思い通りに並べてくれません…
どうかよろしくお願いします。
552:デフォルトの名無しさん
08/11/11 01:11:20
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: (Windows vista)
[3.2] コンパイラ VisualStudio2005
[3.3] 言語: C言語
[4] 期限: 2008年11月13日15:00まで
[5] その他の制限: (C言語検定2級程度の途中まで習ってます)
すいません、お願いします
553:デフォルトの名無しさん
08/11/11 01:17:33
>>491お願いできませんか?
554:デフォルトの名無しさん
08/11/11 01:25:42
>>549
はい、差の比較のみです。
言葉が足りなくてすみません。
ありがとうございました!
555:521
08/11/11 01:34:59
>>522
ありがとうございます。
誰か、もう一つの課題のほうもお願いいたします。
556:デフォルトの名無しさん
08/11/11 01:46:23
>>550
#include <stdio.h>
int main(void)
{
int i, score, sum=0;
FILE *fp;
for(i=1; i<=5; i++){
printf("%d人目:", i);
scanf("%d", &score);
sum += score;
}
printf("平均値:%f\n", (double)sum / 5.0);
if((fp = fopen("ave.txt", "w")) == NULL){
printf("ファイルが開けません\n");
return 1;
}
fprintf(fp, "平均値:%f\n", (double)sum / 5.0);
fclose(fp);
return 0;
}
557:デフォルトの名無しさん
08/11/11 01:48:54
ああ、配列使うのか
#include <stdio.h>
int main(void)
{
int i, score[5], sum=0;
FILE *fp;
for(i=0; i<5; i++){
printf("%d人目:", i+1);
scanf("%d", &score[i]);
sum += score[i];
}
printf("平均値:%f\n", (double)sum / 5.0);
if((fp = fopen("ave.txt", "w")) == NULL){
printf("ファイルが開けません\n");
return 1;
}
fprintf(fp, "平均値:%f\n", (double)sum / 5.0);
fclose(fp);
return 0;
}
558:デフォルトの名無しさん
08/11/11 01:57:47
>>551
if(a < b){
tmp = a;
a = b;
b = tmp;
}
if(a < c){
tmp = a;
a = c;
c = tmp;
}
if(b < c){
tmp = b;
b = c;
c = tmp;
}
559:デフォルトの名無しさん
08/11/11 02:18:50
>>481
お礼おくれて申し訳ありません。
助かりました。ありがとうございます。
560:デフォルトの名無しさん
08/11/11 02:33:03
>>556-557
ありがとうございます助かりました!
一次元配列使うんです、まぎらわしくてすいません。
二度もありがとうございました。
561:デフォルトの名無しさん
08/11/11 02:39:30
>>552
2番はちょっと余計なこともしてるけど
URLリンク(kansai2channeler.hp.infoseek.co.jp)
562:デフォルトの名無しさん
08/11/11 03:37:42
>>561
rewind(stdin)なんて標準以外の使い方すんなカス
563:デフォルトの名無しさん
08/11/11 03:49:35
[1] 授業単元:
[2] 問題文
0〜9の数字のみからなる文字列を引数として受け取り、
同じ数字並びの整数を返す関数ascii2int()を作り、動作を
確認せよ。ただし、非負の整数のみ考える。
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c
[4] 期限: 11月15日
564:デフォルトの名無しさん
08/11/11 03:56:49
[1] 授業単元:スタック
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限:2008/11/12
[5] その他の制限:なし
すいませんが、よろしくお願いします!
565:デフォルトの名無しさん
08/11/11 06:51:39
>>562
これで許してくださいorz
scanf("%*[^\n]\n");
566:デフォルトの名無しさん
08/11/11 06:59:11
>>563
#include<stdio.h>
int ascii2int(const char* str){
int r=0;
while(*str){
r*=10;
r+=*str-'0';
str++;
}
return r;
}
int main(){
char* a = "12345";
printf("%d\n",ascii2int(a));
}
567:デフォルトの名無しさん
08/11/11 07:36:20
>>564
なんかへたくそでごめん。。
#include<stdio.h>
#define N 100
int n,cnt=0,c[N],b[N];
void solve(int a_top,int b_top,int c_top){
if(a_top>n && b_top==0){
int i;
for(i=0;i<n;i++)printf("%d",c[i]);
printf("\n"); cnt++;
}
if(a_top<=n){
b[b_top++] = a_top++;//a->b
solve(a_top,b_top,c_top);
b[--b_top] = --a_top;//b->a
}
if(b_top>0){
c[c_top++]=b[--b_top];//b->c
solve(a_top,b_top,c_top);
b[b_top++]=c[--c_top];//c->b
}
}
int main(){
printf("n:"); scanf("%d",&n);
if(n>0) solve(1,0,0);
printf("%d\n",cnt);
}
568:デフォルトの名無しさん
08/11/11 07:40:51
>>558
ありがとうございます!
やってみます!
569:デフォルトの名無しさん
08/11/11 08:52:57
>>555
2回に分けて。
#include<stdio.h>
#define STACKSIZE 100
typedef struct _Point{
int x,y;
}point;
static int sp = 0;
static point stack[STACKSIZE];
void push(point p){
[sp++] = p;
}
point pop(void){
return stack[--sp];
}
int isempty(void){
return sp == 0;
}
570:デフォルトの名無しさん
08/11/11 08:54:32
//上の[sp++] = p;はstack[sp++] = p;のミス!!
int main(void){
char map[7][11] = {
"**********",
"* * *",
"* *****",
"* ** * *",
"* * *",
"* * * *",
"**********",
};
point p;
int x,y;
p.x=2; p.y=1; push(p);
while(!isempty()){
p=pop(); x=p.x; y=p.y;
if (map[y][x] == ' '){
map[y][x] = '*';
p.x=x; p.y=y-1; push(p); // up
p.x=x; p.y=y+1; push(p); // down
p.x=x-1; p.y=y; push(p); // left
p.x=x+1; p.y=y; push(p); // right
for(y = 0; y < 7; y++) printf("%s\n", map[y]);
printf("\n");
}
}
return 0;
}
571:564
08/11/11 09:00:54
>>567
こんなに早く対応していただけて助かります。
ありがとうございます!
572:デフォルトの名無しさん
08/11/11 10:08:37
[2] 1. define文を使ってN以下の素数を全て求めよ
2. 関数 f(t)=t^5-t の区間 [0,2] での値を 0.1 刻みで表示するプログラムを作れ
[3]
[3.1] OS : Linux
[3.2] ?
[3.3] 言語 : C
[4] 期限: 11/12
[5] その他の制限:初歩の初歩です。難しすぎるのはよく分かりません
どなたかよろしくお願いします
573:デフォルトの名無しさん
08/11/11 11:06:09
1こめ
#include<stdio.h>
#define N 100
int main(){
int s[N],i,j;
for(i=0;i<N;i++) s[i]=1;
s[0] = s[1] = 0;
for(i=2;i<N;i++){
if(!s[i]) continue;
for(j=i+i;j<N;j+=i){
s[j]=0;
}
}
for(i=0;i<N;i++){
if(s[i]) printf("%d\n",i);
}
}
574:デフォルトの名無しさん
08/11/11 11:14:17
>>573
define文を使うって、#define N 100 ← これだけでいいのかww
575:デフォルトの名無しさん
08/11/11 11:15:35
えっ?だめ??勘違い?(´・ω・`)
576:デフォルトの名無しさん
08/11/11 11:58:52
>>521じゃないけど分からないので質問。>>522の通りにやっても何も表示されないので
たぶん確実に違うisemptyのどこが駄目でしょうか?あとpush,popもおかしかったら教えてください。
void push(int x){
if(sp == 100){
printf("stack is fill.\n");
}
else{
stack[sp]=x;
sp++;
}
}
int pop(void){
if(sp == 0){
printf("stack is empty.\n");
}
else{
sp--;
return(stack[sp]);
}
}
int isempty(void)
{
if(sp ==100)
printf("1");
if(sp ==0)
printf ("0");
}
577:522
08/11/11 12:03:42
>>576
void push(int val)
{
stack[sp++] = val;
}
int pop(void)
{
return stack[sp-- - 1];
}
int isempty(void)
{
/*スタックが空なら1、空でないなら0を返す関数 */
return sp == 0 ? 1 : 0;
}
578:デフォルトの名無しさん
08/11/11 12:08:04
stack[sp++] = val;
は普通だけど、
return stack[sp-- - 1];
って書き方がすごくきもく見えるw
579:デフォルトの名無しさん
08/11/11 12:13:05
return stack[--sp];
だよなぁ常考
580:522
08/11/11 12:37:34
>>578>>579
貼ってから自分でもそうオモタ
581:デフォルトの名無しさん
08/11/11 12:59:00
個人的に
論理式?1:0;とかif(論理式!=0)とかif(論理式==0)
って書き方が好きじゃない。冗長な感じがして。
582:デフォルトの名無しさん
08/11/11 13:01:58
真の時に1を返すと保障されている処理系ならば return sp == 0; でもいいんだけどね
583:デフォルトの名無しさん
08/11/11 13:03:56
C言語は保証されてる
584:デフォルトの名無しさん
08/11/11 14:01:00
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下のプログラムを英文清書プログラムに書き換えよ。
元のプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
条件
・文の先頭は大文字、それ以外は小文字。
・アルファベット以外の文字は変換しなくてよい。
・改行、スペース、タブにより単語の区切りとする。また文末は改行コードではなくピリオド"."で判定する。
・\endまたは\ENDを挿入するとそのプログラムを終わるようにする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008/11/12 23:59まで
[5] その他の制限: 特にないです。
すみませんが、よろしくお願いします。
585:デフォルトの名無しさん
08/11/11 14:34:13
INExp.hって??
586:デフォルトの名無しさん
08/11/11 15:28:24
isalphaとtoupper使えればいいのかな
ピリオド検索はstrstrで ポインタアドレスの差を文字列長にもしてげへへへ
587:デフォルトの名無しさん
08/11/11 16:00:13
[1] 授業単元:単方向線形
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 11/18
[5] その他の制限: 特になし
全く分かりません。宜しくお願いします
588:デフォルトの名無しさん
08/11/11 16:12:52
>>587
うそつけw
考える気がないだろw
589:デフォルトの名無しさん
08/11/11 17:34:32
それを言ったらこのスレの存在意義がなくなるわけだが
590:デフォルトの名無しさん
08/11/11 17:36:25
どこのスレにだって黙ってればいいのに野暮ったい突っ込みする奴居るじゃん。
591:デフォルトの名無しさん
08/11/11 18:18:38
>>573
ありがとうございます
592:デフォルトの名無しさん
08/11/11 18:19:28
>>587
超めんどくさい!cの単方向リスト嫌い!
URLリンク(kansai2channeler.hp.infoseek.co.jp)
593:576
08/11/11 18:22:40
>>577
ありがとうございます。>>522と合わせてプログラムにしてみたんだが何もマップされないんです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
自宅のubuntuのgcc(おそらくでやってるんですが環境のせいですか?変なところあったら指摘お願いします。
594:デフォルトの名無しさん
08/11/11 18:24:58
printf("%s\n", map[y]);
595:デフォルトの名無しさん
08/11/11 18:25:43
ごめんかんちがい
596:デフォルトの名無しさん
08/11/11 18:28:38
あ!コピペミスってるだけじゃん〜
597:デフォルトの名無しさん
08/11/11 18:49:43
a
598: ◆25LbU5YSxg
08/11/11 18:52:30
>>541
遅れましたが、解答ありがとうございました。
599:577
08/11/11 19:21:30
>>593
map データがなんだかやせ細ってるよ
600:デフォルトの名無しさん
08/11/11 20:20:46
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
(1) 単項式を入力された順に出力されるように変更する
(2)入力した単項式を次数の大きい順にするに出力されるように変更する
ソースは以下を参考にしてください、たらない変数は任意で増やしてけっこうです
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(1)と(2)は別解答
[3] 環境
[3.1] OS: Win
[3.2] コンパイラ名とバージョン: 任意
[3.3] 言語: C
[4] 期限: 2008年11月14日13:30まで
期限が迫ってるのでお願いします
601:デフォルトの名無しさん
08/11/11 20:28:18
この問題昔見たなw
602:デフォルトの名無しさん
08/11/11 20:32:57
すいません
前スレあたりで載せたんですがスルーだったようで自力でやろうとしたけど無理だったので再度^^;
最終期限がすぐであせってます
603:576
08/11/11 20:35:35
なんというミス(^o^)
みなさまありがとうございました。明日も生きていけそうです。
604:デフォルトの名無しさん
08/11/11 20:37:29
[1] 授業単元: 文字列操作
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] cc
[3.3] C
[4] 期限:2008年11月12日15:00まで
[5] その他の制限:問題文中に出てくる、frequency.c を利用せよ、とありますので、
なるべくそれを基盤にするようにお願いします。
↓途中まで考えてみたものです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
605:デフォルトの名無しさん
08/11/11 20:45:38
>>604
1問目
freqency.c の出力部分を以下のように修正
for(i = 0; i < 26; i++) { /* 結果出力 */
while(alpha[i]-- > 0)
printf("*");
printf("\n");
}
606:605
08/11/11 20:54:39
>>604 2問目 main の中身だけ
char c;
int i, j, alpha[26], max = 0;
for(i = 0; i < 26; i++) /* 配列のクリア */
alpha[i] = 0;
c = getchar();
while(c != '\n') {
if (c >= 'a' && c <= 'z') { /* 英小文字の処理 */
alpha[c - 'a'] += 1;
if (alpha[c - 'a'] > max)
max = alpha[c - 'a'];
} else {
if (c >= 'A' && c <= 'Z') { /* 英大文字の処理 */
alpha[c - 'A'] += 1;
if (alpha[c - 'A'] > max)
max = alpha[c - 'A'];
}
}
c = getchar();
}
for(i = 0; i < max; i++) {
for(j = 0; j < 26; j++) { /* 結果出力 */
if (alpha[j] >= max - i)
printf("* ");
else
printf(" ");
}
printf("\n");
}
for(j = 0; j < 26; j++) /* 結果出力 */
printf("%c ", j + 'a');
printf("\n");
607:デフォルトの名無しさん
08/11/11 20:59:53
すいません・・>>491をお願いします・・
608:デフォルトの名無しさん
08/11/11 21:09:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 問1、ユークリッドの法則を使ってn(n≦100)個の正整数の最大公約数を求めるプログラムを作れ
なお、最終的にはgcd(最大公約数を求める整数の羅列)=結果と画面上に表示するようにすること
問2、n個(n≦100以下)の正整数の最小公倍数を求めよ。
表示方法は先ほどの問いと一緒
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11/13
[5] その他の制限: int gcd(int x, int y)の関数を使用してください
あと、なるべく2つずつ比べるようにして、必ず大きい正数が変数xに入るようにしてください
609:デフォルトの名無しさん
08/11/11 21:15:18
>>607
ボールの初速とか角度は風の影響が全く無いときに当たるようにすればいいの?
それとも投げたら絶対当たるように作るの?
610:デフォルトの名無しさん
08/11/11 21:18:17
[1] 授業単元:C
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
@2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
以下のプログラムを基にして完成せよ.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,原点からの距離を求める関数 length_vector_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体 Point型を使用して,平面の点を表示する関数 print_v_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
A2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
以下のプログラムを基にして完成せよ.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,平面の点を表示する関数 print_v_p2を作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体 Point型を使用して,平面の点を代入する関数 input_point_pを作成する.
ただし,「構造体ポインタ変数」を利用すること.
構造体ポインタ変数に対して,動的にメモリ領域を確保する. malloc を利用する.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual stadio2008
[3.3] 言語: C
[4] 期限: 2008年11月13日
611:デフォルトの名無しさん
08/11/11 21:21:25
>>607
前者でお願いします
612:デフォルトの名無しさん
08/11/11 21:25:52
>>600
とりあえず(1)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
613:デフォルトの名無しさん
08/11/11 21:52:31
>>608
n 個の正数は a[] に入力されているとして。
#include <stdio.h>
int gcd(int x, int y)
{
int r;
if (x < y) {
int t = x; x = y; y = t;
}
do {
r = x % y; x = y; y = r;
} while (r != 0);
return x;
}
int main(int argc, char *argv[])
{
int a[] = { 121, 11, 14641, 1331};
int n = 4;
int i, g;
g = a[0];
printf("gcd(%d", a[0]);
for (i = 1; i < n; i++) {
printf(", %d", a[i]);
g = gcd(g, a[i]);
}
printf(") = %d\n", g);
return 0;
}
614:デフォルトの名無しさん
08/11/11 21:57:28
[1] 授業単元: 自作関数
[2] 問題文(含コード&リンク):
5つの数値を入力し(繰り返し入力)し、最大値を表示する。
[3] 環境
[3.1] OS: Windowsvista
[3.2] VC 6.0等
[3.3] 言語: C
[4] 期限: 今日までなのでよろしくお願いします
[5] その他の制限:繰り返し文しかならってないです。
615:デフォルトの名無しさん
08/11/11 21:59:13
>>614
>>614
#include<stdio.h>
int sori(int x, int y)
{
if( x>=y ) return(x);
return(y);
}
int main(void)
{ int a,b,c,d,e,max;
while ( scanf("%d%d%d%d%d",&a,&b,&c,&d,&e)==5) {
max=a;
max=sori(max,b);
max=b;
max=sori(max,c);
max=c;
max=sori(max,d);
max=d;
max=sori(max,e);
printf("%d %d %d %d %d",a,b,c,d,e);
printf("max=%d\n",max);
}
return (0);
}
616:デフォルトの名無しさん
08/11/11 22:00:00
>>614
>>615
エラーメッセージ
エラー E2209 kadai6-1.cpp 1: インクルードファイル 'stdio.h' をオープンできない
エラー E2268 kadai6-1.cpp 9: 未定義の関数 'scanf' を呼び出した(関数 main() )
エラー E2268 kadai6-1.cpp 18: 未定義の関数 'printf' を呼び出した(関数 main()
上記のようなプログラムを自分で作ったのですが、
上に記したようなエラーメッセージが表示されてしまいました。
これ以上わかりません。どうかよろしくお願いします。
617:デフォルトの名無しさん
08/11/11 22:09:48
>>616
Linux だとちゃんとコンパイルできるから、ワークスペース作ってないとかの問題じゃないの?
以下の行を削除すれば、一応目的は達成できるぞ
max=b;
max=c;
max=d;
618:デフォルトの名無しさん
08/11/11 22:17:17
>>617
試してみます。どうもありがとうございました。
619:デフォルトの名無しさん
08/11/11 22:23:31
コンパイルしたら
「配列または、ポインタでない変数に添字が使われました」って怒られたんですが
どう直せばいいでしょうか?
620:デフォルトの名無しさん
08/11/11 22:24:07
あきらめてください
621:デフォルトの名無しさん
08/11/11 22:25:41
配列またはポインタでない変数に、添え字を使わないようにすればいい
622:デフォルトの名無しさん
08/11/11 22:28:28
まずcppじゃなくてcにするとか
623:619
08/11/11 22:29:25
>>621
ありがとう!
624:デフォルトの名無しさん
08/11/11 22:30:24
てかsoriって関数名なんて意味?ソリ?サンタが乗ってるヤツ?
625:デフォルトの名無しさん
08/11/11 22:33:02
飲み過ぎ食べ過ぎに、ソリマックス。
626:604
08/11/11 22:36:08
>>604,605
素早い対応ありがとうございます。
すいません、問題文のとおりプログラムは1つだけなんです。
つまり、freqency.cを拡張して、横に伸びるグラフと縦に伸びるグラフを
同時に表示したいのです・・・。
605の方を別に作って試してみましたが、縦のグラフは表示できました。
(上の方で1つずつ空白分がずれるのは仕様でしょうか?)
604は、元のプログラムの出力部の変更のみで表示できました。
が、605と一緒にしなければならないので、どうにか605の大文字と小文字の処理を604と
同じくしてできないかと困っています。
よろしければ検討をお願いしたいです。
627:デフォルトの名無しさん
08/11/11 22:38:57
>>626
URLリンク(kansai2channeler.hp.infoseek.co.jp)
違う人だけど。
628:デフォルトの名無しさん
08/11/11 22:42:40
>>626
URLリンク(kansai2channeler.hp.infoseek.co.jp)
629:デフォルトの名無しさん
08/11/11 22:51:20
soriなんて名前付けてsorry・・・。
630:お願いします
08/11/11 23:23:42
[1] 授業単元: アルゴリズムデータ構造U
[2] 問題文(含コード&リンク):
複素数a,bを標準入力から入力し、それぞれの絶対値を求め、2つの複素数の和、差、積、商を求め
標準出力に出力するプログラムを作りたい。これらを求める関数として、複素数の絶対値を求める関数
および和、差、積、商を求める関数が
double cabs(struct mycomplex)
struct mycomplex wa(struct mycomplex,struct mycomplex)
struct mycomplex sa(struct mycomplex,struct mycomplex)
struct mycomplex seki(struct mycomplex,struct mycomplex)
struct mycomplex shou(struct mycomplex,struct mycomplex)
として作ることにした。これらの絶対値、和、差、積と商を求める関数を解答せよ
なおこの構造体は予めCの処理系には用意されているが、それを利用せず独立に考えよ。
[3] 環境
[3.1] OS: Windows
[3.2]
[3.3] 言語: C
[4] 期限: 11月16日まで
[5] その他の制限:構造体の問題です 問題文に沿ってお願いします。
631:604,626
08/11/11 23:23:58
>>627
一部重複箇所(横グラフが2つ出ました)がありましたので、それを修正した上で
実行したところ、結果が得られました。
>>628
こちらも正しい結果が得られました。
627さんのプログラムは使われた文字のみの出力、
628さんのプログラムは全てのアルファベットについての出力が確認できました。
もう一度しっかり目を通した上で使わせていただきたいと思います。
レスからわずか10分足らずでの迅速な対応、本当にありがとうございます。
632:お願いします
08/11/11 23:25:43
>>630
#include<stdio.h>
#include<math.h>
struct mycomplex {double re;
double im;};
int main()
{struct mycomplex a,b;
struct mycomplex wa(struct mycomplex,struct mycomplex);
struct mycomplex sa(struct mycomplex,struct mycomplex);
struct mycomplex seki(struct mycomplex,struct mycomplex);
struct mycomplex shou(struct mycomplex,struct mycomplex);
double cabs(struct mycomplex);
struct mycomplex cinput(void);
void cprint(struct mycomplex);
a=cinput(); b=cinput();
cprint(wa(a,b)); cprint(sa(a,b)); cprint(seki(a,b)); cprint(shou(a,b));
printf("絶対値 cabs(a)=%f\n",carbs(a)); printf("絶対値 cabs(b)=%f\n",cabs(b));}
struct mycomplex cinput(void)
{struct mycomplex z;
scanf("%f %f",&z.re,&z.im);
return z;}
void cprint(struct mycomplex z)
{ printf("複素数 = %f + i*%f\n",z.re,z.im);}
633:大輔
08/11/12 00:18:51
[1] 授業単元:繰り返し処理(for文・while文)
[2] 問題文(含コード&リンク):下に示すような九九の表を表示するプログラムを作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:2008年11月14日15:00まで
[5] その他の制限:printf,scanf,if,switch,程度の関数しか習っていません。for文の入れ子(二重のforループ)を使う。フォーマットをそろえるには、書式指定文字列(変換仕様)を利用。
1 2 3 4 5 6 7 8 9
1 1 2 3 4 5 6 7 8 9
2 2 4 6 8 10 12 14 16 18
3 3 6 9 12 15 18 21 24 27
4 4 8 12 16 20 24 28 32 36
5 5 10 15 20 25 30 35 40 45
6 6 12 18 24 30 36 42 48 54
7 7 14 21 28 35 42 49 56 63
8 8 16 24 32 40 48 56 64 72
9 9 18 27 36 45 54 63 72 81
634:デフォルトの名無しさん
08/11/12 00:26:39
>>633
#include <stdio.h>
main()
{
int i, j;
for(i = 0; i < 10; i++) {
for(j = 0; j < 10; j++)
if (i == 0)
if (j == 0)
printf(" ");
else
printf("%2d ", j);
else if (j == 0)
printf("%d ", i);
else
printf("%2d ", i * j);
printf("\n");
}
}
635:デフォルトの名無しさん
08/11/12 00:35:49
#include <stdio.h>
void main(){
printf(" ");
for(i=0; i<10; i++){
printf(" %2d", i);
}
printf("\n");
for(i=1; i<10; i++){
printf("%d", i);
for(j=0; j<10; j++){
printf(" %2d", i*j)
}
printf("\n");
}
}
636:634
08/11/12 00:37:47
>>635
こっちのほうがすっきりしてるね
637:デフォルトの名無しさん
08/11/12 00:39:11
↑jも1からだった
void main(){
printf(" ");
for(i=1; i<10; i++) printf(" %2d", i);
printf("\n");
for(i=1; i<10; i++){
printf("%d", i);
for(j=1; j<10; j++) printf(" %2d", i*j)
printf("\n");
}
}
638:デフォルトの名無しさん
08/11/12 00:41:40
%2dじゃ空白が入らないんじゃないの?
639:デフォルトの名無しさん
08/11/12 00:47:29
[1] 授業単元:プログラミング言語
[2] 改行を含む文字を受け取るにはどうすればいいんでしょうか?getを使えばスペースを含む文字を変数に書き込めるのは分かったんですが、改行を含む文字を書き込む方法が分かりません。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: ごめんよく分からない。でも使っているのはMicrosoftからダウンロードしたVisual C++
[3.3] 言語: C++
[4] 期限2008/11/15
[5] その他の制限: 無し
640:デフォルトの名無しさん
08/11/12 00:48:35
>>639
getsのこといってんだろうか・・・・・・・・
fgetsを使えばいんじゃね?
641:デフォルトの名無しさん
08/11/12 01:23:17
[1] 授業単元:ハッシュ法
[2] 問題文(含コード&リンク):指定したファイルを読み込み開放番地法でのハッシュ表を生成し、
(i) 線形探査法
(ii) 二重分散法
に基づいた探索関数を作成せよ。
(i),(ii)の探索関数を用いて任意の値
(a) 表中に存在するキー 100個
(b) 表中に存在しないキー 100個
について連続で探索し、総探査回数、総実行時間を記録する。(一部略)
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 11月12日21時迄
URLリンク(www1.axfc.net) (pass: jik1)
↑中身は問題原文、指定されたファイル、自分で作成したプログラムソースです
対象ファイルの中身が文字列なので探索にstrcmpを用いようとしたのですが、実行時にエラーが出てしまってどうすればいいかわからない状態です
よろしくお願いします
642:デフォルトの名無しさん
08/11/12 01:29:27
[1] 授業単元:アルゴリズム
[2] 問題文:5人の学生の3教科の点数(0~100点)をランダムに表示させる。
それぞれの合計点を計算し、合計点の高い順に順位をつける。
[3] 環境
[3.1] WindowsXP
[3.2] gcc 3.4
[3.3] C
[4] 期限:なし
どなたかおねがいします…orz
643:デフォルトの名無しさん
08/11/12 02:06:34
>>642
URLリンク(kansai2channeler.hp.infoseek.co.jp)
644:デフォルトの名無しさん
08/11/12 02:08:18
変数tmpはいらないから消してくれ
645:デフォルトの名無しさん
08/11/12 02:29:43
>>613
ありがとうございます
聞きたいんですが、a[]にn個の整数が入ってるとしてって所なんですけど、どうやって定義したんですか?
646:デフォルトの名無しさん
08/11/12 04:48:09
>>645
int a[] = { 121, 11, 14641, 1331};
647:デフォルトの名無しさん
08/11/12 05:36:33
1] 授業単元:プログラミング演習1 C言語の基礎
[2] 問題文(含コード&リンク):
S=1+2+・・・n<100
を満たす最大の自然数nとSを出力するプログラムを作成してください。
for文とwhile文を用いたのをそれぞれ作成すること。
考え方:ループを用いて1から順に自然数を足して行き、
和が100を段階で計算を打ち切るようにプログラムする
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc バージョンは最新
[3.3] 言語: C
[4] 期限: 今日
[5] その他の制限:変数とハローワールドとscanf、条件文しかならってないはず
期限が近い・・・よろしくお願いします
648:デフォルトの名無しさん
08/11/12 06:06:08
>>647
#include <stdio.h>
main()
{
int S = 0, n;
for(n = 1; S + n < 100; n++){
S += n;
}
n--; // 足しすぎたので 1 引く
printf("n:%d S:%d\n", n, S);
S = 0;
n = 1;
while(S + n < 100){
S += n;
n++;
}
n--;
printf("n:%d S:%d\n", n, S);
}
649:デフォルトの名無しさん
08/11/12 06:14:44
>>648
なるほど・・・条件にS<100だから105しかでてこなかったのか俺・・・。
ありがとうございまいした、勉強になりました
650:デフォルトの名無しさん
08/11/12 08:00:09
[1] 授業単元:画像情報工学
[2] 問題文(含コード&リンク):
ブレゼンハムのアルゴリズムを用いて、ウインドウ内に線分を描画するプログラムを作成しなさい。
仕様1(マウスの左ボタンと右ボタンを使用する。候補線の表示は無し。)
マウスの左ボタンクリック 線分の始点座標の指定
マウスの右ボタンクリック 線分の終点座標の指定及び線分の描画
[3] 環境
[3.1] OS:vista
[3.2] コンパイラ名とバージョン:VC++ 2008
[3.3] 言語: C
[4] 期限: 2008年11月12日まで
[5] その他の制限: ライブラリの点を描画するAPI関数を使って線分を引くこと。直線を引くAPI関数を使ってはならない。
Cは簡単なものしかやったことなくて全く分かりません
誰か助けてくださいお願いします……
651:デフォルトの名無しさん
08/11/12 08:16:50
誰か610お願いします
652:デフォルトの名無しさん
08/11/12 08:29:43
>>610
@
/* (x,y)-平面の点を座標で表す構造体 */
struct Point {
double x;
double y;
};
/* 原点からの長さを求める関数 */
double length_vector_p(struct Point *p)
{
return sqrt(p->x*p->x + p->y*p->y);
}
/* 平面の点を表示する関数 */
void print_v_p(struct Point *p)
{
printf("%f %f\n", p->x, p->y);
}
int main(void)
{
struct Point p;
printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);
print_v_p(&p); /* print_v_pを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector_p(&p) );
return 0;
}
653:デフォルトの名無しさん
08/11/12 08:32:46
>>610 A
struct Point {
double x;
double y;
};
void input_point_p(struct Point *p){
printf("X:");
scanf("%lf", &p->x);
printf("Y:");
scanf("%lf", &p->y);
}
void print_v_p2(struct Point *p){
printf("%f %f\n", p->x, p->y);
}
int main(void){
struct Point *p; /* 構造体ポインタ変数 p */
int num, i;
printf("Input number of vector: ");
scanf("%d", &num);
for (i=0; i< num; i++) {
p = malloc(sizeof(struct Point)); /* malloc を使って領域確保 */
if( p == NULL ) {
printf( "memory cannot alloc!\n" );
exit( 1 );
}
input_point_p(p); /* 関数を使って要素を代入 */
print_v_p2(p); /* 関数を使って要素の表示 */
free(p); /* メモリの解放 */
}
return 0;
}
654:デフォルトの名無しさん
08/11/12 08:38:01
>650
期限は12日じゃなくて19日まででした……
655:デフォルトの名無しさん
08/11/12 10:13:51
>>646
ありがとうございます!
656:デフォルトの名無しさん
08/11/12 11:27:53
>>650
ライブラリって何の?
専用のをつかってるならそれもうp
657:デフォルトの名無しさん
08/11/12 13:21:11
期限が1日伸びたので>>491をお願いできませんか?
658:608
08/11/12 13:21:57
ちょっと聞きたいんですけど、学校から>>608に関係した問題が追加で出されたんだけど、それを解いてもらえることってできますか?
659:デフォルトの名無しさん
08/11/12 13:24:12
[1] 授業単元 プログラミング基礎
[2] 問題文(含コード&リンク)
マイナスの値が入力されるまで繰り返し整数値を入力し最大、最小を求める。
初期化で最大値には最小の値を、最小値には最大の値を設定しておく。
繰り返しにはwhile文を使用する。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2008年 11月14日 18時
[5] その他の制限: 特になし
よろしくお願いします
660:デフォルトの名無しさん
08/11/12 13:40:57
>>656
渡されたプリントに書いてあったまんまなんで、自分でも良くわかりません……
授業ではC言語はおろかPCにすら触ってません
661:デフォルトの名無しさん
08/11/12 13:59:59
>>660
単に授業を聞いてなかったとかサボってたとかじゃなくて?
何の前説もなしにそのプリントをぽんと渡されただけなら行く学校を間違えたな
たぶん、説明はあったのに理解できなくてスルーしただけだろうけど
662:デフォルトの名無しさん
08/11/12 14:05:51
>>659
#include <stdio.h>
int main (void)
{
int n, min=32767, max=0;
while(1){
scanf("%d", &n);
if(n<0)
break;
if(n > max)
max = n;
if(n < min)
min = n;
}
printf("min = %d, max = %d\n", min, max);
return 0;
}
663:デフォルトの名無しさん
08/11/12 14:11:44
>>657
' ' とか '■' とか '○' マルチバイト文字を扱うのが面倒
' ' とか '*' とか 'o' でよかったらそんなにかからないけど
664:デフォルトの名無しさん
08/11/12 14:47:40
>>659
>>662 + 初期値可変入力
#include <stdio.h>
int main( void )
{
int i, n;
int imin, imax;
int nmin, nmax;
printf( "最小値の最大を入力してください>" );
scanf( "%d" , &imin ); /* 数値の入力 */
printf( "最大値の最小を入力してください>" );
scanf( "%d" , &imax ); /* 数値の入力 */
nmin=imin;
nmax=imax;
while (1) {
printf( "数値を入力してください>" );
scanf( "%d" , &n ); /* 数値の入力 */
if ( n < 0 ) /* 終了 */
{ printf( "終了\n" );break;}
if ( n < imin ) /* 最小値 */
{ nmin= n;}
if ( imax < n ) /* 最大値 */
{ nmax= n;}
}
printf(" 最小:%d\n", nmin);
printf(" 最大:%d\n", nmax);
}
665:デフォルトの名無しさん
08/11/12 14:54:11
>>661
授業が元々コンピュータでの画像の描画方法についてなんです
今までプログラムなんて一切なしでアルゴリズム?みたなのを学んでて
いきなりレポートの概要渡されました
授業は毎回出てますし、ノートも取ってます
それに居眠りとか出来る状況じゃないので
説明はあったんですが、それまでの知識じゃ全く理解できませんでした
666:デフォルトの名無しさん
08/11/12 15:03:29
どなたか>>641お願いできないでしょうか?
ヒントだけとかでもいいので・・・orz
667:デフォルトの名無しさん
08/11/12 15:39:48
>>646
調べたい整数の数を
を選べるようにするにはどうすればいいの?
668:639
08/11/12 15:46:44
>>640
あ、すいません。
getsの間違いでした。
fgets…使ってみたんですが、エラーが出ました。
今作っているソースは
#include<stdio.h>
#include<iostream>
#include<string>
using namespace std;
int main(){
char filename[20], time[100], data[1000000];
FILE *fp;
cout<<"CPUtime?"<<endl;
gets(time);
cout<<"data?"<<endl;
gets(data);
fp = fopen("file.txt","w");
fprintf(fp,"%s\n",time);
fprintf(fp,"%s",data);
fclose(fp);
}
で、本当は「file.txt」ってなってるファイル名を、キーボードから受け取るようにして(filenameとは宣言したものの…)
dataに、
「 0 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012
1e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89000006022811e-014 2.63400000595493e-012
2e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89100023673223e-014 2.63400000595493e-012
4.000015229e-011 1.99400005840289e-007 -1.99400005840289e-007 9.89299991211411e-014 2.63400000595493e-012
…」みたいな改行を含んだ文字をコピーして実行画面(コマンドプロンプト)に貼り付けてテキストファイルを作りたいんですがよく分かりません。
669:デフォルトの名無しさん
08/11/12 15:48:54
>>667
調べたい整数をユーザに入力させたい、ってとこか?
それならこんなかんじ。
int main(int argc, char *argv[])
{
int *a;
int n, i, g;
printf("調べたい整数の数は?: ");
scanf("%d", &n);
a = malloc(n * sizeof(int));
for (i = 0; i < n; i++) {
printf("%d 個目の整数を入力してください: ", i+1);
scanf("%d", &a[i]);
}
g = a[0];
--- >>613 と同様 --
free(a);
return 0;
}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4996日前に更新/337 KB
担当:undef