Как использовать код с массивами и строками? - PullRequest
0 голосов
/ 24 апреля 2019

Вот инструкции, которые мне дали:

  1. Если командное слово равно find, прочитайте дополнительное целое число и найдите набор данных для этого целого числа.
  2. Есликомандное слово: print, распечатать массив
  3. Любое другое командное слово является ошибкой.
  4. Ни одно командное слово не будет длиннее 20 символов.

  5. После считывания значений n+1 будет получено еще одно целое число (k), считанное с клавиатуры.

  6. Поиск в массиве значения k.Если найдено, выведите место, где было найдено k.(1 = значение данных, n = последнее значение данных).
  7. Если k не найдено, выведите not found.Это не ошибка.
  8. Если в данных содержится более одного значения k, распечатайте только местоположение первого.
#include <stdio.h>

int main (void) {
   int n;
   scanf ("%d", &n);
   if (n < 1) {
      printf ("Error: one or more values must be provided.\n");
      return 1;
   }

   int x [n];
   int a;
   a = 0;
   while (a < n) {
      scanf ("%d", x [a]);
      a = a + 1;
   }

   int k;
   scanf ("%d", &k);
   int i;
   i = 0;
   while (i <= n-1) {
      if (x[i] == k) {
         break;
      }
      i = i + 1;
   }
   if (i < n) {
      printf ("%d\n", k+1);
   } else {
      printf ("not found\n");
   }

   printf ("Error: invalid command\n");
   return 0;
}

Предлагаемая стратегия:

  1. После чтения данных массива прочитайте строку.
  2. Если строка find, прочитайте целое число k и выполните поиск.
  3. Еслистрока print, не читайте k, просто напечатайте данные в массиве.
  4. Если строка не find или print, обработайте ошибку.

1 Ответ

0 голосов
/ 24 апреля 2019

Shai'Tavia, я надеюсь, что мой ответ поможет вам понять, как вы можете заставить свой код работать. У вас есть первая часть, но вам нужно будет сравнить командную строку, заданную пользователем, чтобы затем принять решение о том, что делать дальше.

#include <stdio.h>
#include <string.h>

#define ARRAYLENGTH 8

void printArray(int *array, int length)
{
    for (int i = 0; i < length; i++)
        printf("%d ", array[i]);
    printf("\n");
}

void search(int *array, int key)
{
    int flag = 0;

    for (int i = 0; i < ARRAYLENGTH; i++)
    {
        if (array[i] == key && flag == 0)
        {
            printf("found %d at index: %d\n", key, i);
            flag = 1;
        }
    }

    if (flag == 0)
        printf("not found\n");
}

int main(void)
{
    char command[20];
    int indx = 0;
    int array[] = {1, 4, 6, 8, 43, 61, 34, 2};
    int n, flag = 0;

    printf("How many times will we run?");
    scanf("%d", &n);

    if (n < 1)
    {
        printf("Error: one or more values must be provided.\n");
        return 1;
    }

    do
    {
        printf("Enter the command word:");
        scanf("%s", command);

        if (strcmp(command, "find") == 0)
        {
            scanf("%d", &n);
            search(array, n);
        }

        else if (strcmp(command, "print") == 0)
            printArray(array, ARRAYLENGTH);

        else
            printf("Command not found\n");

    } while (--n > 0);

    printf("What is your final interger?");
    scanf("%d", &n);

    search(array, n);

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...