Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
andrels07

Erro de segmesntação ao executar

Recommended Posts

to fazendo um trabalho mas ta o codigo ta compilando sem erro, mas na hora de executar esta dando erro de segmentação

é p/ faz uma eleição. Eu recebo 4 arquivos. um contem os prefeitos(com nome, numero e partido). um contem os vereadores(idem). outro os votos, sendo na primeira linha p/ prefeito e na segunda p/ vereador. e outro para coligação, sendo q cada linha é uma coligação contendo 4 partido com seus respectivos numeros.

Tenho q criar dois arquivos com o resultado para prefeito e vereador. imprimindo na ordem crescente do numero de votos de cada um.

eu acho q estou acessando algum lugar do vetor q não devia mas eu não sei ond. Ou o problema e com a leitura do arquivo

segue o programa:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

typedef struct{ // estrutura para o candidato a vereador e prefeito

char str; // ler o nome composto do candidato

int n; // numero dele

char pa; //partido

int votos;

}tCand;

typedef struct{ // estrutura para a coligações

char pa;

int n; // numeor do partido

int votCol;

}tCol;

typedef struct{ vetor para armazenar os 120 candidatos a vereador

tCand vet[120];

int n;

}tVetorIntVer;

typedef struct{ // vetor para armazenar os 5 candidatos a prefeito

tCand vet[5];

int n;

}tVetorIntPref;

typedef struct{ matriz para armazenar as 6 coligações. cada linha e uma coligação as colunas armazenam os partidos das coligações q são 4.

tCol mat[6][4];

int nl;

int nc;

}tMatrizCol;

typedef struct{ vetor para armazenar os votos. o primeiro é para prefe. e o swgundo para vereador

int vet[300000];

int n;

int bp;

int bv;

int nulo;

}tVetorIntVoto;

tCand leCand (FILE *p){

tCand a;

a.votos = 0;

fscanf (p,"%[^\n]%d %s", a.str, &a.n, a.pa);

return a;

}

tCol leCol (FILE *p){

tCol a;

a.votCol = 0;

fscanf (p, "%s %d ", a.pa, &a.n);

return a;

}

int votoBrancoPref(tVetorIntVoto v){

int i, vou = 0;

for(i = 0; i < v.n; i++){

if (i%2==0){

if(v.vet == 0){

vou++;

}

}

}

return vou;

}

int votoBrancoVer(tVetorIntVoto v){

int i, vou = 0;

for(i = 0; i < v.n; i++){

if (i%2==1){

if(v.vet == 0){

vou++;

}

}

}

return vou;

}

int votoNulo(tVetorIntVoto v){

int i, vou = 0;

for(i = 0; i < v.n; i++){

if (i%2==1){

if(v.vet == -1){

vou++;

}

}

}

return vou;

}

int prefeito(tVetorIntVoto v, int n){

int i, votos = 0;

for (i = 0; i < v.n; i++){

if (i%2==0){

if (v.vet == n){

votos ++;

}

}

}

return votos;

}

int vereador(tVetorIntVoto v, int a){

int i, votos = 0;

for (i = 0; i < v.n; i++){

if (i%2==1){

if (v.vet == a){

votos ++;

}

}

}

return votos;

}

tCol colig(tVetorIntVoto v, tCol a, tVetorIntVer B){

int i, j;

for (i = 0; i < v.n; i++){

if (i%2==1){

if (v.vet == a.n){

a.votCol ++;

}

}

}

for (j = 0; j < 120; j++){

if (b.vet[j].pa == a.pa){

a.votCol += b.vet[j].votos;

}

}

return a;

}

tVetorIntPref ordena( tVetorIntPref v){

int pos, i, ind;

tCand menor;

for (pos = 0 ; pos < v.n - 1 ; pos ++) {

menor = v.vet[pos];

for (i = pos + 1 ; i < v.n ; i++) {

if(v.vet.votos < menor.votos){

menor = v.vet;

ind = i;

}

}

v.vet[ind] = v.vet[pos ];

v.vet[pos] = menor ;

}

return (v);

}

tVetorIntVer ordena2( tVetorIntVer v){

int pos, i, ind;

tCand menor;

for (pos = 0 ; pos < v.n - 1 ; pos ++) {

menor = v.vet[pos];

for (i = pos + 1 ; i < v.n ; i++) {

if(v.vet.votos < menor.votos){

menor = v.vet;

ind = i;

}

}

v.vet[ind] = v.vet[pos ];

v.vet[pos] = menor ;

}

return (v);

}

main(){

FILE *p, *ve, *c, *v, *resPref, *resVer;

tVetorIntVer ver, rVer;

tVetorIntPref pref;

tVetorIntVoto vot;

tMatrizCol col;

int i, j, l, co, aux, votValPref = 0, votValVer = 0, votColig = 0, cad = 0, quoc;

p=fopen("prefeitos.txt","r");

i = 0;

pref.n = 5;

while (!feof (p)){

pref.vet = leCand(p);

i++;

}

fclose(p);

ve = fopen("vereadores.txt","r");

i = 0;

ver.n = 120;

while (!feof (ve)){

ver.vet = leCand(p);

i++;

}

fclose(v);

c = fopen ("coligacoes.txt","r");

col.nl = 6;

col.nc = 4;

l = 0;

while (!feof ©){

for(co = 0; co < 4; co++){

col.mat[l][co] = leCol(p);

}

l++;

}

fclose©;

vot.n = 300000;

aux = 0;

vot.bp = 0;

vot.bv = 0;

vot.nulo = 0;

v = fopen ("votos.txt","r");

while (!feof (v)){

fscanf (p,"%d", &vot.vet[aux]);

aux ++;

}

fclose(v);

vot.bp = votoBrancoPref(vot);

resPref = fopen ("resultadoPrefeito.txt","w");

for(j=0; j < 5; j++){

pref.vet[j].votos = prefeito(vot, pref.vet[j].n);

votValPref += pref.vet[j].votos;

}

fprintf(resPref,"Total de Votos: %d\n", vot.n/2);

fprintf(resPref,"Votos Validos: %d\n", votValPref);

fprintf(resPref,"Votos Nulos: %d\n", vot.n/2 - (votValPref + vot.bp));

fprintf(resPref,"Votos Brancos: %d\n\n\n", vot.bp);

pref = ordena(pref);

for(j=4; j >= 0; j--){

fprintf(resPref,"%s\n%d\n", pref.vet[j].str, pref.vet[j].votos);

}

fclose(resPref);

resVer = fopen ("resultadoVereador.txt","w");

vot.bv = votoBrancoVer(vot);

vot.nulo = votoNulo(vot);

for(j=0; j < 120; j++){

ver.vet[j].votos = vereador(vot, ver.vet[j].n);

votValVer += ver.vet[j].votos;

}

ver = ordena2(ver);

fprintf(resVer,"Total de Votos: %d\n", vot.n/2);

fprintf(resVer,"Votos Validos: %d\n", votValVer);

fprintf(resVer,"Votos Nulos: %d\n", vot.nulo);

fprintf(resVer,"Votos Brancos: %d\n\n\n", vot.bv);

quoc = votValVer/10;

fclose(resVer);

}

eu acho q estou acessando algum lugar do vetor q não devia mas eu não sei ond

Editado por andrels07

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

Tentei ler seu código mas ele é muito grande e suas variáveis estão com nomes muito especificos. Coloque comentários no código ao postar aqui para ajudar quem ler a entender o que voce pensou e assim podermos achar algum erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×