ソースをこちらにお願い致します!全て別のプログラムです
cin.getline()を使用すること。また、stringクラス及び標準ライブラリの文字列関連の関数は使用しないこと
一つ目。
文字を入力すると、文字列中のアルファベット大文字を小文字に変換するプログラム。入力できる文字数は最大80文字。
例 入力:ABcdEFgh
結果:abcdefgh
二つ目。
文字列を入力すると、文字を循環しているように見えるプログラム。入力できる文字数は最大80文字。
例 入力:Hello
結果:
Hello
elloH
lloHe
loHel
oHell
Hello
三つめ。
文字列を入力すると、文字が逆順になるプログラム。入力できる文字数を最大80文字とする。
例 入力:Hello
結果:olleH
どなたかお願いします!
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
/*
これをそのまま提出すると
おそらく呼び出し食らいます。
*/
#include <iostream>
#include <algorithm>
#include <iterator>
/*
文字を入力すると、文字列中のアルファベット大文字を小文字に変換するプログラ
ム。
*/
void one(char* first, char* last) {
std::transform(first, last, first,
[](char ch) { return ( ch >= 'A' && ch <= 'Z' ) ? ch - 'A' + 'a'
: ch ; });
}
/*
文字列を入力すると、文字を循環しているように見えるプログラム。
*/
void two(char* first, char* last) {
for ( char* start = first; start != last; ++start ) {
std::rotate(first, first+1, last);
std::cout << first << std::endl;
}
}
/*
文字列を入力すると、文字が逆順になるプログラム。
*/
void three(char* first, char* last) {
std::reverse(first, last);
}
/*
上記みっつを呼び出す
*/
int main() {
const int N = 80;
char line[N];
std::cin.getline(line, N);
char input[N];
std::copy(std::begin(line), std::end(line), std::begin(input));
char* first = input;
char* last = std::find(std::begin(input), std::end(input), '\0');
std::cout << "---- [1]\n";
one(first, last);
std::cout << input << std::endl;
std::cout << "---- [2]\n";
std::copy(std::begin(line), std::end(line), std::begin(input));
two(first, last);
std::cout << "---- [3]\n";
std::copy(std::begin(line), std::end(line), std::begin(input));
three(first, last);
std::cout << input << std::endl;
}
No.4
- 回答日時:
これ, 学校の課題ですか? そして, 自分では何も考えず他人の書いたプログラムを丸写ししておきながら, あたかも自分で作ったかのように見せようという魂胆ですか?
1番目は, それではおかしいのでは>#3. 大文字→小文字の変換をそのように書く必然性はないですよ.
「標準ライブラリの文字列関連の関数」ってのは, いったいどこまでを指すんだろ....
No.3
- 回答日時:
だいたい下記の様な処理の流れになると思います。
変数としては入力表文字列、出力文字列の配列、ループカウンタ、三番目は文字数カウント用の変数くらいですね。
3つとも大体似た様な処理になります。いきなりコードを書かないで、一旦下記の様に処理の流れを整理すると良いですね。
1番目
入力された文字列の先頭から一文ずつ取り出し、出力用の文字列へ順次コピーする。
その際に、’A'以上、’Z'以下の文字は、0x20を加算してからコピーする。
この処理は、入力文字列の最後(ヌル)になるまで繰り返し、最後に出力用文字列の最後にヌルを代入して出力文字列を表示する。
2番目
入力された文字列の二文字目から一文字ずつ取り出し、出力用文字列の先頭から順次コピーする。
この処理は、入力文字列の最後(ヌル)になるまで繰り返し、最後に出力用文字列に入力用文字列の先頭文字と、ヌルを代入し、出力文字列を表示する。
3番目
入力された文字列を先頭からチェックし、文字数をカウントしていく。入力文字列の最後(ヌル)になるまでカウントを繰り返す。
入力文字列のN番目~1番目を出力文字列の先頭から順次コピーする。
最後に出力文字列の最後にヌルを代入し、出力文字列を表示する。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Java Java 南京錠 2 2023/02/04 11:46
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Java java 入力された文字列を数値に置き換えて整数にし、計算をしたいです。 <を10として /を1とし 4 2022/05/16 21:08
- C言語・C++・C# C言語について質問です。 以下のような結果を出すためにはどのようなコードが良いですか?サンプルコード 3 2022/11/01 16:19
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列中に含まれる文字の個数...
-
反転した数値を表示させるやり方
-
文の意味
-
C言語 配列 文字列
-
fgets関数を使用したときの文字...
-
c言語のプログラミングでキーボ...
-
Cで「大文字、小文字の判定」は...
-
2÷3などの余りについて
-
C言語で%を使わない余りの出し方
-
比較回数と交換回数表示について
-
信頼区間の1.96や1.65ってどこ...
-
nCmの関数
-
複数桁10進数の*桁目だけを抽出...
-
Notepad++の関数リスト表示の変...
-
C言語のfor文です。 繰り返しの...
-
break文でループを一気に抜ける...
-
正負を反転させて出力するプロ...
-
#define _CRT_SECURE_NO_WARNIN...
-
error C2143: 構文エラー : ';'...
-
プログラムでの数字につく”f”の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CStringのFindで文字列検索を行...
-
sscanfとscanfの違いがよくわか...
-
反転した数値を表示させるやり方
-
fgets関数を使用したときの文字...
-
C言語 空白の行(改行のみ)が...
-
charと%c , %s の関係について
-
C言語のステップ数をカウントす...
-
fgetsで拾われる改行文字を削除...
-
itoaわかりません
-
C言語で16進数文字列から16進数...
-
strstrを利用しない文字列検索...
-
文字列中に含まれる文字の個数...
-
Cで「大文字、小文字の判定」は...
-
1行の文字列を時間差で表示する...
-
エディットボックスに入力され...
-
[Java]文字列分割
-
文字列の途中に「0」がある場...
-
教えていただけませんか?C言語...
-
atoiでの文字列以外のエラー処...
-
fgetsでバッファ残留文字列を無...
おすすめ情報