Найти сумму чисел, которые расположены до первого отрицательного значения - C (СИ)

  1. Дана последовательность чисел, за которой следует ноль. Найти сумму чисел, которые расположены до первого отрицательного значения, и после значения, равного пяти.


textual

Код:

#include <windows.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
 
 int main() {
     
 SetConsoleCP (1251);
 SetConsoleOutputCP (1251);
 
 
 
 int i;
 const int ind = 10;
 
 int arr[ind] = {10 , 10, 10, 10, 7, 6, 2, 5, 2, -1 };
 
 int* p_0= find (arr, arr+ ind, 5);
 int* p_1= arr;
 int sum= 0;
 
 
 //+++++++++++++++++++++++++++++++
 
 if (p_0== &arr[ind]) {
  printf ("Ничё не выйдет, нет здесь пятёрки\n");
  getchar (); 
  return 0;
 }
 
 //+++++++++++++++++++++++++++++++
 
 
 while ((*p_1>= 0)&&(p_1< &arr[ind]))   p_1++;
 
 if (p_1< p_0) {
  printf ("Ничё не выйдет, первое отрицательное чсисло перед пятёркой\n");
  getchar (); 
  return 0;
 }
 
 if (p_1== &arr[ind]) {
  printf ("Ничё не выйдет, нет здесь отрицательных чисел\n");
  getchar (); 
  return 0;
 }
 
 if ((p_1- p_0)== 1) {
  printf ("Ничё не выйдет, нет между пятёрокй и отрицательнгым числом других чисел\n");
  getchar (); 
  return 0;
 }
 
 do {
  sum+= *++p_0;
 }
 while ((p_1- p_0)> 1);
 
 printf ("сумма равна %d\n", sum);
 getchar ();
}


Похожие ответы
  1. Здравствуйте! Данная "программа" должна обрабатывать числа, расстояние между которыми меньше 5, а также находить среди таких двух чисел самое большее чётное произведение. КОМПИЛИРУЕТСЯ ВСЁ НОРМАЛЬНО, НО ИСПОЛЬНЯТЬ ЭТА ГАДЮКА НИЧО НЕ ХОЧЕТ ИМЕННО В СЛУЧАЕ, КОГДА НА ВХОД ПОСУТПАЕТ БОЛЕЕ 5 ЧИСЕЛ. Т.е. цикл for(i=5;i int main(void) {   char j,c;      int i;      int n;      int a[5];      int x;      int max=-1;           scanf("%d",&n);     for (i=0;i<=4;i++){         scanf("%d",&a[i]);         }     for (i=5;imax )&&  (a[j-1]*a[c]%2 ==0))                     max=a[c]*a[j-1];                                             }                     }                 for (j=0;j<4;j++){             a[j]=a[j+1];         }         a[4]=x;         }      if (max==-1)          printf("-1");     else printf ("%d",max);     getchar();     getchar();     return 0; }Добавлено через 9 минут Тэкс... Счётчик тут должен робить... Тэк... Вывод массива когда у его индекса чото вычитаем тоже работает... Угу... Кажется я как-то выхожу из границ массива, но я в упор не могу разглядеть этого... Так, падажжи еманаДобавлено через 37 секунд лол, разглядеть он не может, у тебя две строки где идут пляски с массивамми, там же очевидно и ошибкаДобавлено через 3 минуты эхх, пойти спать или сожжрать таки хлеб с пащтетом? но тогда изжога будет от паштета с хлебом, я не хочу изжоги, антиацида нет с собой

  1. Задача вроде и понятна. но есть пару моментов. Обязательно нужно использовать функции библиотеки . Собственно я нашел совершенно подходящую функцию для поиска символа - char * strrchr( const char *string, int i). Но как ее притулить мне совершенно не понятно. Если есть другие варианты, то от них я тоже не отказываюсь. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include #include #include #include #include int main() {     int i,n;       for(i=0;i<100;i++)     {             n=pow(i,2);         //  char * strrchr( const char *string, int i)         printf("\n%d",n);     }         getch(); }

  1. Здравствуйте. Помогите исправить ошибку в программе.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 #include #include #include #include #define MAXSET 1000 #define ERROR "Ошибка: Некорректный ввод\n"   int GetDigit_0_999(); char *GetLine(); char *CatLine(char *ptr_line, char *bufline); void WriteLines(char **ptr_lines); int LenLine(char *ptr_line);   int main() {     setlocale(LC_ALL, "RUS");     int i, type, num = 0;// dig, dig2, first, second;     char **ptr_lines = (char **)malloc(1);     char *ptr_line = NULL;     char Menu[][40] = {         "Выход\n",         "Ввести строку\n",         "Взять подстроку\n",         "Склеить 2 строки\n",         "Разбить строку на слова\n",         "Вывести доступные строки\n",         "Узнать длину строки\n",         "Удалить строку\n"     };     do {         for (i = 0; i < 8; i++)             printf("%d.%s", i, Menu[i]);         printf("Выберите действие:");         switch (type = GetDigit_0_999()) {         case 1:             if (ptr_line = GetLine()) {                 *(ptr_lines + num++) = ptr_line;                 ptr_lines = (char **)realloc(ptr_lines, num + 1); // Эта строчка делает что-то не то                 *(ptr_lines + num) = NULL;             }             else                 printf("%s", ERROR);             break;         case 5:             if (ptr_lines)                 WriteLines(ptr_lines);             else                 printf("Нет доступных строк\n");         }     } while (type);     return 0; }   int GetDigit_0_999() //РАБОТАЕТ {     unsigned int dig;     scanf_s("%u", &dig);     while (getchar() != '\n');     if (dig >= 0 && dig < 1000)         return dig;     return EOF; }   char *GetLine() //РАБОТАЕТ, необходимы тесты {     char *ptr_line = (char *)malloc(1);     char buf[101];     int n, len = 0;     *ptr_line = '\0';     do {         n = scanf_s("%50[^\n]", buf, 101);         if (n > 0) {             len += LenLine(buf);             ptr_line = (char *)realloc(ptr_line, len + 1);             CatLine(ptr_line, buf);         }         else if (n == 0)             scanf_s("%*c");         else {             free(ptr_line);             ptr_line = NULL;         }     } while (n > 0);     return ptr_line; }   char *CatLine(char *ptr_line, char *bufline) //РАБОТАЕТ {     char *ptr_line2 = ptr_line;     for (; *ptr_line2; ptr_line2++);     while (*ptr_line2++ = *bufline++);     return ptr_line; }   void WriteLines(char **ptr_lines) // {     int i = 0;     while (ptr_lines) {         printf("%s\n", *ptr_lines++);     } }   int LenLine(char *ptr_line) //РАБОТАЕТ {     char *ptr_line2 = ptr_line;     for (; *ptr_line; ptr_line++);     return ptr_line - ptr_line2; }

  1. В общем, нужно сделать с использованием функций Я явно где-то накосячил, потому что выводит только 0 Помогите пожалуйстаC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 /*Найти минимальное из чисел, каждое из которых является произведением всех элементов матриц А, В и D, соответственно.*/ #include #include #include #include int vvod(int**mass, int n,int m); int pr(int**mass, int n, int m); int vyvod(int**mass, int n,int m);   int main() {     int i,j,P,n,m;     int a,b;//первый     int c,d;//второй     int f,g;//третий     puts("Vvedyte kolichestvo strok massiva");     scanf("%d",&a);     puts("Vvedyte kolichestvo stolbcov massiva");     scanf("%d",&b);     int **A[a][b];     vvod(**A,a,b);         puts("Vvedyte kolichestvo strok massiva");     scanf("%d",&c);     puts("Vvedyte kolichestvo stolbcov massiva");     scanf("%d",&d);     int **B[c][d];     vvod(**B,c,d);         puts("Vvedyte kolichestvo strok massiva");     scanf("%d",&f);     puts("Vvedyte kolichestvo stolbcov massiva");     scanf("%d",&g);     int **D[f][g];     vvod(**D,f,g);         //     vyvod(**A,a,b);     vyvod(**B,c,d);     vyvod(**D,f,g);            int p1,p2,p3;    p1=pr(**A,a,b);    p2=pr(**B,c,d);    p3=pr(**D,f,g);        printf("%d %d %d",p1,p2,p3);    // } int vvod(int**mass, int n,int m) {     int i,j;     mass= new int*[n];     for(i=0;i

  1. передо мной стоит задача Считать строки из файла(длинной не более 50 ), потом удалить из них самое длинное слово, затем занести в очередь, буфер который может содержать до 10 элементов. МНЕ ПОНЯТЬ БЫ как работать со строками ,которые мы получили из файла. вот пока ,что я я сделала, очень нужна помощь , скоро экзамен ,а я не понимаю.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 char  prepare_file(char* fname) {     FILE* fp;     char* fname ="date.txt";     char buf[50];     fp= fopen(fname, "r");     if (fp == NULL)     {         printf("Can not open file %s'", fname);         return 0;     } do         {             fgets(buf, 50, fp);             printf("%s", buf);                     } while (buf[0] != '\n');                 fclose(fp);

  1. Условие: Даны три слова. Напечатать только те буквы слов, которые есть только в одном из слов.*Повторяющиеся буквы каждого слова рассматриваются*Примерно сделал набросок на примере 2-ух слов, и у меня возник вопрос, правильно ли программа работает, и правильно ли я понимаю условие задачи то, что мне нужно вывести символы, которых нет в других словах? Или как? Скомпилируйте и проверьте. Если можно исправьте.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include #include   void main(void) {     const char str1[]={0};     const char str2[]={0};     int i,j;     printf("Enter 1: ");     scanf("%s",str1);     printf("Enter 2: ");     scanf("%s",str2);   //для 1-ого слова     printf("# 1: ");     for(i=0;i

  1. Компоненты файла f – целые двухзначные (отличные от нуля) числа, причем 10 положительных чисел, 10 отрицательных, и т.д. Получить файл g, в котором записаны сначала 5 положительных чисел, затем 5 отрицательных и т.д. Задача крайне криво сформулирована, но всё же.

  1. Здравствуйте, необходимо найти минимальное среди 10 положительно введенных чисел, используя цикл do while.Уже голову сломал, не представляю как реализовать это именно с помощью do while