Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Си] в чём ошибка и как её исправить? 
:(
    Опции темы
romy4
Дата 28.4.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.4.2008

Репутация: нет
Всего: нет



Сделал программку в Си,не правильно работает... В чем ошибка? 

Условие : программа считывает ряд чисел и одинаковые числа,стоящие рядом, сжимает до одного. Например : 111312252 -> 131252 
п.с.: ряд чисел может быть как положительным,так и отрицательным. Функция проверяет написаны ли числа или какие-то другие символы. 
неправильно выводит ответ,программа работает ровно наоборот: вводишь числа,выбивает,что это не числа. 
Код



#include <stdio.h>
#include "funkcija1.h"

int main()
{
  char string[256];
  printf("vvedite riad cisel : \n");
  scanf("%s", string);
  printf("%c", *string);

  int i=1;
  if(*string=='-') 
    printf("%c", string[i]);
    i++; 
    
  for(i=1; string[i]; i++) 
    if(string[i] != string[i-1])
    printf("%c", string[i]);  
  system("pause");
  return 0;
}

int funkcija1 (char strin[256])
{   
  int  i, ilgis;

  ilgis=strlen(strin);
  for (i=0; i<strin[i]; i++) 
    if ((strin[i]<'0')||(strin[i]>'9')) 
      return 0;
    else
      printf("eto ne cisla!\n");
  return 0;
}



 funkcija1.h
Код

int funkcija1 (char strin[256]);

 smile  smile 
Большое спасибо за помощь!!!
  
PM MAIL   Вверх
warmonger_
Дата 28.4.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Цитата

[Си] в чём ошибка и как её исправить?

читать книжки.
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
romy4
Дата 28.4.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.4.2008

Репутация: нет
Всего: нет



 Я  читал...раз хоть что то написал... 
PM MAIL   Вверх
source777
Дата 28.4.2008, 23:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(romy4 @  28.4.2008,  23:10 Найти цитируемый пост)
 Я  читал...раз хоть что то написал...  
Мало значит читал, вот, например, что делает этот код:
Цитата

int funkcija1 (char strin[256])
{   
  int  i, ilgis;
  ilgis=strlen(strin);
  for (i=0; i<strin[i]; i++) 
    if ((strin[i]<'0')||(strin[i]>'9')) 
      return 0;
    else
      printf("eto ne cisla!\n");
  return 0;
}

расскажи, раз уж ты его написал...

Особенно интересно будет послушать про условие if ((strin[i]<'0')||(strin[i]>'9')) которое описывает символы не являющиеся цифрами, но приэтом  printf("eto ne cisla!\n"); вызывается по else...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
warmonger_
Дата 28.4.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Код

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
  char string[256];
  printf("vvedite riad cisel : \n");
  scanf("%s", string);
  int leng=strlen(string);
  string[leng]='\n';
  int i;
  char ch_t=string[0];
  for (i=1; i<=leng; ++i)
  {
      if (isdigit(ch_t) && string[i]!=ch_t)
          printf("%c", ch_t);
      ch_t=string[i];
  }
  printf("\n");
  return 0;
}

--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
anatox91
Дата 29.4.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 1
Всего: 13



вот это у меня абсолютно нормально работает
Код

#include <iostream>
using std::cout;
using std::cin;

bool check(char str[300]) {
    for(int i=0; str[i]; i++) {
            if(str[i] < '0' || str[i] > '9') return false;
            }
    return true;
}
   
int main() {
    char string[300];
    cout << "Vvedite stroku s chislami:" << "\n";
    cin >> string;
    cin.ignore();
    
    if(check(string)) {
                       char output[300];
                       int j=0;
                       for(int i=0; string[i]; i++) {
                               if(string[i] != string[i-1]) {
                                             output[j] = string[i];
                                             j++;
                                             }
                               }
                       output[j] = '\0';
                       cout << output;
                       }
    else {
         cout << "Vy vveli drugie simvoly.";
         }
    cin.get();
    return 0;
}



--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.