2009-02-02 14 views
7

में सबसे छोटी के रूप में एक प्रोग्राम है जो पूर्णांकों का अनुक्रम रूप में अच्छी तरह में सबसे छोटी के रूप में अनुक्रम का योग लिखें। मान लें कि स्कैनफ के साथ पहले पूर्णांक को दर्ज किए गए मानों की संख्या निर्दिष्ट करता है। उदाहरण के लिए अनुक्रम दर्ज किया गया:एक प्रोग्राम है जो पूर्णांक के अनुक्रम का योग है, साथ ही अनुक्रम

इनपुट: 5 100 350 400 550 678

आउटपुट: पूर्णांक के अनुक्रम का योग है: 2078

इनपुट: 5 40 67 9 13 98

आउटपुट: पूर्णांकों में प्रवेश में सबसे छोटी है: 9

यह एक दैनिक समस्या मैं पर काम कर रहा हूँ है, लेकिन इसे देखकर, 5 सबसे छोटा पूर्णांक नहीं है? मुझे नहीं पता कि इस कार्यक्रम को कैसे लिखना है। किसी भी मदद की सराहना करें

+0

क्या यह सी प्रोग्रामिंग भाषा है? –

+0

सवाल कहता है 'स्कैनफ के साथ पढ़ें'। इसे मानने के लिए सुरक्षित है – Abbas

+0

मुझे नहीं लगता कि यह सवाल कम किया जाना चाहिए ... वह हमें उसके लिए लिखने के लिए नहीं कह रहा है, उसे समस्या को समझने में परेशानी हो रही है। –

उत्तर

19

पहली बात, 5 को सूची का हिस्सा नहीं माना जाता है, यह सूची के लिए गणना है। इसलिए इसे गणना में शामिल नहीं किया जाना चाहिए।

चूंकि यह होमवर्क है, यहां छद्म कोड है। आपका काम छद्म कोड को पहले समझना है (इसे अपने सिर के माध्यम से नमूना इनपुट के साथ चलाएं) फिर इसे सी कोड में बदलें और इसे संकलित करने और सफलतापूर्वक चलाने के लिए प्रयास करें (उसी नमूना इनपुट के साथ)।

मैं "2 7 3" के नमूने इनपुट सुझाव है (दो आइटम, किया जा रहा है 7 उन और 3) यह छोटे है एक अच्छी शुरुआत बिंदु के रूप में के बाद से और, सबसे छोटी 3.

योग 10 हो जाएगा आप तो एक दिन से अधिक समय तक ऐसा करने की कोशिश की है, फिर अपने कोड को इस प्रश्न में एक संपादन के रूप में पोस्ट करें और हम देखेंगे कि हम आपकी मदद करने के लिए क्या कर सकते हैं।

get a number into quantity 
set sum to zero 
loop varying index from 1 to quantity 
    get a number into value 
    add value to sum 
    if index is 1 
     set smallest to value 
    else 
     if value is less than smallest 
      set smallest to value 
     endif 
    endif 
endloop 
output "The sum of the sequence of integers is: ", sum 
output "The smallest of the integers entered is: ", smallest 

स्टैक ओवरफ़्लो तीन शिविरों, उन है कि केवल आपके कोड दे देंगे, उन है कि आपको बता धक्का और अपने खुद के होमवर्क करना होगा और उन, मेरी तरह, जो बल्कि आप देखना होगा में विभाजित किया जा रहा है शिक्षित - जब तक आप कार्यबल को मारते हैं, तो मुझे सेवानिवृत्त होने की उम्मीद है ताकि आप मुझे :-) के साथ प्रतिस्पर्धा नहीं कर सकें।

और इससे पहले कि कोई भी मेरे एल्गोरिदम में छेद उठाता है, यह शिक्षा के लिए है। मैंने उस आदमी को प्रशिक्षित करने में मदद करने के लिए कम से कम एक गोचा छोड़ा है - अन्य हो सकते हैं और मैं दावा करता हूं कि मैंने उन्हें जानबूझकर परीक्षण करने के लिए वहां रखा है :-)।


अद्यतन:

रॉबर्ट, अपने (बहुत अच्छा) प्रयास जो मैं पहले से ही इस पर टिप्पणी करने के बाद, यह कैसे मैं काम (हाथ तुम्हारा में करने के लिए अपने कोड को संशोधित होता है कोर्स, मेरा नहीं)। आप उम्मीद है कि देख सकते हैं कि मेरी टिप्पणी इस समाधान तक पहुँचने के लिए कोड को संशोधित:

#include <stdio.h> 
int main (int argCount, char *argVal[]) { 
    int i;    // General purpose counter. 
    int smallNum;  // Holds the smallest number. 
    int numSum;   // Holds the sum of all numbers. 
    int currentNum;  // Holds the current number. 
    int numCount;  // Holds the count of numbers. 

    // Get count of numbers and make sure it's in range 1 through 50. 

    printf ("How many numbers will be entered (max 50)? "); 
    scanf ("%d", &numCount); 
    if ((numCount < 1) || (numCount > 50)) { 
     printf ("Invalid count of %d.\n", numCount); 
     return 1; 
    } 
    printf("\nEnter %d numbers then press enter after each entry:\n", 
     numCount); 

    // Set initial sum to zero, numbers will be added to this. 

    numSum = 0; 

    // Loop, getting and processing all numbers. 

    for (i = 0; i < numCount; i++) { 

     // Get the number. 

     printf("%2d> ", i+1); 
     scanf("%d", &currentNum); 

     // Add the number to sum. 

     numSum += currentNum; 

     // First number entered is always lowest. 

     if (i == 0) { 
      smallNum = currentNum; 
     } else { 
      // Replace if current is smaller. 

      if (currentNum < smallNum) { 
       smallNum = currentNum; 
      } 
     } 
    } 

    // Output results. 

    printf ("The sum of the numbers is: %d\n", numSum); 
    printf ("The smallest number is: %d\n", smallNum); 

    return 0; 
} 

और यहाँ अपने नमूना डेटा से उत्पादन होता है:

pax> ./qq 
How many numbers will be entered (max 50)? 5 

Enter 5 numbers then press enter after each entry: 
1> 100 
2> 350 
3> 400 
4> 550 
5> 678 
The sum of the numbers is: 2078 
The smallest number is: 100 

pax> ./qq 
How many numbers will be entered (max 50)? 5 

Enter 5 numbers then press enter after each entry: 
1> 40 
2> 67 
3> 9 
4> 13 
5> 98 
The sum of the numbers is: 227 
The smallest number is: 9 

pax> ./qq 
How many numbers will be entered (max 50)? 0 
Invalid count of 0. 

[fury]$ ./qq 
How many numbers will be entered (max 50)? 51 
Invalid count of 51. 

वैसे, सुनिश्चित करें कि आप हमेशा के लिए टिप्पणियाँ जोड़ कर तुम्हारा कोड। शिक्षक इस तरह के सामान से प्यार करते हैं। तो ऐसे डेवलपर्स को करें जिन्हें भविष्य में आपके कोड को 10 साल समझने की कोशिश करनी है।

+0

धन्यवाद पैक्स, थोड़ी देर के लिए चबाने के लिए यहां बहुत कुछ। आपके दृष्टिकोण के लिए चीयर्स, मेरी इच्छा है मेरे प्रशिक्षक के पास ज्ञान पर समान मूल्य था। किसी के साथ प्रतिस्पर्धा करने पर मुझे कोई चिंता नहीं है, मैं एक डिग्री ग्राफिक्स मल्टीमीडिया लड़का स्कूल में अपनी डिग्री कमाने की कोशिश कर रहा हूं। मानो या नहीं, मैं पाठ्यक्रम के एचएसएनओटी प्रोग्रामिंग को पढ़ाना चाहता हूं। – Robert

+0

@ पैक्स, एन के लिए +1 ओटी सीधे उसे काम कोड दे रहा है। – mmcdole

+0

एक +1 से बेहतर !!!!, मैंने कोड पोस्ट किया जिसके साथ मैं आया था। मुझे लगता है कि मैंने कुछ भी सीखा होगा। (डर्न ... जे/के) वैसे भी मैं वास्तव में मदद और मार्गदर्शन की सराहना करता हूं और मैं सही सवाल पूछने और अपना काम करने का वादा करता हूं। दृष्टिकोण के लिए – Robert

4

संख्या 5 सूची में पढ़ने वाले पूर्णांक की संख्या है।

3

Jeebus, मैं अपना होमवर्क तुम्हारे लिए नहीं कर रहा हूँ, लेकिन ...

आप कागज पर इस बाहर खरोंच और बाहर काम है कि यह कैसे काम करना चाहिए करने के लिए बंद कर दिया है? कुछ छद्म कोड लिखें और फिर वास्तविक कोड में ट्रांसक्रिप्ट करें। मैं सोचा होगा:

  • पढ़ें पूर्णांक
  • लूप कि कई बार ** अधिक पूर्णांकों पढ़ें ** जोड़े ** खोजें सबसे छोटा

अगर तुम सी नज़र में हैं INT_MAX - जो सबसे छोटा पूर्णांक खोजने में मदद करेगा।

11

पढ़ें:

मान लें पहले पूर्णांक पढ़ा है कि scanf के साथ निर्दिष्ट करता शेष मानों की संख्या

तो यह अनुक्रम का हिस्सा नहीं दर्ज किए जाने की ...

बाकी के लिए

, यह आपका होमवर्क (और सी ...)

1

पूर्णांक की सूची के बाद से एस परिवर्तनीय है, मैं अलग-अलग तारों (अंतरिक्ष से अलग) में स्ट्रिंग को विभाजित करने के लिए स्ट्रोक का उपयोग करने के लिए लुभाना चाहता हूं और फिर प्रत्येक नंबर को कनवर्ट करने के लिए एटीई और योग या फ्लाई पर न्यूनतम पाता हूं।

-Adam

+0

मुझे नहीं लगता कि पूर्णांक एक स्ट्रिंग में प्रस्तुत किए जा रहे हैं। मुझे लगता है कि उन्हें एक समय में इनपुट में भेजा जाएगा, ताकि प्रत्येक स्कैनफ़ कॉल एक पूर्णांक लौटाए। – nezroy

+0

scanf ("% d") एक लाइन पर कई मानों को ठीक करता है ठीक है, आईआईआरसी (मैं गलत हो सकता है cin :-)। – paxdiablo

+0

@ पैक्स: हाँ यह करता है। स्कैनफ के लिए, व्हाइटस्पेस व्हाइटस्पेस है। इससे कोई फर्क नहीं पड़ता कि यह एक जगह है या नहीं एक नई लाइन। –

1

सबसे पहले आप, तो, 5 तत्वों का पूर्णांक की एक सरणी बनाने के इनपुट के बाकी को पढ़ने के लिए, मान (यानी। 5) की संख्या को पढ़ने के लिए उन्हें विभाजित है और (सरणी में डाल के बाद उन्हें पूर्णांक में परिवर्तित करना)।

फिर सबसे छोटे मूल्य को खोजने के लिए सरणी पर एक लूप करें।

आशा है कि

+1

बस ब्याज से बाहर, एक सरणी क्यों? आप संख्याओं को जोड़ सकते हैं और एक समय में एक को प्रोसेस करके सबसे छोटा रख सकते हैं। – paxdiablo

1

में मदद करता है नहीं दिया [] टी तुम लोग काम

कूल करने के लिए की तलाश में। जब आप समस्या पाठ को डंप करते हैं तो लोग अपराध करते हैं और समस्या पाठ को एक अनिवार्य रूप में phrased किया जाता है ("ऐसा करो! इसे लिखें! आदि")।

आप कुछ ऐसा कहना चाहेंगे जैसे "मैं होमवर्क समस्या से फंस गया हूं। यहां समस्या है: एक लिखें [...]। मुझे समझ में नहीं आता क्यों [...]।"

1
#include <stdio.h> 

main() 
{ 
    int num1, num2, num3, num4, num5, num6, i; 
    int smallestnumber=0; 
    int sum=0; 
    int numbers[50]; 
    int count; 
    num1 = 0; 
    num2 = 0; 
    num3 = 0; 
    num4 = 0; 
    num5 = 0; 
    num6 = 0; 

    printf("How many numbers will be entered (max 50)? "); 
    scanf("%d", &count); 

    printf("\nEnter %d numbers then press enter after each entry: \n", count); 

    for (i=0; i < count; i++) { 
     printf("%2d> ", i+1); 
     scanf("%d", &numbers[i]); 
     sum += numbers[i]; 
    } 

    smallestnumber = numbers[0]; 
    for (i=0; i < count; i++) { 
     if (numbers[i] < smallestnumber) 
     { 
      smallestnumber = numbers[i]; 
     } 
    } 

    printf("the sum of the numbers is: %d\n", sum); 
    printf("The smallest number is: %d", smallestnumber); 
} 
+0

पैक्स, प्रोग्रामिंग के बारे में आप क्या सोचते हैं? सहायता के लिए धन्यवाद। मुझे लगता है कि संख्याएं कोई फर्क नहीं पड़ता, यह उपयोगकर्ता के लिए सही चुनने के लिए है? आपकी पोस्ट के बाद प्रकाश बल्ब बंद हो गया। एक उत्तर पाने के लिए प्यार और आपकी मदद के लिए धन्यवाद! – Robert

+0

आप अपनी पोस्ट संपादित कर सकते हैं और कोड के साथ लाइनों के सामने 4 रिक्त स्थान डाल सकते हैं और यह आपके लिए प्रारूपित करेगा। – lillq

+1

अच्छा प्रयास! अंक, कुछ समय में कुछ। (1) num1 के माध्यम से num1 का उपयोग किसी भी चीज़ के लिए नहीं किया जाता है, मुझे संदेह है कि वे आपके पिछले संस्करण से हैंगओवर हैं। उनसे छुटकारा पाएं। (2) आप यह सुनिश्चित करना चाहते हैं कि इसका उपयोग करने से पहले गिनती 50 से 1 तक सेट हो (प्रिंट त्रुटि और अगर बाहर निकलें) ... – paxdiablo

संबंधित मुद्दे