ナウシカ
>>932 それでいいんじゃない?
(ちょっとバグってるけど)
while (fgets(buf,BUFSIZE,fp)) {
for (i=strlen(buf)-2 ; i>=0; i--)
printf("%c",buf[i]);
putchar('\n');
}
二つの整数値を読み込んで、
小さい方の数以上で大きい方の数以下の偶数を
すべて加えた値を表示するプログラムを作成せよ。
おせーて下さい。
>>940 #include <stdio.h>
#include <stdlib.h>
int
main(int argc, char **argv)
{
int a,b;
if (argc<3) return 1;
a = atoi(argv[1]);
b = atoi(argv[2]);
a = a < b ? b : a;
printf("%d\n", a<2 ? 0 : a/2*(a/2+1));
return 0;
}
#include <stdio.h>
int main(void)
{
int sum=0;
int min,max;
int i;
scanf("%d%d",&min,&max);
if(max < min){
i=min;min=max;max=i;
}
for(i=(min+1)/2*2;i<=max;i+=2)
sum+=i;
printf("%d\n",sum);
return 0;
}
for(i=min; i<=max; i++)
if (i%2==0) sum += i;
945 :
デフォルトの名無しさん:03/05/26 22:00
和が一定となるような自然数の列を列挙するプログラムを作成せよ
946 :
デフォルトの名無しさん:03/05/26 22:13
#include <stdio.h>
int main(void) {
int n, i;
printf("Input a Number:");
scanf("%d", &n);
for (i = 1; i <= n / 2; i++) {
printf("%d, %d\n", i, n - i);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef char* ET;
struct node
{ET x;struct node *next;};
insertafter(struct node *p , ET x)
{struct node *new;
new = (struct node *)malloc( sizeof(struct node) );
new->x = x;
new->next = p->next;
p->next = new;}
deletenext( struct node *p)
{struct node *tmp;
if( (tmp = p->next) != NULL )
{p->next = tmp->next;free(tmp);}
}
struct node * initlist()
{struct node *new;
new = (struct node *)malloc( sizeof(struct node) );
new->next = NULL;
return(new);}
main()
{char buf[1000];
struct node *head;
head = initlist();
while ( fgets(buf,1000,stdin) != NULL )
insertafter( head,strdup(buf) );
while ( head->next != NULL )
{printf("%s",head->next->x);
deletenext(head);}
}
このプログラムのリストの最後尾のノードを返す関数を作れという問題です。
よろしくお願いします。
950 :
デフォルトの名無しさん:03/05/27 00:44
>>929 insert関数は引数で渡したdpをkeyが昇順になるようにリストに挿入するように作った。
機能としては、リストから挿入場所を探す、dpをリストに挿入する。
リストへの挿入は更にリストの要素(node)の作成、実際の挿入とに分かれる。
この部分が要素を作成しているところ。
if ((node = (nodeType*)malloc(sizeof(nodeType))) == NULL) return 0;
node->data = *dp;
mallocで要素分の領域を確保しているが、できなかったら挿入失敗となる。
次に*dpを代入して、挿入する要素を作っている。
nextメンバは、実際に挿入するときに書き換えるのでここではなにもしない。
この部分が挿入しているところ。
node->next = p->next;
p->next = node;
他にもp->nextをheadにした部分がある。
pの指す要素の次に挿入することなる。pの次の要素はp->nextだけが指しいるため、
まずpの次の要素を挿入する要素の次に入れる。そして、pの次に挿入する要素を入れる。
その他の部分が探しているところ。
リストに何も要素がないとき先頭に挿入。
先頭要素のkeyが挿入するkeyよりも小さいときも昇順にするため、先頭に挿入。
deleteと同じく、挿入する箇所の1つ前?の要素のnextをいじらなければならないので
そのためpは1つ前の要素を指すようにしている。
pの次の要素のkeyが挿入するkeyよりも小さいとき昇順にするため、そこに挿入する。
挿入する箇所が見つかったのでループを抜ける。
リストの終端に辿り着いた時(p->nextがNULL)は終端に挿入することになるので、同じくループを抜ける。
mallocが失敗する以外は挿入できましたとなる。
>>948 struct node * gettail(struct node *p) {
while (p->next != NULL) p = p->next;
return p;
}
何でinsertnextじゃないんだろ…
953 :
デフォルトの名無しさん:03/05/27 05:07
>>945 拘束条件は?
「自然数の列」だから個数は自由として、重複は認めるの?
954 :
デフォルトの名無しさん:03/05/27 05:09
あ新スレに移ってた。自爆!!
955 :
デフォルトの名無しさん:03/05/27 19:27
∧_∧
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
梅
こっそり
こっそり
ぬるぽ
( ・∀・) | | ガッ!
と ) | |
Y /ノ | |
/ ) .人
_/し' < >_Λ ∩
(_フ彡 V`Д´)/
/ ←
>>960
void *nullpo = 0;
>>962 もうそれも終了しかかってるわけだが...。
null は英語では「なる」というふうに読むにも関わらず、
なぜドイツ語風に「ぬる」と読むのか。
967 :
デフォルトの名無しさん:03/06/08 11:14
一番下まで落ちてたぞこのスレ。
のこり34取ってやってくれ
晒しage
969 :
水先案内人:03/06/08 13:38
しまった。6代目の方だった。逝って来ます。
しかしなんでscanfを最初の方で教えるのかねえ。
最初は fgets と fputs で次は fgets と sscanf と fprintf の方がいいと思うんだが。
std::cinを教えればscanfの問題は解決
>>974 うわー、絶対いっしょに仕事したくないタイプ。
7代目の方が先に終るとわ
>>977 うわー、絶対いっしょに仕事したくないタイプ。
>>977 うわー、絶対いっしょに仕事したくないタイプ。
>>978 自己完結してるんだからちょっかいだすなよ…
>>979 うわー、絶対いっしょに仕事したくないタイプ。
何いってる? お前ら仕事無いだろ
>>981 うわー、絶対いっしょに仕事したくないタイプ。
おれはお前らと一緒に仕事がしたいよーーーーーーーーーー!!!
ウワーーーーーーン!!