Bueno, tengo una asignacion de la universidad y tengo el codigo hecho pero me esta dando un error ==> "Segmentation fault (core dumped)" <== y CREO que el problema esta en la asignacion en el ciclo for, lo que quiero es saber que es lo que tiene mal y cual es la forma correcta de hacerlo, porque la verdad es que soy un tanto principiante en esto. El programa deberia recibir por la linea de comandos -o terminal- el numero del interruptor cuyo estado sea 1, donde 1 = abierto. Se asume que todos los interruptores estan cerrados si no se da ningun parametro y son 4 interruptores.
Código:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {
int a[3], cont;
int argcont=1;
for (cont=0; cont< argc; cont++) {
a[cont]= atoi(argv[argcont]);
argcont++;
}
int S1=0, S2=0, S3=0, S4=0;
if (a[0]==0 || a[1]==0 || a[2]==0 || a[3]==0) { printf("No existe el interruptor 0\n"); }
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("===>\t BOMBILLO: OFF\t<===\n");
}
printf("En la ejecucion, se ha asumido que los switches estan cerrados a menos que su numero sea suministrado por la linea comando.\n");
return 0;
}
Esta es la pagina donde esta toda la informacion del programa;
http://www.geocities.com/yoyirod/Web.../TareaL01.html
Tambien hay un ejecutable proporcionado por el profesor sobre como deberia de funcionar el programa:
http://yoyirod.googlepages.com/demoTL01.exe -el ejecutable tambien esta en la pagina del programa-.