C/C++の宿題なら俺にやらせろ!

このエントリーをはてなブックマークに追加
>>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
ビット演算がよく分かりません。
それはどういうアルゴリズムで、
どのぐらいの大きさまで計算できるんですか?
>>947
(゚Д゚)ハァ?
956デフォルトの名無しさん:02/12/09 04:34
>>954
処理系に依存するっスよ
>>955
その(゚Д゚)ハァ?の意味がわからない。どこかおかしいか?
958デフォルトの名無しさん:02/12/09 04:50
>>955
新しいため息のつきかた・・・
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の例プログラムを単語リストがアルファベット順になるように
機能拡張してください。よろしくお願いします。
961943:02/12/09 05:51
>>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 が大きい場合はかけ算も同じように二進展開して計算するといい。
967943:02/12/09 19:00
>>963
もう少し探してみます。どうもです。
968デフォルトの名無しさん:02/12/11 19:02
最後の伸びが悪いな。
宿題こいやこいや〜。
Amazon で注文したあずまんが大王が先ほど届いたので、これから読もうと思います。
応援してください。
引き篭もりは篭れ!
>>969
やめとけ、今の君には刺激が強すぎる。
鼻血出ますた
973デフォルトの名無しさん:02/12/11 22:16
入力されたタブを,次のタブストップまでのスペースをうめる適当な数の空白で置き換える
プログラムを書け。
タブストップの位置は,例えばn文字ごとというように固定して考えよ。

という問題なんですが,文章の意味をもう少し判りやすく説明してください。
「タブストップ」の意味はわかっているのか?
975デフォルトの名無しさん:02/12/11 22:27
>>973
出題者にきけよ
日本語を噛み砕けというのは C/C++ の話じゃないと思うが・・・。

例えば 「タブ幅=4」 と設定された時に、

"a[\t]bc[\t]def[\t]ghij[\t]klmno[\t]pqrstu という文字列を、
"a   bc  def ghij    klmno   pqrstu" に展開しろという事だろ。
977 :02/12/11 22:34
>>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++している場所が悪 よく考えて
996bloom: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しろ! デルファイ!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。