Автор Тема: Задача по С!  (Прочетена 1719 пъти)

renesans

  • Напреднали
  • *****
  • Публикации: 28
    • Профил
Задача по С!
« -: Dec 08, 2010, 15:00 »
Здравейте, имам една задача на гореспоменатия език. От 6 условия 4 оправих но в едно не мога да вникна а другото реално не мога и да направя:
1.Среден брой цифри на ред във файл спрямо общия брой цифри в целият файл?
2.На всеки ред в средата поставете знаците "***".

Първото не му схващам замисъла (може и да е от щото съм тъп). Мога да броя цифрите във файла и по редове мога ама...
Второто не зная как да го направя.
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Задача по С!
« Отговор #1 -: Dec 08, 2010, 15:06 »
1вото означава да преброиш колко цифри има във файла и да го разделиш на броя на редовете в него (и получаваш средно по колко цифри има на ред).
2рото аз го разбирам като отделяш си ред от файла, гледаш му дължината, смяташ къде е средата му и там слагаш ***... предполагам, че тия звездички трябва да презапишат 3те "центални" байта.

Какъв е замисъла... без коментар (и без идея) :)
Активен

renesans

  • Напреднали
  • *****
  • Публикации: 28
    • Профил
Re: Задача по С!
« Отговор #2 -: Dec 08, 2010, 15:18 »
Да, за първото сега го схванах и ще го направя вече ми е ясно как.
Обаче реализацията като код на второто не я мога май, казано най общо. Мога да чета и пиша във файл но никога не съм добавял вътре в ред. Иначе средата на реда знам как да я намеря даже по два начина обаче...
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Задача по С!
« Отговор #3 -: Dec 08, 2010, 15:34 »
Да, за първото сега го схванах и ще го направя вече ми е ясно как.
Обаче реализацията като код на второто не я мога май, казано най общо. Мога да чета и пиша във файл но никога не съм добавял вътре в ред. Иначе средата на реда знам как да я намеря даже по два начина обаче...
Кои функции ползваш (трябва да ползваш) за i/o?
Активен

renesans

  • Напреднали
  • *****
  • Публикации: 28
    • Профил
Re: Задача по С!
« Отговор #4 -: Dec 08, 2010, 15:42 »
Понеже трябва да има меню за това какво да се прави по избор ползвам няколко:
fgetc
scanf
за вход.
Няма ограничения по задачата какво да ползвам и гото може :)
« Последна редакция: Dec 08, 2010, 16:00 от renesans »
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Задача по С!
« Отговор #5 -: Dec 08, 2010, 16:07 »
Код:
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>

int main()
{
    FILE* f = fopen("myfile","r+"); //open file for update, see fopen for more info
    if(f == NULL)
    {
        return EXIT_FAILURE;
    }
    int status = fseek(f, 10, SEEK_SET); // go to 10th position, see fseek for more info
    if(status !=0)
    {
        return EXIT_FAILURE;
    }
    status = fputs("***",f); // write a sequence of bytes to file, see fputs for more info
    if(status == EOF)
    {
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

Код
GeSHi (Bash):
  1. mara@OVNIWatermelon:~$ gcc trystdio.c
  2. mara@OVNIWatermelon:~$ cat myfile
  3. 01234567890123456789
  4. qwertyuiop
  5. mara@OVNIWatermelon:~$ ./a.out
  6. mara@OVNIWatermelon:~$ cat myfile
  7. 0123456789***3456789
  8. qwertyuiop
  9. mara@OVNIWatermelon:~$

Разгледай това, би трябвало да те насочи :)
Активен

idiotbg

  • Новаци
  • *
  • Публикации: 1
    • Профил
Re: Задача по С!
« Отговор #6 -: Dec 08, 2010, 19:14 »
2.На всеки ред в средата поставете знаците "***".

Тук трябва да се уточни как точно да стане, средата е между 2 символа, когато броят на символи е четен (разбирай и 0 символа - празен ред) и средата е символ, когато броят е нечетен. Т.е. трябва да уточиш

1) дали вмъкваш или презаписваш
2) коя е началната позиция (пореден символ), на която започваш да извършваш действието от 1)

Освен това трябва да уточниш, ако трябва да презаписваш, какво правиш, когато на реда има по-малко символи, от колкото искаш да презапишеш.
Активен

renesans

  • Напреднали
  • *****
  • Публикации: 28
    • Профил
Re: Задача по С!
« Отговор #7 -: Dec 08, 2010, 19:46 »
Няма опълнителни анни за това в заачата. Поставяш в средата на всеки ред това *** и толкова. Не е казано да се брои дали реда не е с 2 сомвола или празен.
Аз още не съм се справил с това!
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Задача по С!
« Отговор #8 -: Dec 08, 2010, 19:47 »
//off
Няма опълнителни анни за това в заачата. Поставяш в средата на всеки ред това *** и толкова. Не е казано да се брои дали реда не е с 2 сомвола или празен.
Аз още не съм се справил с това!

От рано си почнал да празнуваш ми се струва :D :D :D :D  [_]3 [_]3 [_]3 [_]3 [_]3
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: Задача по С!
« Отговор #9 -: Dec 08, 2010, 19:49 »
Няма опълнителни анни за това в заачата. Поставяш в средата на всеки ред това *** и толкова. Не е казано да се брои дали реда не е с 2 сомвола или празен.
Аз още не съм се справил с това!
Е нямаш ли кого да питаш? Ако идеята е да се презапишат средните байтове (аз така го разбирам, защото вмъкването на място е доста по-сериозна и безсмислена задача), това, което ти показах трябва да те ориентира добре.

ПС. backtolife, ти не си ли имал кофти клаиатура? ;)
Активен

b2l

  • Напреднали
  • *****
  • Публикации: 4786
  • Distribution: MCC Interim
  • Window Manager: - // - // -
  • ...sometimes I feel like screaming... || RTFM!
    • Профил
    • WWW
Re: Задача по С!
« Отговор #10 -: Dec 08, 2010, 19:52 »
Няма опълнителни анни за това в заачата. Поставяш в средата на всеки ред това *** и толкова. Не е казано да се брои дали реда не е с 2 сомвола или празен.
Аз още не съм се справил с това!
Е нямаш ли кого да питаш? Ако идеята е да се презапишат средните байтове (аз така го разбирам, защото вмъкването на място е доста по-сериозна и безсмислена задача), това, което ти показах трябва да те ориентира добре.

ПС. backtolife, ти не си ли имал кофти клаиатура? ;)

Не, но съм имал кофти алкохолизация :D :D :D :D.
Активен

"Човекът е въже, опънато между звяра и свръхчовека, въже над пропаст. Човекът е нещо, което трябва да бъде превъзмогнато." - Фр. Ницше

renesans

  • Напреднали
  • *****
  • Публикации: 28
    • Профил
Re: Задача по С!
« Отговор #11 -: Dec 08, 2010, 19:54 »
Проблемът е че аз съм помагащия, има идея от други езици горе-долу, но не и от С. Обаче скалъпих другата част без тази.
Активен