2014-10-01 2 views
-1

У меня возникли проблемы с преобразованием этой домашней проблемы в псевдокод. Я хотел бы знать, правильна ли логика.Правильно ли логика этого псевдокода с массивами?

Проблема:

Написать программу, которая печатает следующие элементы: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, до сего вводимого пользователя значения. Программа не должна печатать более 10 номеров на строку. Последняя напечатанная строка может быть меньше 10. Помимо первого числа и последнего номера, должно быть указано «,», разделяющее все числа. Последний номер в каждой строке должен иметь «.» После него. Перед выходом из него также следует распечатать сумму всех элементов: рассчитать сумму предметов и ввести результат. Например, если пользователь ввел 76 результат должен быть следующим Образец запуска вашей программы должен быть следующим:

Введите номер (> = 1 и < = 100): 76 Ваша последовательность

1, 3, 5, 7, 9, 11, 13, 15, 17, 19. 21,23, 25, 27, 29, 31, 33, 35, 37, 39. 41,43, 45, 47 , 49, 51, 53, 55, 57, 59. 61,63, 65, 67, 69, 71, 73, 75.

сумма перечисленных выше элементов 1444.

Моя попытка:

Algorithm ElementsSequenceSeries 

// declare variables 
Var num, count, odd, sum, arrayOne, arrayTwo, arrayThree, arrayFour, arrayFive 

// initialize variables 
Count = 0; sum = 0; odd=0; arrayOne = 0; arrayTwo = 0; arrayThree = 0; arrayFour = 0; arrayFive = 0; 

<BeginAlg> 

Print (Input 1<= num <= 100); 

Count = count + 1; 
Odd = (count*2)–1; // create a list of odd numbers up to a user-defined value less than 100 

If (num > odd) 
    Print(Odd); 

    // For the indices 0 to 8, place a comma after each element of the array. 
    For (num <=20 and num> odd) and (arrayOne[9]= {0,1,2,3,4,5,6,7,8}) 
     Print (arrayOne[]= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    // For the index 9, place a fullstop after it. 
    For (num <=20 && num> odd) and (array One[]= 9) 
     Print arrayOne[]= 9 + “.”) 
    EndFor 


    For (num <=40 and num> odd) and (arrayTwo[]= {0,1,2,3,4,5,6,7,8}) 
     Print (arrayTwo[]= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=40 and num> odd) and (arrayTwo[]= 9) 
     Print arrayTwo[]= 9 + “.”) 
    EndFor 

    For (num <=60 and num> odd) and (arrayThree[]={0,1,2,3,4,5,6,7,8}) 
     Print (arrayThree[]= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=60 and num> odd) and (arrayThree[]= 9) 
     Print arrayThree[]= 9 + “.”) 
    EndFor 


    For (num <=80 and num> odd) and (arrayFour[]={0,1,2,3,4,5,6,7,8}) 
     Print (arrayFour []= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=80 and num> odd) and (arrayFour []= 9) 
     Print arrayFour []= 9 + “.”) 
    EndFor 


    For (num <=100 and num> odd) and (arrayFive[]={0,1,2,3,4,5,6,7,8}) 
     Print (arrayFive []= {0,1,2,3,4,5,6,7,8} + “,”); 
    EndFor 

    For (num <=100 and num> odd) and (arrayFive []= length) 
     Print arrayFive []= length + “.”); 
    EndFor 

EndIf 

Sum = arrayOne, arrayTwo, arrayThree, arrayFour, arrayFive; 
Print(sum); 

<EndAlg> 

ответ

1

алгоритм, предложенный вами использует память, которая может быть сохранена, так как нам нужно напечатать все нечетные целые числа проблема может быть решена с помощью четырех переменных для отслеживания суммы, один для изменения строки, один для пользовательского ввода и один как переменная цикла.

Variables: 

sum :int // keeps track of the sum 
count :int // keeps track of the Integer printed in a line. 
i  :int // looping variable. 
n  :int // Given as input 
Algorithm: 

/* BEGIN ALGORITHM */ 
n=input(); 
count=0; 
sum=0 
for(i=1:i<n:i=i+2){ 
        print("i,"); 
        count=count+1; 
        if(count>9){ 
           print("/n"); // change line; 
           count=0; 
           } 
        sum=sum+i; 
        } 
print("n."); 
print("Sum is (sum+n)"); 
/* END ALGORITHM */ 
+0

Я не понимаю count = 0; в конце объясните пожалуйста. Почему count = 0? Разве мы не увеличиваем? Печать («n.») Не должна быть одной для каждой строки? Я все еще новичок в программировании, пожалуйста, несите меня. Я ценю ваше время и силы. – TechFool121

+0

эй была ошибка, я исправил ее сейчас, на самом деле подсчет используется для отслеживания количества элементов, напечатанных в строке, так как задано вопрос о том, что программа должна печатать меньше или макс. 10 элементов подряд, сбросьте счет до 0, который он станет 10 (0-9 для 10 элементов.). – abhinash

+0

hey "n" используется для хранения введенного числа. Он неизменен во всей программе. так как нам нужно распечатать все нечетные числа до n, нам нужна переменная, которая продолжает меняться, что делается здесь «i». После каждого цикла он продолжает увеличиваться на 2. i.e, для первого цикла это будет 1., для второго цикла это будет 3, пока оно не станет меньше n. поэтому нам нужно напечатать i, чтобы выполнить нашу работу. Когда цикл истекает, мы печатаем все числа до n, поэтому требуется печать n в течение одного времени. – abhinash

Смежные вопросы