61

(12 відповідей, залишених у C++)

Усім привіт!
Ось поставили мені задачу заставити студію читати з файлу "блоками" до кінця стрічки.
Типу до тих пір поки буфер переповнений - продовжувати читати.
Суть в тому , що все працює :)
Але я виділив пам'ять , отже потрібно її видалити.
А воно "свариться". Сидів гуглив.Чесно *CRAZY*   Але толком нічого не пишуть:) У кожного окремий випадок цієї проблеми. *WALL*

Тому , якщо хтось може щось пояснити чи підказати як цю проблему виправити  - буду дуже вдячний! :)
Ось код :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILE_NAME "Input.txt"
#define FILE_MOD "r"
#define BUFFER_SIZE 255


int main()
{
    FILE *infile = fopen(FILE_NAME,FILE_MOD);
    if (infile == NULL)
    {
        printf("Error\n");
        return 0;
    }
    
    char buff[BUFFER_SIZE];
    
    
    while (!feof(infile))
    {
            char *tmp = NULL;
            int iTotalLen = 0;
            
            while (true)
            {
                fgets(buff,BUFFER_SIZE,infile);
                
                int len = strlen(buff);
                
                tmp = (char*)realloc(tmp, len + iTotalLen);
                
                strcpy(tmp + iTotalLen, buff);
                
                iTotalLen += len;

                if (len < 255) break;

            }
            printf(tmp);

            delete tmp;// ось тут проблема 
    }
    
    fclose(infile);
}

Там помилка щось типу : "HEAP CORRUPTION DETECTED" ]:->

62

(11 відповідей, залишених у C++)

mshcherba написав:

Потрібно зчитати числа до кінця рядка. Чи можна це зробити без string і char*? Чи є в C++ якась функція подібна до eoln в Pascal?

ТС написав «числа», а не «цифри» і не вказав, що вони якось розділяються в рядку. Тому не бачу причин вважати багато цифр підряд не одним числом.


Ні, він таки написав ЧИСЛА:) Тобто їх декілька))) Недарма ж стрінг і чар заборонено використовувати:)
Хоча , в якомусь роді Ви праві , безумовно.

Смішно те , що користувач пропав :D
А ми тут дискусію ведемо і гадаємо , що він мав наувазі.

63

(11 відповідей, залишених у C++)

quez написав:
    int a;
    cin >> a;

Наскільки я розумію, в змінну "а" буде записано лише одне число (не числа!).

64

(11 відповідей, залишених у C++)

mshcherba написав:

Потрібно зчитати числа до кінця рядка. Чи можна це зробити без string і char*? Чи є в C++ якась функція подібна до eoln в Pascal?

Ну тут є суттєвим наступне питання.
Ви хочете читати з файлу чи консольний ввід передбачаєте?

65

(11 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Прихований текст
Invader написав:
var text = prompt("Введіть ваш текст");
var smal_leters='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю'; //обидві стрічки по 33 символи
var rez = text.toLowerCase();
function compare(v) {
    for(var j=0;j<smal_leters.length;j++) {
        if(v == smal_leters[j]) {
            return key[j];
        }
    }
    return null;
}
 
var i = 0;
var new_string = '';
while(i<rez.length)
{
    new_string += compare(rez[i]);
    i++;
}
rez = new_string;
alert(rez);

Я , звісно, дякую за готовий код. Але дороблю вже сам:)
Адже не розберуся - не буду знати!

66

(11 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Master_Sergius написав:

В javascript не можна так присвоювати. Ось тут можна знайти повну і вичерпну відповідь:

http://stackoverflow.com/questions/1337 … k#13371244

А це означає, що "вчіться користуватися пошуком"!


Якраз читаю! Дякую!
quez, Вам спасибі! Виправив.

67

(11 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

quez написав:

Дайте приклад тексту, з яким працює, бо в мене виводить тільки початковий рядок.

Так в тому то й справа:) Програма компілюється , але працює не так як треба.
Воно не виводить тексту - тобто не працює :(
Виводить лише (якщо добавити) :

alert(rez);

  після функції

toLowerCase();

той самий рядок який я вводжу , тільки тепер всі літери є маленькими.

68

(11 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Усім привіт!
Потихеньку вчу JavaScript і натрапив на цікаву задачку.
Потрібно всі символи : "абвгґдеєжзиіїйклмнопрстуфхцчшщьюя" замінити на "сквφα!tχайωопшγhrsuzїцфєуяліw?$βю".
Типу зашифрувати повідомлення :)
Суть в тому , що програма запускається і виконується , але лише частково. Тому що результат, який мені потрібен , просто не виводить на екран.
Підкажіть у чому помилка?
Код нижче :

<meta charset="utf-8">
<script>

var text = prompt("Введіть ваш текст");
var smal_leters='абвгґдеєжзиіїйклмнопрстуфхцчшщьюя'; // відповідно малі літери і їх відповідники 
var key ='сквφα!tχайωопшγhrsuzїцфєуяліw?$βю';   //обидві стрічки по 33 символи


var rez = toLowerCase(text); //пробував варіант і var rez = text.toLowerCase(); 
                                          //переводить на малі літери і так і так

var i = 0;

while(i<rez.length)
{
    for(var j=0;j<smal_leters.length;j++)  
        if(rez[i]==smal_leters[j])
            rez[i]=key[j];
        i++;
}
    
alert(rez);

Наперед дякую!

69

(3 відповідей, залишених у Залізо)

Дякую:)
Вечір потратив але оптимізував. Тепер краще працює :)

70

(3 відповідей, залишених у Залізо)

Усім привіт!
Недавно поставив себе перед фактом, що давно не обновляв "дрова".
Так от. Скачав значить я драйвера на відео адаптер і новий дірект. Поставив.
Тільки от комп'ютер від цього краще працювати не став. Перед тим я очистив його від тимчасових файлів і т.д. - сміття загалом. Всерівно ефективніше він працювати не почав:)
Так от. Якщо вам не важко, порекомендуйте , яким чином краще "почистити" комп'ютер і де можна скачати нормальні і надійні драйвери.
Буду дуже вдячний :)
Файл DxDiag додаю, можливо кому цікаво.

71

(2 відповідей, залишених у Вибір подальшого шляху)

Спробуйте оце, мені в свій час допомогло.

Дякую!)
Почав читати)

72

(2 відповідей, залишених у Вибір подальшого шляху)

Привіт усім!
Наразі вивчаю С і паралельно Java.
Застряг на темі "Лінійні списки" . Не можу розібратися з стеками , чергами, двохзвязними списками і т.д.
Література є , але матеріал викладено таким чином, що людині , яка близько не знайома з цим - важко орієнтуватися :)
Гуглити теж пробував. Результат невтішний. В більшості випадків джерела пропонують працювати з цим всім ділом через окремо створений клас. Але я хочу розібратись з середини. Тобто через структури і т.д.
Так от. Якщо хтось має якісь підручники/статті/блоги і т.д. по цій темі - скиньте :)
Мова викладу не сильно грає роль :) Звичайно, приємно читати українською, але інгліш і рашшн теж знаю.
Дякую!

73

(17 відповідей, залишених у C++)

Знову ж таки , на майбутнє, використовуйте оточення

КОД

Його ж не просто так сюди добавили. Це зручно.
А так, по програмі, то там де пароль, то у вас getch() по ідеї зчитує по одному символу. Звідси маємо, що всі паролі, які ви ввели будуть мати 1 цифру/букву. Потрібно це робити в циклі.
Ще одне зауваження , що ваші функції типу

int add_group(){........}

по ідеї повинні повертати значення цілого типу. В даному випадку, Ви нічого не повертаєте. Використовуйте тип void.

Прихований текст
int print_list_groups(){
    int choice;
{
  FILE * ptrFile = fopen( "groups.dat" , "rb" );

Тут наче теж помилка. Ще одна фігурна дужка тут не потрібна.

74

(11 відповідей, залишених у C++)

Краще користуйтесь оточенням

 КОД

.
Просто більшості банально ліньки буде скачувати Ваш файл і переглядати вже напряму в середовищі :)

75

(2 відповідей, залишених у C++)

Щойно дійшов того самого всновку :)
Туплю.
Ось виправлений код :

typedef struct RationalNumber{
    int num; //numerator
    int den; //denominator 
}frac;
void multiplication(frac x,frac y,frac *c);
void multiplication(frac x, frac y,frac *c)
{
    c->num = x.num*y.num;
    c->den = x.den*y.den;
            
}
frac x5, y5, c5;
        printf("Please,input 1st fraction\n");
        scanf("%d %d", &x5.num, &x5.den);
        printf("Please,input 2nd fraction\n");
        scanf("%d %d",&y5.num,&y5.den);
        multiplication(x5,y5,&c5);
        printf("Result is : \n %d \n %d\n",c5.num,c5.den);

76

(2 відповідей, залишених у C++)

Усім привіт!
Працюю над калькулятором для дробів.
Писав функцію під множення 2х дробів і наче все добре, тільки значення виводить дивовижні (дивіться скіншот).
Код додаю, перегляньте. Можливо, ви скажете де помилка.

//Сама структура, яка моделюватиме дріб.
typedef struct RationalNumber{ 
    int num; //numerator 
    int den; //denominator 
}frac;
frac multiplication(frac x,frac y,frac c); //прототип функції (x , y - 2 дроби,які вводить користувач а c - результат)
//безпосередньо сама функція
frac multiplication(frac x, frac y,frac c)
{
    c.num = x.num*y.num;
    c.den = x.den*y.den;
    return c;
        
}

void main(void)
{frac x5, y5, c5;
        printf("Please,input 1st fraction\n");
        scanf("%d %d", &x5.num, &x5.den);
        printf("Please,input 2nd fraction\n");
        scanf("%d %d",&y5.num,&y5.den);
        multiplication(x5,y5,c5);
        printf("Result is : \n %d \n %d\n",c5.num,c5.den);
system("pause");
} 

77

(4 відповідей, залишених у C++)

Вам сюди : http://replace.org.ua/topic/4814/
Тут все детально пояснено.

78

(22 відповідей, залишених у C++)

В.Ю.Вінник "Алгоритмічні мови та основи програмування : мова Сі"
Даний посібник суто по класичному С, але тут дуже доступно і зрозуміло викладено інформацію про типи данних , функції і т.д.Базові знання легко і доступно, якщо коротко :)
Можливо, зацікавить Вас.

79

(10 відповідей, залишених у C++)

овв, точно, різниця квадратів -- це було помилкою :) то просто спати пора йти, баняк не варить :D

Буває :)
Все - таки) Спробуйте почитати про структурні типи данних.

80

(10 відповідей, залишених у C++)

А чому різниця квадратів?

 m=sqrt(pow(x1,2)-pow(y1,2));
 n=sqrt(pow(x2,2)-pow(y2,2));
 b=sqrt(pow(x3,2)-pow(y3,2));

До речі, рекомендую використовувати структурні типи даних для моделювання точки на площині :)
Я розумію, що ви , можливо, цього ще не вчили , але загугліть , або почитайте в посібнику - дуже зручна штука.
І значно зекономить вам час і зменшить розмір коду.

І ще 1. Навіщо фігурні дужки перед іфом(if)?