1

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

#Sparta написав:

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

Консольний ввід.
Як шукати '\n'? Коли ввести якийсь char c і після кожного числа перевіряти умову (c != '\n'), то c буде "їсти" першу цифру кожного наступного числа.

2

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

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

3

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

1 тест не проходить через неправильну відповідь.

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

int main()
{
    int T = 0, l, h, k;
    cin >> l >> h >> k;
    while (l >= 0)
    {
        ++T;
        double S = 0;
        int e;
        for (int i = l; i <= h; ++i)
        {
            e = floor(k*log10((double)h));
            S += pow(10, k*log10((double)i)-e);
        }
        while (S >= 1) {S /= 10; ++e;}
        cout << "Case ";
        cout << setfill('0') << setw(4) << T << ": ";
        if (S)
        {
            cout << fixed << setprecision(6) << S << 'e';
            cout << setfill('0') << setw(10) << e << endl;
        }
        else cout << "0.000000e0000000001" << endl;
        cin >> l >> h >> k;
    }
    return 0;
}

http://www.e-olymp.com/uk/solutions/2095631

4

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

Runtime Error

5

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

http://www.olymp.vinnica.ua/index_ua.ph … task=Strip
Набирає 26 балів з 40

6

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

Ось умова задачі:
Задача Strip На довгій смужці записується велике число, після чого смужка розрізається на кілька частин таким чином, що на кожній частині буде одна або кілька цифр.  Відомо, що до розрізання на смужці було записано максимальне число. Напишіть програму, яка відновить це число.

Технічні умови
Програма Strip читає з пристрою стандартного введення N (1≤N≤100) – кількість частин, на які була розрізана смужка. Кожен з наступних N рядків містить частину стрічки - одне число від 1 до 100 цифр. Гарантується, що хоча б на одній із частин перша цифра відмінна від нуля.  Програма виводить на екран одне число – максимальне число до розрізання.

7

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

Знову якась проблема з покажчиками?

8

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

Якщо ввести
2
88
89, то виведе 8988, тобто 89 має стояти перед 88 (так і має бути), але якщо ввести
5
87
88
89
8
47, то виведе 888898747. Тут вже 89 стоїть після 88.

#include <iostream>
using namespace std;

int cmp(const void* str1, const void* str2)
{
    char* s1 = *(char**)str1, *s2 = *(char**)str2;
    int l = min(strlen(s1), strlen(s2));
    if (strncmp(s1, s2, l) || strlen(s1) == strlen(s2)) return -strncmp(s1, s2, l);
    unsigned char i = l;
    if (strlen(s1) > strlen(s2))
    {
        while (s1[i] == s1[l-1] && i < strlen(s1)) ++i;
        return s1[i]-s1[l-1];
    }
    else
    {
        while (s2[i] == s2[l-1] && i < strlen(s2)) ++i;
        return s2[i]-s2[l-1];
    }
}

int main()
{
    /*char** s1 = 0, **s2 = 0;
    //char** p1 = 0, **p2 = 0;
    cin >> *s1 >> *s2;
    //*p1 = s1; *p2 = s2;
    cout << cmp(*s1, *s2);*/
    short N;
    char S[101];
    cin >> N;
    char** A = new char*[N];
    for (char i = 0; i < N; ++i)
    {
        cin >> S;
        A[i] = new char[strlen(S)+1];
        strcpy(A[i], S);
    }
    qsort(A, N, 4, cmp);
    for (char i = 0; i < N; ++i) cout << A[i];
    //for (char i = 0; i < N; ++i) delete A[i];
    delete [] A;
    cout << endl; system("pause");
    return 0;
}

9

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

Як перевірити функцію cmp на деяких двох рядках, які я вводжу з клавіатури?

10

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

У вас елементи - це показчики на рядки.
А можна зробити так, щоб елементи були рядками?

11

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

Все одно помилка C2664

12

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

Але тепер
error C2664: 'qsort' : cannot convert parameter 4 from 'int (__cdecl *)(const void **,const void **)' to 'int (__cdecl *)(const void *,const void *)'

13

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

...покажчики на покажчики на рядки. І як це зробити?

14

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

Не знаю.

15

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

Наскільки я розумію, функція qsort повинна міняти місцями елементи, якщо cmp повертає додатне значення. cmp("4", "2") повертає -2, тому qsort не повинна міняти їх. Але якщо ввести
3
4
01
2,
то отримаємо 2014.

#include <iostream>
using namespace std;

int cmp(const void* str1, const void* str2)
{
    char* s1 = (char*)str1, *s2 = (char*)str2;
    int l = min(strlen(s1), strlen(s2));
    if (strncmp(s1, s2, l) || strlen(s1) == strlen(s2)) return -strncmp(s1, s2, l);
    unsigned char i = l;
    if (strlen(s1) > strlen(s2))
    {
        while (s1[i] == s1[l-1] && i < strlen(s1)) ++i;
        return s1[l-1]-s1[i];
    }
    if (strlen(s1) < strlen(s2))
    {
        while (s2[i] == s2[l-1] && i < strlen(s2)) ++i;
        return s2[l-1]-s2[i];
    }
}

int main()
{
    /*char s1[10], s2[10];
    cin >> s1 >> s2;
    cout << cmp(s1, s2);*/
    short N;
    char S[101];
    cin >> N;
    char** A = new char*[N];
    for (char i = 0; i < N; ++i)
    {
        cin >> S;
        A[i] = new char[strlen(S)];
        strcpy(A[i], S);
    }
    qsort(A, N, 4, cmp);
    for (char i = 0; i < N; ++i) cout << A[i];
    cout << endl; system("pause");
    return 0;
}

16

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

Все зробив, як ви казали, але все те саме.

17

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

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

#include "targetver.h"

[!if !CONSOLE_APP]
#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers
[!else]
#include <stdio.h>
#include <tchar.h>
[!endif]
[!if SUPPORT_MFC]
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN            // Exclude rarely-used stuff from Windows headers
#endif

#include <afx.h>
#include <afxwin.h>         // MFC core and standard components
[!if !LIB_APP]
#include <afxext.h>         // MFC extensions
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>           // MFC support for Internet Explorer 4 Common Controls
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>                     // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <iostream>
[!endif]
[!endif]
[!if DLL_APP || WIN_APP]
// Windows Header Files:
#include <windows.h>
[!endif]

[!if WIN_APP]
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
[!endif]

[!if SUPPORT_ATL]
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

#include <atlbase.h>
#include <atlstr.h>
[!endif]

// TODO: reference additional headers your program requires here

18

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

error C2065: 'M_PI' : undeclared identifier
error C2065: 'M_E' : undeclared identifier

#include <iostream>
#define _USE_MATH_DEFINES
#include <cmath>
using namespace std;
int main() {
    cout<<"pi="<<M_PI<<endl;
    cout<<"e="<<M_E<<endl;
    cout<<endl;system("pause"); return 0;
} 

19

(20 відповідей, залишених у Pascal/Delphi)

Не допомагає

20

(20 відповідей, залишених у Pascal/Delphi)

Тобто додати в 'Довірені'?