Модератор:  Модераторы разделов 
	
	
			
	
			
		
	
		
		
		
			
				
																			
								_Gleb_  
									
		Сообщения:  467ОС:  Kubuntu 12.04 LTS 
		
									
					
								
						
									Сообщение  _Gleb_  24.12.2007 22:38 
			
			
			
			
			Проверка показывает, что во время исполнения вот этох семи строк кода:
Код: Выделить всё 
for (i1=1; table[i1][0]!=0; i1++) {
          table[i1][2]=0;
              while ((n2%table[i1][0]==0) && (table[i1][2]<table[i1][1])) {
                table[i1][2]++;
                n2=n2/table[i1][0];
              }
        }
значения элементов в нулевой строке table[Х][0] забиваются какой-то ерундой. До этого момента проверка
Код: Выделить всё 
for (i1=1; table[i1][0]!=0; i1++)
printf("%d\n", table[i1][0]);
выдаёт что-то совсем не правильное. Почему? Ведь эс этими элементами массива ничего не должно было произойти?
 
			
		 
				
		
		 
	 
		
		
		
		
			
				
								dey  
									
		Сообщения:  335ОС:  OpenSuse 11.1 
		
									
					
								
						
									Сообщение  dey  24.12.2007 22:44 
			
			
			
			
			_Gleb_  писал(а): ↑ 24.12.2007 22:38
Проверка показывает, что во время исполнения вот этох семи строк кода:
Код: Выделить всё 
for (i1=1; table[i1][0]!=0; i1++) {
          table[i1][2]=0;
              while ((n2%table[i1][0]==0) && (table[i1][2]<table[i1][1])) {
                table[i1][2]++;
                n2=n2/table[i1][0];
              }
        }
значения элементов в нулевой строке table[Х][0] забиваются какой-то ерундой. До этого момента проверка
Код: Выделить всё 
for (i1=1; table[i1][0]!=0; i1++)
printf("%d\n", table[i1][0]);
выдаёт что-то совсем не правильное. Почему? Ведь эс этими элементами массива ничего не должно было произойти?
Непонятно в каком месте кода инициализируются эти элементы массива
В сознательных действиях должен присутствовать существенный неалгоритмический  компонент.
			
			
			 
			
		 
				
		
		 
	 
		
		
		
		
			
				
																			
								_Gleb_  
									
		Сообщения:  467ОС:  Kubuntu 12.04 LTS 
		
									
					
								
						
									Сообщение  _Gleb_  24.12.2007 22:45 
			
			
			
			
			А они выше инициализируются. Просто я поставил проверку до и после этого куска, и она выдаёт, что внутри с ними что-то происходит.
			
			
									
						
										
			
			 
			
		 
				
		
		 
	 
		
		
		
		
			
				
								Фантом  
									
		Сообщения:  461ОС:  openSUSE 
		
									
					
								
						
									Сообщение  Фантом  26.12.2007 15:53 
			
			
			
			
			_Gleb_  писал(а): ↑ 24.12.2007 22:45
А они выше инициализируются. Просто я поставил проверку до и после этого куска, и она выдаёт, что внутри с ними что-то происходит.
По этому куску все равно ничего не понять. Давайте листинг всей функции целиком.
 
			
		 
				
		
		 
	 
		
		
		
		
			
				
								Shura  
									
		Сообщения:  1537Статус:  Оказывается и без KDE есть жизньОС:  FreeBSD 8.0-RC2 
		
									
					
								
						
									Сообщение  Shura  26.12.2007 18:10 
			
			
			
			
			for (i1=1; table[i1][0]!=0; i1++)
Вот это место очень опасное - нет гарантии, что i1 не выйдет за пределы массива. И даже более того - выйдет (ведь за пределами массива врядли будут нули).
Rock'n'roll мертв © БГ
			
			
			 
			
		 
				
		
		 
	 
		
		
		
		
			
				
																			
								_Gleb_  
									
		Сообщения:  467ОС:  Kubuntu 12.04 LTS 
		
									
					
								
						
									Сообщение  _Gleb_  27.12.2007 13:25 
			
			
			
			
			Дело было в неправильной инициализации массива.