Ayuda con c, imposible de comprender ejercicio

Buenas tardes, lamento ser tan pesado, pero en resumidas cuentas, la clase en general pasa de todo y el profesor se ha pillado un cabreo, y nos ha mandado una practica chunga, que no veo la forma de abordar, intentaré ser lo más especifico posible en lo que no entiendo.
A ver, son prácticas relacionadas, esta es la anterior:
/*1.- Construir un programa que administre los siguientes datos asociados a la comunidad canaria.
Para cada isla es necesario guardar:
- Nombre de la isla (cadena de caracteres).
- Número de habitantes (entero).
- Número de personas mayores de 65 años que viven en la isla (entero).
- Temperaturas de la isla (vector de 4 componentes, norte, sur, este y oeste)
- Temperatura media de la isla (real).
Hay que resolver las siguientes opciones, en este orden:
- Lectura por teclado de datos asociados a las islas. Pedir los datos para cada una de las islas.
La temperatura media se calcula en función de las 4 temperaturas introducidas.
- Pedir el nombre de una isla y visualizar para dicha isla los datos asociados.
- Pedir un valor por teclado y visualizar las islas que tengan un porcentaje de mayores de 65
años igual o menor a ese valor.
- Para las islas occidentales (u orientales, lo que ustedes prefieran) calcular el porcentaje de
mayores de 65 años en esa provincia.*/

#include <stdio.h>

typedef struct{
   char nombre[20];
   int habitantes,mayores;
   float temp[4],tempm;
   }Tcomunidad;

Tcomunidad canaria[7];
main(){
   char enter;
   int n,i=0,opc,anc;
   float pormayores,pormayprov;
   
   printf("Introduzca los datos de las islas, empiece por la mas occidental:\n");
   
   for(n=0;n<7;n++){
      printf("Introduzca los datos de la isla: \n");
      printf("Nombre: ");
      scanf("%[^\n]",&canaria[i].nombre);
      printf("Numero de habitantes: ");
      scanf("%d",&canaria[i].habitantes);
      printf("Mayores de 65: ");
      scanf("%d",&canaria[i].mayores);
      printf("Temperaturas de la isla (en formato N S E O): ");
      scanf("%f %f %f %f",&canaria[i].temp[0],&canaria[i].temp[1],&canaria[i].temp[2],&canaria[i].temp[3]);
      canaria[i].tempm=(canaria[i].temp[0]+canaria[i].temp[1]+canaria[i].temp[2]+canaria[i].temp[3])/4;
      scanf("%c",&enter);
      i++;
      }
   printf("Elija la isla de la cual desea visualizar los datos (de 1 a 7):\n");
   printf("1%s 2%s 3%s 4%s \n5%s 6%s 7%s: ",canaria[0].nombre,canaria[1].nombre,canaria[2].nombre,canaria[3].nombre,canaria[4].nombre,canaria[5].nombre,canaria[6].nombre);
   scanf("%d",&opc);
   i=opc-1;
   printf("Los datos asociados son:\n");
   printf("Nombre: %s \n",canaria[i].nombre);
   printf("Numero de habitantes: %d\n",canaria[i].habitantes);
   printf("Mayores de 65: %d\n",canaria[i].mayores);
   printf("Temperaturas de la isla %.2f\n",canaria[i].tempm);
   
   printf("Introduzca un valor: ");
   scanf("%d",&anc);
   
   for(i=0;i<=6;i++){
      pormayores=(canaria[i].mayores*100)/canaria[i].habitantes;
      if(pormayores<=anc)
         printf("%s ",canaria[i].nombre);
      }
   printf("\nSon las islas que tienen un porcentaje de mayores igual o menor a ese numero");
   printf("\n");
   printf("Desea conocer el porcentaje de mayores en la provincia de Tenerife?S/N ");
   scanf("%c",&enter);/*para que se coma el enter anterior*/
   scanf("%c",&enter);
   if ((enter=='S')||(enter=='s')){
         pormayprov=((canaria[0].mayores+canaria[1].mayores+canaria[2].mayores+canaria[3].mayores)*100)/(canaria[0].habitantes+canaria[1].habitantes+canaria[2].habitantes+canaria[3].habitantes);
         printf("El porcentaje de mayores en la provincia de Tenerife es %.2f%",pormayprov);
         }
   else
      printf("Gracias por utilizar el programa");
   return 0;
}

Y esto lo de ahora
1.- Añadir al (o reconstruir el) programa de la práctica anterior sobre los datos asociados a la comunidad canaria, lo
siguiente. Se supone que está declarado el siguiente vector de nombres de islas.
char nombre_islas[7][14] = { “El Hierro”, “Fuerteventura”, “Gran Canaria”, “La Gomera”, “La Palma”, “Lanzarote”,
“Tenerife” };
- Modificar el campo Nombre de la isla por un campo entero que sea un índice que apunte al vector
“nombres_islas”. Ejemplo: Si el índice es 1, nos estamos refiriendo a Fuerteventura.
- Añadir otro campo a la isla que indica si es isla occidental u oriental. Siguiendo la idea anterior, se puede
declarar un vector de 2 componentes compuestos por las cadenas “Occidental”, “Oriental” y que el campo
creado sea un índice en este nuevo vector.
- Leer los datos asociados a las islas, utilizando una sentencia repetitiva.
- Buscar mediante sentencias repetitivas, la isla occidental y la isla oriental con la temperatura de la isla más
baja (me refiero a cualquiera de las cuatro componentes del vector de temperaturas, y no, a la temperatura
media) y visualizar las temperaturas y las islas asociadas.
- Utilizando un vector auxiliar y una sentencia repetitiva, calcular el porcentaje de mayores de 65 para los
siguientes tres grupos: 0 = Islas Menores Occidentales. 1 Islas Menores Orientales. 2 Restantes
- Visualizar mediante sentencias repetitivas, las islas y sus temperaturas (tanto la media como la de los cuatro
puntos cardinales).


Ya en el primer caso, entiendo que lo que busca es que separe i, haciendo un printf, mi duda es, ¿es lógico que haya un vector dentro de la estructura? Es que no entiendo de donde salió ahora el array bidimensional para luego asociar los datos ya que teoricamente eso sería solamente un campo dentro de la variable de tipo estructura canarias.

Muchas gracias a quien entienda esto. Un saludo
De la manera que lo tienes implementado en la primera practica... tu podrías introducir cómo nombre de una isla "Pepito el de los palotes".... la cual no existe....

Lo que quiere con esta práctica es que tu declares un array bidimensional con los nombres de todas las islas... y lo obtienes con el índice que te pasan, de esta manera te aseguras que no te introducirán ningún nombre de isla erróneo....
La manera de obtener los nombres es automática....podría haber sido más cabroncete y haber puesto un array unidimensional para que lo recorrieras y obtuvieras los nombres contando los caráctes comillas.....
Al final, tras varias horas y mucho borrar codigos y muchos ; olvidados, ya está, graciass por la respuesta.
2 respuestas