助けて下さい!

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ascii

助けて下さい!

#1

投稿記事 by ascii » 6年前

学校の課題で下のような結果を出すプログラムをつくりたいのですが、如何せん初心者で手も足も出ません。
助けていただけないでしょうか。

Revise the above program to output the next character to an input alphabetical character. If the input is ’z’ , the program shall return ’A’;

>input a small character = 1
>input a small character = a
>next is = B
>input a small character = 3
>input a small character = b
>next is = C
>input a small character = a
>next is = B
>input a small character = z
>input a small character = A

beatle
記事: 1280
登録日時: 8年前
住所: 埼玉
連絡を取る:

Re: 助けて下さい!

#2

投稿記事 by beatle » 6年前

フォーラムルールにありますように、課題の丸投げは禁止されております。asciiさんが出来るところまで提示してください。
学校の課題ということですので、きっと授業があるのでしょう。
Hello Worldプログラムくらいは書けますか?

ascii

Re: 助けて下さい!

#3

投稿記事 by ascii » 6年前

すいません、ルールを読まずに投稿してしまいました。ご放念下さい。ご指摘ありがとうございます。
HelloWorld使ったことはありますが、ないに等しいと考えて下さい。

整数0~99を出すのは、

#include <stdio.h>
int main(){
int i;
for( i=0;i<100; i++){
if(i%2 == 0){
printf("%d\n", i);
}
}
return 0;
}

小文字を入力した時に答えが大文字に変換されるプログラミングを上のに足したらいいのでしょうが、
ネットで探すとtolowrやtouprを使っています。それを使わずに導き出したいのです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 助けて下さい!

#4

投稿記事 by softya(ソフト屋) » 6年前

とりあえず、入力をそのまま出力する課題に似たプログラムをまず作ってみましょう。

>input a small character = a
>next is = a
そのまんま出す感じです。

あとcodeタグを使って下さい。フォーラムルールに書いてあります。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6252
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 助けて下さい!

#5

投稿記事 by みけCAT » 6年前

文字がASCIIコードで表されていると仮定すると、大文字と小文字の変換はアルファベットの文字コードに0x20をxorするとできます。

まず、課題のサンプルの入力と出力を分離してください。
今の状態だと、このプログラムでもいいと解釈できます。

コード:

Revise the above program to output the next character to an input alphabetical character. If the input is ’z’ , the program shall return ’A’;

>input a small character = 1
>input a small character = a
>next is = B
>input a small character = 3
>input a small character = b
>next is = C
>input a small character = a
>next is = B
>input a small character = z
>input a small character = A
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6252
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 助けて下さい!

#6

投稿記事 by みけCAT » 6年前

これはabove programがわからないと難しそうですね。
著作権の関係で載せられないかもしれないですが・・・
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ascii

Re: 助けて下さい!

#7

投稿記事 by ascii » 6年前

above program はこちらになります。
みなさんありがとうございます。

Make a program, which prompts us to input a character and if the character is a small alphabetical character it returns its capital character. Otherwise it prompts again for the input. After 100 times iteration it stops. It works such that

コード:

> a.out 
>input a small character = 1 
>input a small character = 2 
>input a small character = 3 
>input a small character = a 
>capital is = A 
>input a small character = b 
>capital is = B 
>input a small character = A 
>input a small character = c

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 助けて下さい!

#8

投稿記事 by softya(ソフト屋) » 6年前

プログラムじゃなくて、実行結果なのですが間違っていませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1574
登録日時: 7年前

Re: 助けて下さい!

#9

投稿記事 by usao » 6年前

現在の課題ができなくてこまっている
→じゃあ一個前の(above program)ならできるのでしょうか?
 →できるなら今回のもほとんど大差ないと思うけどわからない点は何でしょう?
 →できないなら…学校の課題ということであれば,何かしら教科書みたいなのとかがあると思うのです.
  おそらく
  >文字がASCIIコードで表されていると仮定すると、大文字と小文字の変換はアルファベットの文字コードに0x20をxorするとできます。
  のようなヒント等は事前になにかしらの形で与えられているのではないでしょうか.
  関連しそうなあたりを もう一度見返してみてはいかがでしょう.
  で,その上で(自己解決しないようであれば),他の方がおっしゃられているように
  「ここまではわかるのだが,ここがわからん」ということを具体的に示されるとよいかと思います.

オフトピック
課題の内容から察するに,かなり初期の段階だと思うのですが,
今後も同じようにプログラミング課題をこなさねばならないような環境におられるのであれば,
何かしらあやふやな点があるならば,この機会に復習してしっかり潰しておくとよいかと.
今なら復習内容量もかなり少なくて済むでしょうし.
今回の課題を無理矢理乗り切ってしまうと,次回の課題ですぐまた行き詰ってしまう可能性が大きいと思いますので.

初級者
記事: 200
登録日時: 9年前

Re: 助けて下さい!

#10

投稿記事 by 初級者 » 6年前

元のプログラムがどういうものかよくわかりませんが、
こういうことがしたいのでしょうか。

コード:

#include <stdio.h>
#include <ctype.h>

char getNextCapital(char c)
{
   return (c == 'z') ? 'A' : c + 'A' - 'a' + 1;
}

int main(void)
{
   char c;

   while (1) {
       do {
           printf("input a small character = "), scanf(" %c", &c);
       } while (!islower((int) c));
       printf("next is = %c\n", getNextCapital(c));
   }
   return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る