3

Is there a way to select multiple elements in array using one line of code in C? For instance, say I had the following code (assuming I already asked the user for twenty numbers, the first ten I asked to be positive and the last ten I asked to be negative):

if (myArray[0 through 9] > 0)
{
  printf("Thank you for providing positive numbers!");
}
else
{
  printf("Sorry, please try again!");
}

if (myArray[10 through 19] < 0)
{
  printf("Thank you for providing negative numbers!");
}
else
{
  printf("Sorry, please try again!");
}

What code could I substitute for "through"? I am fairly new to this language, and have never heard of a way of doing so. I know that with this particular code I could make two arrays, one for the positive numbers and one for the negative numbers, but I am curious to know for other programming projects.

Thank you for reading and answering!

1
  • There's no array slicing, you'd have to do it yourself, with a loop, most likely Commented Jul 17, 2014 at 14:49

3 Answers 3

3

There's nothing built-in that does it, you need to write a loop. Don't forget that array indexes start at 0.

int all_positive = 1;
int i;
for (i = 0; i < 10; i++) {
    if (myArray[i] <= 0) {
        all_positive = 0;
        break;
    }
}
if (all_positive) {
    printf("Thank you for providing positive numbers!\n");
}
Sign up to request clarification or add additional context in comments.

1 Comment

Okay thank you I wasn't sure if there was or not, so I will use loops instead. And thank you for pointing out that I wrote one instead of zero! I will fix that.
0
int a[20];

// entering values for the array

_Bool first_positive = 1;

for ( size_t i = 0; i < 10 && first_positive; i++ )
{
   first_positive = 0 < a[i];
}

if ( first_positive ) puts( "Hura, first 10 elements are positive" );

_Bool last_negative = 1;

for ( size_t i = 10; i < 20 && last_negative; i++ )
{
   last_negative = a[i] < 0;
}

if ( last_negative ) puts( "Hura, last 10 elements are negative" );

Instead of type name _Bool you can use type int if your compiler does not support _Bool

Comments

0

The program requests number of rows (1D array). Then asks for 2 integers, whole numbers. Then asks user to select 2 rows. The sum of the 2 selected rows is then added.

   #include <stdio.h>
   int main ()
   //1D_Array. Load Element and Add Sumline .
   //KHO2016.no5. mingw (TDM-GCC-32) . c-ansi .
   {
   //declare
   int a,b,c,d,e,sum1=0;
   int array[50];
   int i,j,elm1,elm2;

   //valuate
   printf ("Plot a number of elements [1 - 20]: ");
   scanf ("%d",&a);
   printf ("Plot a value : ");
   scanf ("%d",&b);
   printf ("Plot an increment value : ");
   scanf ("%d",&c);

   //calculate
   {for (i<0;i<=a;i++)
   {array[i] =(b+(++c)); // set value for variable [i], inside the array subscript. the vairable [i] must have an INT, and an increment to function !
   sum1 = (sum1 + array[i]);
   printf ("Row [%.2d] : %.2d + %.2d = %d\n",i,b,c,array[i]);}
   printf ("\nSum total = %d\n",sum1);} 
   printf ("\nRow [%.2d] = %d\n",b,array[b]);
   printf ("Row [%.2d] = %d\n",a,array[a]);
   printf ("Select 2 Rows :\n");
   scanf ("%d%d",&elm1,&elm2);
   d=elm1;
   e=elm2;

   printf ("You selected Row [%.2d] = %d\n",d,array[d]);
   printf ("You selected Row [%.2d] = %d\n",e,array[e]);
   printf ("The sum of two selected Rows [%d]+[%d] : %d + %d = %d\n",d,e,array[d],array[e],array[d]+array[e]);
   //terminate
   return 0;
   }

1 Comment

It seems that you are answering another question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.