Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2014, 22:23   #1
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию Массивы и строки в С

Если кому не трудно,помогите пожалуйста.Начал изучать только С++,а задачу требуют решить в С,вроде написал,да вылазит толпа ошибок...
А вот собс-но и задача:Написать программу , которая вводит с клавиатуры массив из N вещественных чисел , создает два новых массива , в один из которых помещает положительные элементы массива , а в другой отрицательные и нулевые элементы,и выводит результат пользователю ; затем вводит с клавиатуры строку длиной не более 200 символов , ищет в ней самое короткое слово и выводит его пользователю.
Alexandr67 вне форума Ответить с цитированием
Старый 22.03.2014, 10:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы бы лучше выложили свой (пусть и неудачный) код.
Во-первых, было бы видно, что Вы реально что-то пытаетесь решить, а не клянчите готовенькое (нет жажды халявы...)

во-вторых, по вашему коду знатокам C легче подсказать, где Вы ошиблись.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.03.2014, 22:30   #3
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы бы лучше выложили свой (пусть и неудачный) код.
Во-первых, было бы видно, что Вы реально что-то пытаетесь решить, а не клянчите готовенькое (нет жажды халявы...)

во-вторых, по вашему коду знатокам C легче подсказать, где Вы ошиблись.
Собс-но код.Visual выдает 14 ошибок компиляции...
Код:
#include <stdio.h>
#include <string.h>
#include <locale.h>
 
int main(int argc, char *argv[])
{
  setlocale(LC_ALL, "RU");
  int n, count = 0;
  printf("Введите размер массива\n");
  scanf("%d", &n);
  double arr[n];
  printf("Введите массив\n");
  for(int i=0; i<n; ++i){
    scanf("%lf", &arr[i]);
    if(arr[i] > 0){
      ++count;}
  }
  double positive[count];
  double negative[n - count];
  int pos = 0, neg = 0;
  for(int i=0; i<n; ++i){
    if(arr[i] > 0){
      positive[pos] = arr[i];
      ++pos;}
    else{
      negative[neg] = arr[i];
      ++neg;}
  }
  printf("\nПоложительный массив\n");
  for(int i=0; i<pos; ++i){
    printf("%.3lf ", positive[i]);}
  printf("\nНе положительный массив\n");
  for(int i=0; i<neg; ++i){
    printf("%.3lf ", negative[i]);}
 
  char str[201];
  char *minWord;
  puts("\nВведите строку");
  fflush(stdin);
  gets(str);
  char *ptr = strtok(str, " \t");
  int minLength = 200;
  while(ptr){
    int length = strlen(ptr);
    if(minLength > length){
      minLength = length;
      minWord = ptr;}
    ptr = strtok(NULL, " \t");}
  puts("Самое короткое слово в строке");
  puts(minWord);
  return 0;
}
Alexandr67 вне форума Ответить с цитированием
Старый 23.03.2014, 22:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
14 ошибок компиляции...
Какая жаль...
Ошибки угадывать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.03.2014, 18:22   #5
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Какая жаль...
Ошибки угадывать?
Вовсе нет)
Изображения
Тип файла: jpg iUcwggpL41E.jpg (128.4 Кб, 112 просмотров)
Alexandr67 вне форума Ответить с цитированием
Старый 24.03.2014, 22:09   #6
niwssg
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 35
По умолчанию

У меня работает. Code::Blocks GCC

Код:
#include <stdio.h>
#include <string.h>
#include <locale.h>

int main(void)
{
  int i;
  setlocale(LC_ALL, "RU");
  int n, count = 0;
  printf("array size\n");
  scanf("%d", &n);
  double arr[n];
  printf("enter array\n");
  for(i=0; i<n; ++i){
    scanf("%lf", &arr[i]);
    if(arr[i] > 0){
      ++count;}
  }
  double positive[count];
  double negative[n - count];
  int pos = 0, neg = 0;
  for(i=0; i<n; ++i){
    if(arr[i] > 0){
      positive[pos] = arr[i];
      ++pos;}
    else{
      negative[neg] = arr[i];
      ++neg;}
  }
  printf("\npositive array\n");
  for(i=0; i<pos; ++i){
    printf("%.3lf ", positive[i]);}
  printf("\nnegative array\n");
  for(i=0; i<neg; ++i){
    printf("%.3lf ", negative[i]);}

  char str[201];
  char *minWord;
  puts("\enter string");
  fflush(stdin);
  gets(str);
  char *ptr = strtok(str, " \t");
  int minLength = 200;
  while(ptr){
    int length = strlen(ptr);
    if(minLength > length){
      minLength = length;
      minWord = ptr;}
    ptr = strtok(NULL, " \t");}
  puts("shortest word in string");
  puts(minWord);
  return 0;
}
niwssg вне форума Ответить с цитированием
Старый 24.03.2014, 22:13   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Попробуй написать scanf_s() раз на scanf() ругатся.
Это по первой ошибке. Вторая: нужен const int n. Не любит VS такие описания переменки.
Ну а дальше уже компилируй опять.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.03.2014, 22:46   #8
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Хм... Попробуй написать scanf_s() раз на scanf() ругатся.
Это по первой ошибке. Вторая: нужен const int n. Не любит VS такие описания переменки.
Ну а дальше уже компилируй опять.
Эмм....Что-то мне подсказывает,что я окончательно запутался...
Код:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <locale.h>
#define N 100

int main(int argc, char *argv[])
{
	setlocale(LC_ALL, "RU");
	int n, count = 0;
	//printf("Введите размер массива\n");
	//scanf_s("%d", &n);
	double arr[N];
	printf("Введите массив\n");
	for (int i = 0; i<N; ++i){
		scanf_s("%lf", &arr[i]);
		if (arr[i] > 0){
			++count;
		}
	}
	double positive[N];
	double negative[N];
	int pos = 0, neg = 0;
	for (int i = 0; i<n; ++i){
		if (arr[i] > 0){
			positive[pos] = arr[i];
			++pos;
		}
		else{
			negative[neg] = arr[i];
			++neg;
		}
	}
	printf("\nПоложительный массив\n");
	for (int i = 0; i<pos; ++i){
		printf("%.3lf ", positive[i]);
	}
	printf("\nНе положительный массив\n");
	for (int i = 0; i<neg; ++i){
		printf("%.3lf ", negative[i]);
	}

	char str[201];
	char *minWord;
	puts("\nВведите строку");
	fflush(stdin);
	gets_s(str);
	char *ptr = strtok_s(str, (str, " \t"));
		str; int minLength = 200;
	while (ptr){
		int length = strlen(ptr);
		if (minLength > length){
			minLength = length;
			minWord = ptr;
		}
		ptr = strtok(NULL, " \t");
	}
	puts("Самое короткое слово в строке");
	puts(minWord);
	return 0;
}
Изображения
Тип файла: jpg Безымянный.jpg (103.2 Кб, 114 просмотров)
Alexandr67 вне форума Ответить с цитированием
Старый 24.03.2014, 23:47   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а спецификацию почитать?
http://msdn.microsoft.com/en-us/library/ftsafwz3.aspx
Там три параметра.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2014, 09:36   #10
Alexandr67
Пользователь
 
Регистрация: 22.11.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну а спецификацию почитать?
http://msdn.microsoft.com/en-us/library/ftsafwz3.aspx
Там три параметра.
Почитал в соседней теме (http://www.programmersforum.ru/showt...246203),мол,не ставь галочку при создании проекта,не поставил,толку нет...
Alexandr67 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерные массивы, двумерные массивы, строки Sand093 C++ Builder 11 20.05.2012 21:48
Двумерные массивы(матрица) 2)Строковые массивы(строки): 3)Структуры nuriyat Помощь студентам 1 21.01.2012 16:16