查看完整版本: (已解決)有關於數字比大小
頁: [1]

abcd345107 發表於 2016-11-8 09:31 PM

(已解決)有關於數字比大小

本帖最後由 abcd345107 於 2016-11-9 12:37 AM 編輯

我是剛踏入程式世界的新人,今天上課有道題目是 給出 任何整數 (正負都可)
不超過20個 (意思是少於20也可,中斷方式好像可用ctrl+z),最後輸出 最大和最小值

我的構想是利用陣列,然後利用
sort(buf, buf +x);<<上課教的,讓陣列內由小到大, 然後我再輸出第一 個 和最一個就可以獲得最小和最大

但我的問題有:
1.如何輸進去(我試過 cin>>s , buf=s的手法 ,但好像不對)

2.我的構想 可以成功執行,哪裡用盲點或觀念不正確?


ps 我是剛入門新手,請各位高手大大 用比較複雜好懂的方式講解 感恩><
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

baepi 發表於 2016-11-8 11:32 PM

因為大大是標榜上課題目...這讓回答者添加不少難度~因為畢竟是學習中~實在是不知道大大學過那些~沒學過那些...寫出你沒學過的內建函式...好像也不能幫助大大
以下是給大大方向~希望能幫上大大
您期望的陣列方式~就某種程度上是可行的...如下例子int num;
        for( int i = 0 ; i < 20 ; i++ )
        {
                cin>>num;
        }只是這寫法有個缺點~就是不能指定中斷方式
畢竟只要輸入非數字的東西進去...cin判定此值不該丟到int內就會跳開了
就連輸入負號...後面沒加數字也不行....因為那樣不能構成數字咩
而且最重要的是~感覺cin就壞掉了~在程式結束之前修不好了(至少我不會修)...因此假如只是一次性的還可以這麼搞~但是假如還要做迴圈重新輸入數字....就不能這麼玩...自己跑過一次就會知道我再說甚麼

先假設這樣大大可以接受...假如不能接受~就乖乖把字串抓出來轉成數字在存起來囉(強烈建議要學先輸入字串再把值轉成數字...畢竟這種怪招以後肯定會出包)
因此先給錯誤的int....基本流程#include <iostream>
using namespace std;
#include<algorithm>

int num;
int array_sum = 0;
void main()
{
        for( int i = 0 ; i < 20 ; i++ )
        {
                if ( cin>>num )
                {
                        array_sum++;        //紀錄使用者總共存了多少字
                }
                else
                {
                        break;        //有給非數字的字元....離開for迴圈
                }
        }

        sort( num , num + array_sum );
        cout<<"\n結果出爐...我是分隔線\n";
        for( int i = 0 ; i < array_sum ; i++ )
        {
                cout<<num<<endl;
        }
}最後怎麼用字串轉數字呢?相信課程有說過吧...給個簡單的範例char s ;
        cin>>s;
        num = atoi( s );相信把我說的東西吸收後...在自己添加中斷條件 ...如果可以的話~順便添加檢查是否是純數字的字串....就是您要的東西了~別問我為何不給完全版~畢竟了解學習很重要呀{:31:}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

abcd345107 發表於 2016-11-8 11:46 PM

baepi 發表於 2016-11-8 11:32 PM static/image/common/back.gif
因為大大是標榜上課題目...這讓回答者添加不少難度~因為畢竟是學習中~實在是不知道大大學過那些~沒學過那些 ...

大.....大神rrr 感謝回復  目前我真的是"剛" 學呢 ~ 函式目前都還沒動用到,只教一些最最基本的

abcd345107 發表於 2016-11-9 12:45 AM

本帖最後由 abcd345107 於 2016-11-9 12:45 AM 編輯

https://a476.static-file.com:8000/data/avatar/000/01/20/56_avatar_small.jpg
baepi 那假如真有問題~在說明哪裡不懂吧~能簡述學過那些涵式會更好...像是之前提到的sort跟cin...就很方便我說明^^  發表於 9 分鐘前

剛剛經由大大講解略有領悟(在下資質愚鈍,但不知為何就是喜歡程式常常又愛又恨XD)

以後應該會有許多問題 期望大大再次提點在下

目前只看到函式 有  #include<algorithm>#include<iostream> #include<string> #include<iomanip>

目前進度為 int (整數)  flaot(浮點數)  double(好像跟浮點數差不多?)  string(字串) char(字元)
bool(布林值)
陣列 迴圈
一點點函式講解 如實作 呼叫 之類 霧煞煞 =w 以後要更加努力學習呢~...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

cht1902316 發表於 2016-11-9 01:56 AM

#include<algorithm>#include<iostream> #include<string> #include<iomanip>
請問這些 標頭檔 是屬於C++ 的嗎 ? <br><br><br><br><br><div></div>

theloserbm 發表於 2016-11-9 01:32 PM

其實著最大和最小算是學習寫程式的必經之路, 是有一個標準答案的

可是這個答案不是排序後拿第一個/最後一個, 因為排序相對來說比較吃資源
不過新手可以先不用理這個, 有甚麼想法就嘗試去做

我只是不能接受來我們公司面試的人(有新有舊)還想用排序的方法做這個問題

CoNsTaRwU 發表於 2016-11-20 08:51 PM

theloserbm 發表於 2016-11-9 01:32 PM static/image/common/back.gif
其實著最大和最小算是學習寫程式的必經之路, 是有一個標準答案的

可是這個答案不是排序後拿第一個/最後一 ...

也要看是哪種排序和資料量
如果是 bukkit sort 資料量又不是非常大的話,時間複雜度是比一個一個比較的 O(2n) 還要快一倍的…...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]