• 締切済み

C++の英数字の出力について

英数字を入力して、英小文字の場合はそのまま表示、 英大文字は2回、数字なら3回連続して表示するプログラムを作りたいと考えています。 (例) abcde  →  abcde ABCDE  →  ABCDEABCDE 12345  →  123451234512345 a1B2c  →  a111BB222c 英小文字か、英大文字か、数字を判定し、出力するには配列とポインタを使用するのだと予想してますが、 プログラミングが全く進みません。 どなたかご教授を、よろしくお願い致します。

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

ABCDE  →  AABBCCDDEE 12345  →  111222333444555 じゃないと a1B2c  →  a111BB222c との整合性が取れないように思います

  • arain
  • ベストアンサー率27% (292/1049)
回答No.3

No.1です ……えーと、数字や大文字小文字を判断する処理もないのですね。 では、まず必要な機能の抽出を行うことから始めてください。 ・英数字を入力(しデータとして保持)する方法 ・英字(大文字/小文字)、数字を判断する方法 がまず必要です。 重要な文字を繰り返して表示する部分は以下のように考えると楽です。 a.確認する最初の文字の格納場所と英数字の種別を記録しておく。 b.次の文字の種別を確認する。  →a.と種別が同じならさらに次の文字を確認する  →a.と種別が違っていたら一致していた部分までを種別にあた回数で表示する。   その後、違っていた部分からa.とb.を行う。 と考えると、データの格納方法によってはポインタを使用してもしなくても処理できることになります。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

特定の処理系に特化するならともかく、ポインタを使わずに実装する方法は思いつきませんが...(関数呼出し演算子はオペランドに関数へのポインタを要求するので、ポインタを使わないと一切の関数が使えないため) 入力はどこからどのように行うのでしょうか? 表示はどこへどのように行うのでしょうか?

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>英小文字か、英大文字か、数字を判定し、出力するには配列とポインタを使用するのだと予想してますが、 >プログラミングが全く進みません。 まず、進んでいるところまでのソースを公開してください。 ちなみに、ポインタなど使用せずともできます。

gonyo_nyo
質問者

補足

>arainさん レスありがとうございます。 #include "stdafx.h" #include <iostream> using namespace std; int main() { までです。全く進んでいません。 ポインタを使用しなくても出来るのですか・・・。

関連するQ&A

  • c言語の文字列出力

    プログラミング超初心者です サイトで文字列の出力について調べていたところ c言語は変数に文字列を代入することができないのでstrcpy関数を使い以下のようにするとあります char s[5]; strcpy(s, "ABCDE"); printf("%s\n", s); ところが他のサイトでは以下のように説明しています char s[5] = "ABCDE"; printf("%s\n", s); 明らかに後者の方が簡単で良いように見えるのですが違いはなんですか? あと、文字列の配列の指定?の[5]の部分なのですが 数字を記載しているところがほとんどですが省略しているところも有ります どんな文字列が入るかわからない場合もありますがここは省略しない方が良いのですか? よろしくお願いします

  • エクセルで英数字を合計するやり方

    エクセルで小文字のアルファベットと数字が一緒に入っているセルの数字だけを合計するやり方を教えて下さい。 例えば、 a1b1c1 a1b1c1 上記のような2つのセルに英数字がある場合、 a2b2c2 となるように合計するやり方を知りたいです。

  • C言語でcharの足し算

    char型の配列の中から数を取り出して足し算させたいです。 この配列には数字だけではなく英数字のどちらかが入るので、intではなくchar型の配列を作りました。 scanf("%c", &i); と、scan文をループさせてchar i[3]の中身を{1,1,a}と入れたとします。 このとき、i[0]+i[1]とやると、中の文字コード(?)を足してしまって98という結果が出てきてしまいます。 かといって、 scan("%d", &i);とやると、数字を入れているときはいいのですが英字を入れると「フ」という文字になってしまいます。 上手い具合に数字はコードじゃなく数字として、英字は英字のまま1つの配列の中に入れられないものでしょうか。 宜しくお願いします。

  • c言語プログラミングHELP!

    c言語でプログラムを組んでるんですが、どうしてもわからないものがありまして、 まず一つ目がキーボードから英小文字を一つ入力し、その文字を大文字に変換して出力するプログラミングです。結果がまずひとつの英小文字を入力して、入力した文字と、大文字に変換した文字を出力するプログラミングです。 ちなみにヒントは'a'=97,'A'=65です 二つ目が二桁の16進数('41'から'49','50'から'59')を入力すると対応する文字を表示するプログラミングです。また、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒントは入力は一つの数値か、二つの文字か?だそうです。) 結果は二桁の16進数('41'から'49','50'から'59')を入力して、文字コードの二桁の数字と文字を出力するプログラミングです。 お願いします。

  • perlで英数字を取り出すには?

    Perlで英数字下記の条件で取り出したいのですがどのようにすればよいでしょうか? ご返答いただけるととても助かります。 宜しくお願い致します。 条件 英数字と半角文字とスペースのみを取り出したい。(それ以外の文字は半角スペースに置き換えたい。) また、連続するスペースは削除したい。 ------------------ $str ='※第25回Ski Festival開催'; $str =~ ???????[0-9A-Za-z ] print $str; ------------------ 期待する結果 25 Ski Festival

    • ベストアンサー
    • CGI
  • 英数字と記号の正規表現

    英数字と記号の文字であればtrueを返すような判定を正規表現で行いたいです。 英数字の判定([0-9a-zA-Z])、記号([\\p{Punct}]+)の判定は個別にテストして動作したのですが、二つを組み合わせて書くようにするにはどのようにすればよいのでしょうか? 当然ですが、以下のように書くと文字列の全てがそれぞれ記号なのか、英数字なのかを判定してしまうためfalseを返してしまいます。 String str = "~!@#$%^&*()_+{}|:"<>?`-=[]\;',./1234567890abcdefgxyz"; System.out.println(str.matches("[\\p{Punct}]+") || str.matches("[0-9a-zA-Z]+")); 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • C++とC#って何が違うのですか?

    C++とC#って根本的に何が違うのでしょうか? 私はC言語でちょっとしたプログラミングをするか、C#で電卓くらいしか作れないのですが、「C++はメモリ管理が大変」とか聞きますが、どのように大変なのですか?配列の宣言と削除くらいしか知らない超ど素人です。。 そもそもメモリを気にするほどのアプリケーションを作れないのでイマイチC++の大変さんがわかりません。 あとC#にポインタがないと聞きますが、ないとどういう問題が起こるのでしょうか?

  • C言語について教えてください。

    #include <string.h> #include <stdio.h> void print_all_char(char *str) { while(*str! = '\0') { printf("%c\n", *str); str++; } } int main(void) { char astr[5]; char *pstr; strcpy(astr, "ABCD"); pstr = "EFGHI"; puts("「配列で実現する文字列」を表示する"); puts(astr); puts("「配列で実現する文字列」のすべての文字を表示する"); print_all_char(astr); puts("「ポインタで実現する文字列」を表示する"); puts(pstr); puts("「ポインタで実現する文字列」のすべての文字を表示する"); print_all_char(pstr); return 0; } 自分でつくった上のプログラムではエラーが発生します。 なぜだか分かりません。教えてください。 ちなみに、実行結果は 「配列で実現する文字列」を表示する ABCD 「配列で実現する文字列」のすべての文字を表示する A B C D 「ポインタで実現する文字列」を表示する EFGHI 「ポインタで実現する文字列」のすべての文字を表示する E F G H I のようにしたいです。 よろしくお願いします。

  • 英数字を漢数字に変換したものを隣のセルに出力する関数は?

    題名ではわかりにくいかもしれませんが、 A1セルに 「東京都世田谷区新町1235」とあるとします それを、関数を使ってB1セルに 「東京都世田谷区新町一二三五」と表示できないでしょうか? 出来れば、マクロなどの、一過性のものではなく、英数字を変更すると、漢数字も自動的に変更されるものがいいんです。 また、英数字と漢数字両方のセルが必要なので、セルの書式設定を使ってA1セルを漢数字に変換するのは使えません

  • C++ countについて

    最近C++の勉強を始めたのですが、 int count(char*a) という関数はどういう意味なんでしょうか? この関数を使って、たとえば abcde1f234 と打ち込むと、この文字列の数字の個数(この場合、4)を表示するプログラムを作成しなければならないのですが。 ifを使って0以上ならカウント、0以下ならカウントしないという感じで作ってみたのですが、打ち込んだ文字列全ての個数が表示されてしまいます。 どなたか解答お願いします。

専門家に質問してみよう