(C) Najmniejsza odleglosc od zera

0
  1. W pliku standardowym zapisanych jest 20 liczb całkowitych. Znajdź tę, której odległość od 0 (zera) jest najmniejsza.

Mam takie coś. Kombinuje z zamiana na na postac bezwzgledna, ale i tak nie rusza. Jesli ktos by mogl podrzucic jakas wskazowke, bylbym wdzieczny.

#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,x,y;                 
    int odl[20];
    int tablica[20];      
                          
    
    for(i=0 ; i<20 ; i++)
    {
         printf("Podaj %2d element tanlicy: ", i+1);
         scanf ("%d", &tablica[i]);
    }

    printf("\n");          
    printf("Tablica zostala wypelniona, teraz nastapi jej wyswietlenie\n\n");

    printf("\n");         
  
    for(i=0 ; i<20 ; i++)   
    {
         printf("%3d ", tablica[i]);
    }
	
	x=tablica[0];
	if (x<=0) odl[0]==0-x;
	else odl[0]==0+x;
	for(i=1;i<20;i++)
{x=tablica[i];
	
   	if (x<=0) odl[i]==0-x;
	else odl[i]==0+x;}
	

	y=odl[0];
	for(i=1;i<20;i++)
   	if(odl[i]<y)//
     	y=odl[i];
	
	
	printf("\n");
	printf("%d\n",odl[i]);
	
   return x;
 
  
   system("pause"); 
   getch();    
   
   return 0;
}

0

Co to za cuda. Najbliżej jest ta, której moduł jest najmniejszy. Jeden for, jeden if. Tablica jest niepotrzebna. Funkcję abs masz w math.h.

1

wersja bez użycia funkcji abs():

#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i,x,y;                 
    int tablica[20];
    int minval, absmin;
 
    for(i=0 ; i<20 ; i++)
    {
         printf("Podaj %2d element tanlicy: ", i+1);
         scanf ("%d", &tablica[i]);
    }
 
    printf("\n");          
    printf("Tablica zostala wypelniona, teraz nastapi jej wyswietlenie\n\n");
 
    printf("\n");         
 
    for(i=0 ; i<20 ; i++)   
    {
         printf("%3d ", tablica[i]);
    }

    printf("\n");

	minval = tablica[0];
	
	if (minval < 0)
		absmin = -minval;
	else
		absmin = minval;
		
	for (i=1; i<20; i++)
	{
		int absi;
		if (tablica[i] < 0)
			absi = -tablica[i];
		else
			absi = tablica[i];
		if (absmin > absi)
		{
			absmin = absi;
			minval = tablica[i];
		}
	}
	
	printf("%d\n", minval);
	
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1