掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25054

Re:処理を行ってくれません。
投稿者---Blue(2006/01/05 02:05:17)


> printf("letters==>>",text);
%sが抜けているようですが。
printf("letters==>%s",text);

ところで、'a'の前の文字は'z'とかでなくて良いのでしょうか?
アスキーコードだと、'`'になるかと。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:処理を行ってくれません。 25055 RiSK 2006/01/05 09:58:13


No.25055

Re:処理を行ってくれません。
投稿者---RiSK(2006/01/05 09:58:13)


>10文字までの入力された英字のそれぞれを一文字前の英字で表す

>ところで、'a'の前の文字は'z'とかでなくて良いのでしょうか?

この仕様で作ってみました。
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#define UPPER "ZABCDEFGHIJKLMNOPQRSTUVWXYZ"
#define LOWER "zabcdefghijklmnopqrstuvwxyz"
int main(void){
    char s[11];
    int i;
    const char*const upper=UPPER+1,*const lower=LOWER+1;
    if(scanf("%10s",s)!=1)return 1;
    for(i=0;i<10;++i){
        if(isupper(s[i]))s[i]=upper[strchr(upper,s[i])-upper-1];
        else if(islower(s[i]))s[i]=lower[strchr(lower,s[i])-lower-1];
    }
    puts(s);
}



この投稿にコメントする

削除パスワード

No.25060

処理を行ってくれません。
投稿者---寿(2006/01/05 23:55:04)


>>10文字までの入力された英字のそれぞれを一文字前の英字で表すというプログラムでみなさまから指摘されたところを直したのですが、たとえばHGDとかとうっても一文字前の英字がでません。根本的にまちがっているのでしょうか?
#include<stdio.h>

main()
{
int i;
char text[11];

printf("Input mojiretsu-->>");
scanf("%s", text);

for(i=0;text[i]!='\0';i++)
if('a'<=text[i]&&text[i]<='z')
text[i]=text[i]-1;

printf("letters==>>%s",text);
}


この投稿にコメントする

削除パスワード

No.25061

Re:処理を行ってくれません。
投稿者---まきじ(2006/01/06 00:01:29)


>たとえばHGDとかとうっても一文字前の英字がでません。

"HGD" だと
>if('a'<=text[i]&&text[i]<='z')
の条件が成りたたないからです。

小文字か大文字かを調べれるのは islower() isupper() を使いましょう。
# 'a' < 'z' や 'A' < 'Z' は保証されていません。


この投稿にコメントする

削除パスワード

No.25062

Re:処理を行ってくれません。
投稿者---επιστημη(2006/01/06 00:33:02)


なぜ元投稿を握りつぶすかな。
答えてくれた方々に無礼だとは思わない?
「掲示板利用宣言」6項に抵触してるし。



この投稿にコメントする

削除パスワード

No.25066

Re:処理を行ってくれません。
投稿者---Blue(2006/01/06 08:39:46)


> 根本的にまちがっているのでしょうか?
はい。

掲示板の使い方も読まずに投稿しているところが間違っています。
しかも、何度も注意されていますし。
名前を変えて投稿されても、分かる人には分かるのでアドバイスをもらうことは難しいでしょう。
少なくとも私はするつもりはないです。


この投稿にコメントする

削除パスワード

No.25093

Re:処理を行ってくれません。
投稿者---ゾン兵衛(2006/01/07 01:22:37)


 threadが不幸な終わり方をしていますが、考えてみました。

#include <stdio.h>

#define MAX 11
#define GAP -1 /* -26 〜 26 */

int main(void)
{
    int loop1, loop0;
    char string[MAX];
    char *alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
    printf("\n  文字列 -> ");
    fgets(string, MAX, stdin);
    for(loop0 = 0; string[loop0] != '\0'; loop0 ++){
        if(string[loop0] == '\n') string[loop0] = '\0';
        for(loop1 = 0; loop1 < 52; loop1 ++){
            if(string[loop0] == *(alphabet + loop1)){
                string[loop0] = *(alphabet + (loop1 + GAP + 26) % 26 + 26 * (loop1 / 26));
                break;
            }
        }
    }
    printf("\n   変換  => %s\n", string);
    return 0;
}




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧