Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > не вижу баг


Автор: betal 10.7.2008, 00:52
В общем чегото засиделся и не могу увидеть в чем ошибка. Ктонибудь подтолкните на путь истенный
Программа должна убирать лишние элементы массива. В столбце должно оставаться только одна "1"
Код

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include<conio.h>
#include<stdio.h>

//#define n 10

int main(int argc, char* argv[])
{
int j=0,i=0,jj=0;
 int *M;               //âûäåëÿåì ïàìÿòü ïîä ìàññèâ øåñòåðåíîê
  
 const int n=10;          //èçíà÷àëüíîå êîëè÷åñòâî øåñòåðåíîê
/*int C[100];
  FILE *f;
  f=fopen("Input.txt","r");
if (f!=NULL)
    do 
    {
        fscanf(f,"%d",&C[jj]);
        jj++;
    }
    while (!feof(f));
else{

    printf("Fatal error: fail HE BUL NAUDEN!!!!\n");
    return(0);

}
fclose(f); */
  jj=0;
  int S[10][10]={{0,1,1,1,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,1,0,0,0,0,0},{0,0,0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,1,0,1,1,0},{0,0,0,0,0,0,0,0,1,0},{0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0}};
   for (i=0;i<10;i++)       { printf(" \n ");
for (j=0;j<10;j++)
  { //S[i][j]=C[jj];
  jj++;
  printf(" %d ",S[i][j]);}}
  printf(" \n ");


 M = new int [n];         // ñîçäàåì ìàññèâ øåñòåðåíîê
  int k=0;
 int z0=0,z1=0;            // êîë. øåñòåðåíîê âðàùàþùèõñÿ ïî ÷àñ. ñòðåëêå è â îáðàòíóþ
  int z=0;
    printf("---------------------------\n");
     printf("| 0 - po chasovoy storone |\n");
     printf("| 1 - protiv chasovoy     |\n");
  printf("---------------------------\n\n");
 //////////////////////////////////////



int temp = 0;
 for (i=0;i<10;i++){ M[i]=0;temp = 0;
for ( j=0;j<10;j++)
        {  if(S[i][j]==1)
               {
                    if(M[i]==0)
                        {
                        M[i]++;
                        }
                    else
                        {
                          if((S[i][j]==1)&&(temp!=0))
                          {
                           printf("Ydalena shesterenka N = %d \n",j);

                           S[temp][j]=0;
                           k++;
                          }
                                 else
                          {temp=i;
                          }
                        }

                      }
               else {;}

        }
    }

     for (i=0;i<10;i++)       { printf(" \n ");
for (j=0;j<10;j++)
  {

  printf(" %d ",S[i][j]);}}
  printf(" \n ");
  //////////////////////////////////////



 printf("Bulo ydaleno  shesterenok: %d \n",k);

 printf("V massive ostalos %d shesterenok \n",10-k);

       getch();
       delete []M;    // óäàÿëåì ìàññèâ øåñòåðåíîê
       return 0;

}
//---------------------------------------------------------------------------

Чегото я затупил и не вижу в упор де я теряю значение. Подскажите свежим взглядом...

Автор: Alek86 10.7.2008, 09:43
пройдись дебаггером

Автор: Torsten 10.7.2008, 09:52
Цитата
Программа должна убирать лишние элементы массива. В столбце должно оставаться только одна "1"

Опиши задачу более подробно - особенно входные данные. Не очень понятно, почему должно оставатся только одна "1" (в смысле в таблице в каждом столбце должна быть только одна единица, а все остальные элементы равны нулю ?) и почему если элемент равен 0, то он икрементируется.
Код

 if(M[i]==0)
                        {
                        M[i]++;
                        }

Автор: betal 10.7.2008, 10:59
всем спасибо!
Немного поспал под утро и все заработало! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)