---
# System prepended metadata

title: 20201112 lab exam
tags: [' c', ' Uob', ' exam', lab]

---

---
tags: lab, exam, c, Uob
---
# 20201112 lab exam

## a1
```
#include "common.h"

char *strnodupes(const char *s)
{
   int i, j, current = 0;
   int len = strlen(s);
   char *str = malloc((len + 1) * sizeof(char));
   bool hasSame;
   for (i = 0; i < len; i++)
   {
      hasSame = false;
      for (j = 0; j < len; j++)
      {
         if (s[i] == str[j])
         {
            hasSame = true;
         }
      }
      if (hasSame == false)
      {
         str[current++] = s[i];
      }
   }
   str[current] = '\0';
   return str;
}

```

## a2
```
#include "common.h"

void strtogglealpha(char *s, const char c)
{
   int i, current = 0;
   int len = strlen(s);

   for (i = 0; i < len; i++)
   {
      if (c >= 'A' && c <= 'Z')
      {
         if (tolower(s[i]) == tolower(c))
         {
            if (s[i] >= 'a' && s[i] <= 'z')
            {
               s[current++] = toupper(s[i]);
            }
            else if (c >= 'A' && c <= 'Z')
            {
               s[current++] = tolower(s[i]);
            }
         }
         else
         {
            s[current++] = s[i];
         }
      }
      if (c >= 'a' && c <= 'z')
      {
         if (tolower(s[i]) == tolower(c))
         {
            s[current++] = toupper(s[i]);
         }
         else
         {
            s[current++] = s[i];
         }
      }
   }
}

```

## a3
```
#include "common.h"
int isvowel(int c);
void strflagvowel(const char *s1, char *s2)
{
   int i, current = 0;
   int len = strlen(s1);

   for (i = 0; i < len; i++)
   {
      if (isvowel(s1[i]) == 1)
      {
         s2[current] = '*';
         current++;
         s2[current] = s1[i];
         current++;
         s2[current] = '*';
         current++;
      }
      else
      {
         s2[current] = s1[i];
         current++;
      }
   }
   s2[current] = '\0';
}

int isvowel(int c)
{
   if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
   {
      return 1;
   }
   else
   {
      return 0;
   }
}

```

## b1
```
#include "common.h"

bool negativeedge(int a[][10], int h)
{
   int row, col;
   for (row = 0; row < h; row++)
   {
      if (row > 0 && row < h - 1)
      {
         for (col = 0; col < 9; col++)
         {
            if (col > 0 && col < 8)
            {
               if (a[row][col] < 0)
               {
                  return false;
               }
            }
         }
      }
   }

   return true;
}

```

## b2
```
#include "common.h"
#define LAST_IDX 8
bool leftright(bool a[][9], int h)
{
   int row, col;
   if (h == 1)
   {
      return true;
   }
   for (row = 0; row < h; row++)
   {

      for (col = 0; col < 9; col++)
      {
         if (a[row][col] != a[row][LAST_IDX - col])
         {
            return false;
         }
      }
   }
   return true;
}

```

## b3
```
#include "common.h"

bool samerows(bool a[][9], int h)
{
   int i, j, k = 0;
   bool isSame;
   if (h == 1)
   {
      return false;
   }
   for (i = 0; i < h; i++)
   {
      for (j = 0; j < h; j++)
      {
         if (j != i)
         {
            k = 0;
            isSame = true;
            while (k < 9)
            {
               if (a[j][k] != a[i][k])
               {
                  isSame = false;
               }
               k++;
            }
            if (isSame == true)
            {
               return true;
            }
         }
      }
   }

   return false;
}


```