PDA

Просмотр полной версии : помогите написать прогу на СИ.


k1b0rg
11.12.2005, 17:38
вот собственно говоря сабж, нужна прога на СИ, именно на СИ, на других языках бы я бы написал, но Си я плохо знаю. Кто знает СИ, прошу помочь! ))
Задана фраза-последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 10 строчных латинских букв;между соседними словами - запятая ,за последним словом точка. Напечатать все слова, которые встречаються в последовательности по одному разу.
Программа должна читать текст из файла input.txt и выводить последовательность в файл output.txt

qBiN
11.12.2005, 18:03
Нихера не понял что надо)))) Наверно потому что ты не привел пример файла input.txt , а вдумываться в задачу не хочется...
Вопще в чем проблема?? что уже сделал то?

k1b0rg
11.12.2005, 18:09
вот смотри в input.txt должна будет содержаться типа примерно такой фразы
helloy,i,m,from,russia.
слова разделены запятой.Всего строка может содержать от 1 до 30 слов, в слове может быть от 1 до10 строчных латинских букв. НАписать неповторяющиеся слова. На php я писал так, загонял в массив (по разделению "," )типа explode($string,",");
а дальше сравнивал элементы массива, если повторяються ,тогда удалял повторения, если нет оставлял, в конечном ввиде ввыводил массив

madnet
12.12.2005, 03:46
Вот набросал тебе небольшой код со скуки, сильно не тестил, но вроде работает правильно.


#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
void checkmass(char *mass[255],int len);
void checkmass(char *mass[255],int len)
{
int a,b;
char test[255];
strcpy(test,mass[0]);
for(a=1;a<len;a++)
{
for(b=a;b<len;b++)
{
if (strcmp(mass[b],test)==0) {mass[b]="";}
}
strcpy(test,mass[a]);
}
}
int main(void)
{
FILE *filetoread,*filetosave;
char str[255]="",*rfile,*sfile,*mass[255];
int couner=0,a=0;
system("cls");
printf("**************************************\n");
printf("* coded by madnet *\n");
printf("* 12.12.2005 *\n");
printf("**************************************\n\n");
rfile = "input.txt";
sfile = "output.txt";
if ((filetoread = fopen(rfile,"r")) == NULL)
{
printf("ERROR: file input.txt not exists");
getch();
return(0);
}
else
{
if (fgets(str,255,filetoread))
{
fclose(filetoread);
str[strlen(str)-1]=',';
mass[0]=strtok(str,",");
while (mass[couner] != NULL)
{
couner++;
mass[couner]=strtok(NULL,",");
}
checkmass(mass,couner);
if ((filetosave = fopen(sfile,"w")) != NULL)
{
for(a=0;a<couner;a++)
{
if (mass[a]!="")
{
fputs(mass[a],filetosave);
fputs("\n",filetosave);
}
}
fclose(filetosave);
}
}
printf("work finished");
getch();
}
}