2014-03-16 2 views
1

Быстрый, возможно, основной вопрос. Если я объявляю массив из 10 удвоений и предлагаю пользователю ввести количество двойных, которые они хотят в индексе (от 1 до 10, очевидно), как я буду применять этот диапазон? Я предполагаю с выражением if/else, но есть ли более оптимальный способ обеспечения соблюдения этого диапазона?Диапазон применения в массиве в C

Опять же, возможно, очень просто. Я новичок, так еще не знакомый с C++ или JavaScript.

+0

1) запрос на количество элементов на входе 2) запустить цикл для этого много пунктов, или 10, в зависимости от того, что меньше. 3) ??? 4) прибыль –

+0

Почему бы вам не попробовать что-то и написать нам, если вы застряли? –

+0

Почему вы не пытаетесь использовать массивы переменной длины? – haccks

ответ

1

Получите это. элементов от пользователя до этого нет. не входит в ваш диапазон.

Say п число, которое вы хотите в диапазоне от 1 до 10.

Solution:

int n = 0; 
while(n<1 || n>10) { 
    printf("Enter Correct value on n i.e. within range 1 to 10:\t"); 
    scanf("%d", &n); 
} 
+0

Вы должны инициализировать целое число n –

+0

Вы также должны проверить возврат из 'scanf()'; если пользователь вводит 'a', цикл будет работать в течение длительного времени. –

1

Другим решением может быть, если вы оберните значение в пределах требуемого диапазона с помощью% (по модулю) оператора ,

int n; 
int arr[10]; 
printf("Enter a number : "); 
scanf("%d",&n); 
printf("%d",arr[n%10]); 

Выражение n%10 всегда будет приводить к значению в диапазоне от 0 до 9.

Edit (для лучшей проверки):

#include<stdio.h> 
main() 
{ 
    int x, n; 
    int arr[]={0,1,2,3,4,5,6,7,8,9,10,11,12}; 
    printf("Enter a number : "); 
    if(scanf("%d",&n)!=1) 
    { 
     printf("Not a valid integer!!"); 
     return; 
    } 
    n=(n<0)?-n:n; 
    printf("%d",arr[n%10]); 
} 
+2

Оператору модуля не гарантируется возврат положительного значения от 0 до 9, когда пользователь вводит -5 ... И число должно быть от 1 до 10, а не 0 и 9. Вы также должны проверить, что 'scanf () 'работал; если пользователь вводит 'a' или указывает EOF, будут проблемы. Исправления просты, но вы должны думать обо всех случаях. –

0

Сначала вы должны прочитать documentation, потому что это это очень простой пример.

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

Вы можете попробовать это:

#include<stdio.h> 

int main(){ 
    int n = 0; 
    while(!(n > 1 && n < 10)){ 
     printf("Enter an integer between 1 and 10: \n"); 
     scanf("%d", &n); 
    } 
} 
+0

Вы должны проверить возврат из 'scanf()'; если пользователь набирает 'a' (например), цикл будет работать в течение длительного времени. Обычно, когда вы говорите «от 1 до 10», вы включаете конечные точки. Ваше условие исключает конечные точки. Использование 'while (n < 1 || n > 10)' кажется разумным для меня. Использование отрицания в условных выражениях усложняет их понимание в целом. –

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