Seguinte To com um trabalho na facu pra fazer porem quebrei a mao to programando com 1 mao so e preciso fazer um programa q vale 5 pontos eu fazendo ele fecho 2 materias , bom o programa e o seguinte :
E um indice Remissivo .. e oque é isso ??
>>
Escreva um programa em C, para construir um índice remissivo a partir de um arquivo lido em disco. Este arquivo conterá apenas letras e espaços em branco. As palavras do índice remissivo deverão ser armazenadas em um vetor de palavras em ordem alfabética crescente. Cada posição do vetor de palavras está dividida em dois campos:
a) O primeiro, denominado palavra, deverá guardar a palavra;
B) O segundo campo, denominado início, deverá guardar a posição onde está armazenado o primeiro elemento da lista de linhas.
Tal lista contém as linhas nas quais uma palavra do índice remissivo aparece no texto lido. Uma vez construído o índice, escreva funções para realizar as seguintes operações e, apresentar resultados na tela:
i) Mostrar todo o conteúdo do índice;
ii) Mostrar todas as linhas nas quais aparece uma palavra informada pelo usuário;
iii) Mostrar a palavra mais frequente no texto;
iv) Mostrar a linha na qual uma palavra informada pelo usuário, aparece com mais frequência.
Para a implementação, considere as estruturas:
# define MAX 100
typedefstructelem {
charpalavra[20];
intinicio;
} t_elem;
Typedefstruct no {
intlinha;
intprox;
} t_no;
t_elem palavras[MAX];
t_no lista[MAX];
========
>>
Bom eu estou fazendo mas esta dando alguns erros e eu to meio confuso oque eu fiz de errado estou no 1º ano e preciso de dicas de pessoas + experientes na área ..
aqui ta meu código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
# define MAX 100
typedef struct elem{
char palavra[20];
int inicio;
}t_elem;
typedef struct no{
int linha;
int prox;
}t_no;
t_elem palavras[MAX];
t_no lista[MAX];
FILE *fp;
void conta_palavras()
{
char ch,forma_palavra[20];
int i=0,lin=1,k=0,cont=0,x,existe=0,j=0;
if ((fp=fopen("tekxto.txt","r"))==NULL)
printf("Erro ao abrir o arquivo!!");
else
{
while ((ch=getc(fp))!=EOF)
{
if (ch!=' ')
{
if(isalpha(ch))
forma_palavra[i++]=ch;
}
cont++;
for(x=0; x<=cont;x++)
{
if (strcmp(forma_palavra,palavras[x].palavra) == 0)
Pergunta
KeoughxD
Seguinte To com um trabalho na facu pra fazer porem quebrei a mao to programando com 1 mao so e preciso fazer um programa q vale 5 pontos eu fazendo ele fecho 2 materias , bom o programa e o seguinte :
E um indice Remissivo .. e oque é isso ??
>>
Escreva um programa em C, para construir um índice remissivo a partir de um arquivo lido em disco. Este arquivo conterá apenas letras e espaços em branco. As palavras do índice remissivo deverão ser armazenadas em um vetor de palavras em ordem alfabética crescente. Cada posição do vetor de palavras está dividida em dois campos:
a) O primeiro, denominado palavra, deverá guardar a palavra;
B) O segundo campo, denominado início, deverá guardar a posição onde está armazenado o primeiro elemento da lista de linhas.
Tal lista contém as linhas nas quais uma palavra do índice remissivo aparece no texto lido. Uma vez construído o índice, escreva funções para realizar as seguintes operações e, apresentar resultados na tela:
i) Mostrar todo o conteúdo do índice;
ii) Mostrar todas as linhas nas quais aparece uma palavra informada pelo usuário;
iii) Mostrar a palavra mais frequente no texto;
iv) Mostrar a linha na qual uma palavra informada pelo usuário, aparece com mais frequência.
Para a implementação, considere as estruturas:
# define MAX 100
typedefstructelem {
charpalavra[20];
intinicio;
} t_elem;
Typedefstruct no {
intlinha;
intprox;
} t_no;
t_elem palavras[MAX];
t_no lista[MAX];
========
>>
Bom eu estou fazendo mas esta dando alguns erros e eu to meio confuso oque eu fiz de errado estou no 1º ano e preciso de dicas de pessoas + experientes na área ..
aqui ta meu código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
# define MAX 100
typedef struct elem{
char palavra[20];
int inicio;
}t_elem;
typedef struct no{
int linha;
int prox;
}t_no;
t_elem palavras[MAX];
t_no lista[MAX];
FILE *fp;
void conta_palavras()
{
char ch,forma_palavra[20];
int i=0,lin=1,k=0,cont=0,x,existe=0,j=0;
if ((fp=fopen("tekxto.txt","r"))==NULL)
printf("Erro ao abrir o arquivo!!");
else
{
while ((ch=getc(fp))!=EOF)
{
if (ch!=' ')
{
if(isalpha(ch))
forma_palavra[i++]=ch;
}
cont++;
for(x=0; x<=cont;x++)
{
if (strcmp(forma_palavra,palavras[x].palavra) == 0)
{
existe=1;
break;
}
}
if (ch!='\n' && existe==0)
{
forma_palavra='';
lista[j++].linha = lin;
palavras[k].inicio++-1;
strcpy(palavras[k++].palavra,forma_palavra);
}
else
lin++;
} }}
main()
{
void conta_palavra();
getch();
}
:ninja: :ninja: :ninja:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.