За последние 24 часа нас посетили 21368 программистов и 1376 роботов. Сейчас ищет 621 программист ...

язык С

Тема в разделе "Вопросы от блондинок", создана пользователем smails, 28 окт 2007.

  1. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    Код (Text):
    1. void ins_str(char vo_chto[], char chto[], int num){
    2.     auto int i, lenChto = lenght(chto);
    3.     char gde_1[num];
    4.     for (i = 0; i < num; i++){
    5.         gde_1[i] = vo_chto[i];
    6.     }
    7.     gde_1[i] = '\0';
    8.     printf("%s", gde_1);
    9. }
    почему срока
    char gde_1[num];
    не работает? :(
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    smails
    Си не умеет "на лету" работать с динамическими структурами. Пропиши там не num, а фиксированный размер.
     
  3. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    Но нум это и есть фиксированная цифра, передаваемая в функцию..

    или всёравно нужно писать число?.. а если строка очень большая и нехватит размера массива? или она очень маленькая и тогда её не нужно резервировать много места?..
     
  4. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    кстати это не структура) "_" ведь не точка
     
  5. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    gde_1 = malloc(sizeof(char)*num));
     
  6. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    вот в книге написано:
    Код (Text):
    1. int num;
    2. scanf("%i", &num);
    3. unsigned long long int mass[num];
    :)
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    AlexGousev
    всё время считал, что malloc — устаревшая конструкция и предаочтительней new :roll:
     
  8. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    Ну что?.. остаётся мне только число подставить?..

    Ну ладно, если что потом препод исправит... Но балл ниже будет = )
     
  9. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    1. В С нет new
    2. А как с помощью new можно выделить конкретный размер памяти в зависимости от значения переменной?

    Очень странная книга :)

    PS. Может быть сейчас уже другой С? :)
     
  10. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    Незнаю каким был С, но в книге "Программирование на С" автора Стефан Кочан именно так написано...
    Глава 7 Массивы, листинг 7.8
    Код (Text):
    1. // Генерация чисел фибоначчи с помощью массивов с переменным размером
    2. #include <stdio.h>
    3. int main (void){
    4.  int i, numFibs;
    5.  printf("How many? ");
    6.  scanf("%i", &numFibs);
    7.  if (numFibs < 1 || numFibs > 75){
    8.   printf("Bad number, sorry!\n");
    9.   return 1;
    10.  }
    11.  unsigned long long int Fibonacci[numFibs];
    12.  Fibonacci[0] = 0;
    13.  Fibonacci[1] = 1;
    14.  for (i = 2; i < numFibs; ++i)
    15.   Fibonacci[i] = Fibonacci[i - 2] + Fibonacci[i - 1];
    16.  for (i = 2; i < numFibs; ++i)
    17.   printf("%llu ", Fibonacci[i]);
    18.  printf("\n");
    19.  return 0;
    20. }
    Полный код программы... Кстати которая не работает...

    Какие нибудь есть предположения на счёт этого?..
     
  11. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Код (Text):
    1. #include <stdio.h>
    2. #include <malloc.h>
    3.  
    4. int main(int argc,char *argv[]) {
    5.     unsigned short int num;
    6.     unsigned short int i;
    7.     unsigned int *fib;
    8.  
    9.     printf("How many? ");
    10.     scanf("%i", &num);
    11.  
    12.     if (num < 1 || num > 75) {
    13.         printf("Bad number, sorry!\n");
    14.         return 1;
    15.     }
    16.  
    17.     fib = malloc(sizeof(int)*num);
    18.  
    19.     fib[0] = 0;
    20.     fib[1] = 1;
    21.  
    22.     for (i = 2; i < num; i++)
    23.         fib[i] = fib[i-2] + fib[i-1];
    24.  
    25.     for (i = 0; i < num; ++i)
    26.         printf("%u ", fib[i]);
    27.     puts("");
    28.    
    29.     free(fib);
    30.  
    31.     return 0;
    32. }
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Код (Text):
    1. void main(void)
    2.  
    3. {
    4. int size;
    5. char *pointer;
    6. cout << "Введите размер массива, до 30000: ";
    7. cin >> size;
    8. if (size <= 30000)
    9.  
    10. {
    11. pointer = new char[size];
    12. if (pointer != NULL) cout << "Память выделена успешно" << endl;
    13. else cout << "Невозможно выделить память" << endl;
    14. }
    15. }
     
  13. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    С++ не знаю совсем: все время думал, что с помощью new можно только экземпляры объектов создавать.

    Luge
    Но тема изначально было про С, а не С++
    Я не знаю, почему их все время путают: абсолютно разные языки, разве что семантика похожа
     
  14. smails

    smails Активный пользователь

    С нами с:
    24 июл 2006
    Сообщения:
    231
    Симпатии:
    0
    Адрес:
    Москва
    Эмм.. мы ещё не проходили такие способы... и врядли примут такую работу..

    Так значит код, который я написал из книги - бред?
     
  15. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    По-моему, да. Рабочий вариант я привел.