LU-LSP-b12:L01

From DiLab
Jump to: navigation, search

Praktiskais darbs

Darbs ir paredzēts, lai iepazītos Linux kā izstrādes un testēšanas vidi.

Šis darbs nav jāiesūta. Tas tiek veikts kopīgi, pārrunājot risināšanas gaitu.

Uzdevums:

  1. Uzrakstīt divas programmas ar analogu funkcionalitāti:
    • (C valodā) Ielasa skaitļu rindu un izdrukā skaitļus apgrieztā secībā
    • (shell script) Ielasa skaitļu rindu un izdrukā tos apgrieztā secībā
  2. Uzrakstīt vienu Makefile, kurā būtu aprakstīta:
    • C programmas būvēšanas komandas
    • abu programmu testēšanas komandas.
  3. Nokompilēt un notestēt risinājumu.

Var pieņemt, ka būs ne vairāk kā 100 skaitļu.

Ievadpiemērs (test.txt):

10 20 30 40 50 60 70 80 90 100 110

Korekts izvads uz ievadpiemēru:

110 100 90 80 70 60 50 40 30 20 10

pd1.c:

#include <stdio.h>

#define MAX_NUMBERS 100

int main(void)
{
    int numbers[MAX_NUMBERS];
    int i;

    // nolasam skaitljus
    for (i = 0; i < MAX_NUMBERS; i++) {
	int ret = scanf("%d", &numbers[i]);
	if (ret != 1) break;
    }
    // tagad numbers[0] .. numbers[i-1] satur skaitljus.

    // izdrukājam tos preteejaa seciibaa
    for (i = i - 1; i >= 0; i--) {
	printf("%d ", numbers[i]);
    }
    printf("\n");
}

pd1.sh

#!/bin/sh
NUMBERS=""
read LINE
for n in $LINE; do
    NUMBERS=$n" "$NUMBERS
done

echo $NUMBERS

Makefile:

all:
	gcc pd1.c -o pd1

test:
	cat test.txt | ./pd1 | ./pd1.sh