>>944 前スレに似たような質問があったような気がするが。
unsigned long int modpow(unsigned long int a,unsigned long int k,unsigned long int m){ unsigned long int b; for(b = 1; k > 0; a = a * a % m, k >>= 1) if(k & 1) b = b * a % m; return b; }
>>953 ビット演算がよく分かりません。
それはどういうアルゴリズムで、
どのぐらいの大きさまで計算できるんですか?
956 :
デフォルトの名無しさん :02/12/09 04:34
>>955 その(゚Д゚)ハァ?の意味がわからない。どこかおかしいか?
958 :
デフォルトの名無しさん :02/12/09 04:50
959 :
デフォルトの名無しさん :02/12/09 05:24
リストに関するプログラム例として英語の文書ファイルに現れる単語リスト を作成するプログラムを考えることにする。 #include <stdio.h> #include <stdlib.h> #include <string.h> struct CELL{ char word[32]; struct CELL *next; }; int main(){ struct CELL *words, *p; char newword[32]; words = NULL; while(scanf("%s",newword)== 1){ for(p=words; p!=NULL; p=p->next) if(strcmp(newword, p->word)==0)break; if(p==NULL){ p=(struct CELL *)malloc(sizeof(struct CELL)); strcpy(p->word,newword); p->next=words; words = p; } } for(p=words; p!=NULL; p=p->next)printf("%s\n", p->word); }
960 :
デフォルトの名無しさん :02/12/09 05:26
>>959 の例プログラムを単語リストがアルファベット順になるように
機能拡張してください。よろしくお願いします。
>>946 有難うございました。当方初心者なものでこれでも
難しいです。MAKEする上でコンパイルについて簡単に書かれて
いるものってないでしょうか。
962 :
デフォルトの名無しさん :02/12/09 06:12
スプレットシートのコード教えて
>>961 >>946 のページはgoogleで出た中で一通り書いてある所を選
んだだけだから、もっと単純なところも出て来るよ。
>>960 〜略〜
int main(){
struct CELL *words, *p, *prev;
char newword[32];
words = NULL;
while(scanf("%s",newword)== 1){
prev=NULL;
for(p=words; p!=NULL; p=p->next){
if(strcmp(newword, p->word)<0)break;
prev=p;
}
p=(struct CELL *)malloc(sizeof(struct CELL));
strcpy(p->word,newword);
if(p==NULL || prev==NULL){
p->next=words;
words = p;
} else {
p->next=prev->next;
prev->next=p;
}
}
for(p=words; p!=NULL; p=p->next)printf("%s\n", p->word);
}
>>964 どうもありがとうございます!
これで、レポートは間に合いそうです。
>>954 (m-1)*(m-1) が桁溢れしなければ計算できるよ。
m が大きい場合はかけ算も同じように二進展開して計算するといい。
968 :
デフォルトの名無しさん :02/12/11 19:02
最後の伸びが悪いな。 宿題こいやこいや〜。
Amazon で注文したあずまんが大王が先ほど届いたので、これから読もうと思います。 応援してください。
引き篭もりは篭れ!
鼻血出ますた
973 :
デフォルトの名無しさん :02/12/11 22:16
入力されたタブを,次のタブストップまでのスペースをうめる適当な数の空白で置き換える プログラムを書け。 タブストップの位置は,例えばn文字ごとというように固定して考えよ。 という問題なんですが,文章の意味をもう少し判りやすく説明してください。
「タブストップ」の意味はわかっているのか?
975 :
デフォルトの名無しさん :02/12/11 22:27
日本語を噛み砕けというのは C/C++ の話じゃないと思うが・・・。 例えば 「タブ幅=4」 と設定された時に、 "a[\t]bc[\t]def[\t]ghij[\t]klmno[\t]pqrstu という文字列を、 "a bc def ghij klmno pqrstu" に展開しろという事だろ。
>>974 ただの\tじゃないんですか?
[\t]がタブストップ?
>>977 その通り。
[\t] は単に見やすく書いただけ
>>976 そういうことですか
\tの時に,
if(c[cnt]=='\t'){
printf(" ");
printf(" ");
printf(" ");
printf(" ");
}
という風に,表示するのをスペースにするものだと思っていました
文字列自体を変換するってことですか
いろいろとありがとうでした
>if(c[cnt]=='\t'){ >printf(" "); >printf(" "); >printf(" "); >printf(" "); >} これだと条件が足りない。 ab[\t]cd のとき、 abの後ろに、半角スペースが ’2個 ’ だから。
981 :
デフォルトの名無しさん :02/12/12 14:34
新スレ逝くの?
982 :
デフォルトの名無しさん :02/12/12 14:44
ねえ逝っちゃうよ?逝っていいの?ぬるぽ(((;゚∀゚)))ガクガクブルブル
983 :
デフォルトの名無しさん :02/12/12 21:42
>>976 アニキ
そのプログラムできませんでした・・・
教えて・・・
s1=strtok(" ",s);//hankaku'space'kugiri space_of_long = 4-strlen(s1); put(s1); space_of_long bun space put... ?
TpTab
int main(void) { const int tab_stop = 4; char buf[] = "a\tbc\tdef\tghij\tklmno\tpqrstu\t"; char *p = buf; int col = 0; printf("\"%s\"\n", buf); putchar('\"'); while(*p) { if(*p == '\t') do putchar(' '); while(col = (col + 1) % tab_stop); else putchar(*p), col++; p++; } putchar('\"'); return 0; } strtok() だと最後のタブ文字が捕捉できないにょ
英小文字を英大文字に出力が作りたくて 以下のように組んだんですが、大文字がうまく変換されません。 どこがまずいでしょうか? #include<stdio.h> void change(char *a) { while (*a != '\0'){ if (0x61 <= *a <= 0x7a) *a -= 32; a++; } } main() { char a[100]; printf("input words\n"); scanf("%s", a); printf("%s\n", a); change(a); printf("%s\n", a); return 0; }
よくわからんが toupper() を使え。
989 :
デフォルトの名無しさん :02/12/13 15:33
>>987 よくわかるが toupper() を使え
#include <stdio.h> #include <ctype.h> int main(void) { char buf[100], *p = buf; puts("input words"); fgets(buf, sizeof(buf), stdin); fputs(buf, stdout); while(*p = toupper(*p)) p++; fputs(buf, stdout); return 0; }
レス、有難うございます。 書き忘れていたんですが ASCIIコードを使って変換しろということでした、すみません。 前述したプログラムを実行すると 英大文字も小文字と同様 -32されているようなので if (0x61 <= *a <= 0x7a) これがまずいのかなと考えてるんですが・・?
> ASCIIコードを使って変換しろ その課題出した香具師、砲撃していいよ・・・
if (0x61 <= *a <= 0x7a) ↓ if (0x61 <= (unsigned char)*a <= 0x7a)
>>991 > if (0x61 <= *a <= 0x7a)
そういう書き方はできないよ。
if (0x61 <= *a && *a <= 0x7a)
995 :
デフォルトの名無しさん :02/12/13 16:18
a++している場所が悪 よく考えて
996 :
bloom :02/12/13 16:19
997 :
デフォルトの名無しさん :02/12/13 16:20
>>991 激しく( ゚Д゚)マズーです
if (0x61 <= *a && *a <= 0x7a)
としなさい
<=は左結合演算子なので左から順に評価されます
0x61 <= *a <= 0x7a とすると
まず 0x61 <= *a が評価され
この時点で大文字も小文字も真になります
言い切れませんが真は大抵 1 なので
0x61 <= *a が 1 に置き換わり
その後に右の <= が評価されるので
1 <= 0x7a が評価されることになり
これも真となります。
結局 if (0x61 <= *a <= 0x7a) だと
大文字小文字どころか
0x61 <= *a が成り立てば
全部通ってしまいます
if ('A' <= *a && *a <= 'Z') *a = (*a - 'A') + 'a'; よく読んでないけど、こうすべきだと思ったのは俺だけか
次スレ立つまで書き込み禁止
漏れ立てられないからだれかヨロシク
>>993 おいおい
1000 :
デフォルトの名無しさん :02/12/13 16:20
お前等C/C++なんて糞言語やってないでDelphiしろ! デルファイ!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。