Bueno despues de mucho llorar al fin lo he terminado, habian 2 problemas, el primero es que el arreglo de a debe ser 4 en vez de 3 y el ciclo debe ejecutarse mientras cont < (argc-1) de manera que mi codigo final es asi:
Código:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {
int a[4], cont=0, argcont=1;
int S1=0, S2=0, S3=0, S4=0;
if (argc> 5) {
printf("Solo teclee el nombre del programa seguido de no mas de 4 interruptores\n");
return 1;
}
for (cont=0; cont< (argc-1); cont++) {
a[cont]= atoi(argv[cont+1])
if ( (a[cont]<= 0) || (a[cont]> 4) ) {
printf("Uno de los interrruptores no existe\n");
return 2;
}
}
if (a[0]==1 || a[1]==1 || a[2]==1 || a[3]==1) { S1=1; }
if (a[0]==2 || a[1]==2 || a[2]==2 || a[3]==2) { S2=1; }
if (a[0]==3 || a[1]==3 || a[2]==3 || a[3]==3) { S3=1; }
if (a[0]==4 || a[1]==4 || a[2]==4 || a[3]==4) { S4=1; }
printf("El estado de los interruptores es:\n");
if (S1==1) { printf("\tS1:ON\n"); } else { printf("\tS1:OFF\n"); }
if (S2==1) { printf("\tS2:ON\n"); } else { printf("\tS2:OFF\n"); }
if (S3==1) { printf("\tS3:ON\n"); } else { printf("\tS3:OFF\n"); }
if (S4==1) { printf("\tS4:ON\n"); } else { printf("\tS4:OFF\n"); }
if ( (S1==1) && ( (S2==1) || (S3==1) || (S4==1) )) {
printf("===>\t BOMBILLO: ON\t <===\n");
} else {
printf("===>\tBOMBILLO: OFF\t <===\n");
}
printf("\nEn la ejecucion, se ha asumido que los switches estan cerrados a menos que su numero sea suministrado por la terminal.\n");
return 0;
}