• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Znak liczby (pierwsze funkcje)

VPS Starter Arubacloud
0 głosów
609 wizyt
pytanie zadane 1 grudnia 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
edycja 1 grudnia 2019 przez Hubertius

Cześć

Akurat jestem w trakcie nauki i napotkałem pewien problem... wyskoczył wam może kiedyś komunikat w takim stylu?

control reaches end of non-void function

Jak coś daję jeszcze opis zadania, które robiłem. Może coś przegapiłem.

"

Napisz funkcję o prototypie

int sign(int value)

Ma ona zwracać wartość -1 w przypadku liczby ujemnej, 1 w przypadku dodatniej lub 0. Napisz program, który zapyta użytkownika o wprowadzenie liczby, a następnie wywoła funkcję sign, przekazując wprowadzoną liczbę jako argument i wyświetli komunikat negative, zero lub positive w zależności od wyniku tej funkcji. W przypadku wprowadzenia przez użytkownika błędnych danych program powinien wyświetlić komunikat Incorrect input i zakończyć działanie z kodem błędu 1.

Uwaga W programie nie wolno używać instrukcji if.

Przykładowe wejście:

Podaj liczbe: -15

Przykładowe wyjście:

negative

"

A tutaj jeszcze swój kod:

"

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int sign(int value);

int main(int argc, char *argv[]) 
{
    int value;
    int kontrola;
    printf("Podaj liczbe:");
    kontrola=scanf("%d",&value);
    switch(kontrola)
    {
        case 0:
            printf("Incorrect input");
            return 1;
        case 1:
            switch(value)
            {
               case 0:
                    printf("zero");
               break;
               default:
                   switch(sign(value))
                   {
                       case 1:
                           printf("positive");
                       break;
                       case -1:
                           printf("negative");
                       break;                       
                }
            }
        
    }
    return 0;
}
int sign(int value)
{ 
    int A;
    A=value<0;
    switch(A)
    {
        case 1:
        return -1;
        case 0:
        return 1;
    }
    
}


"

Poradzicie?  :/

komentarz 2 grudnia 2019 przez niezalogowany
int sign(int value)
{  
  if( value<0) return -1;
  else if( value>0) return 1;
  else return 0;
}

raczej tak bym to widział. Da się zrobić na case ale po co?

komentarz 2 grudnia 2019 przez Hubertius Bywalec (2,970 p.)

No właśnie tak bym chciał, ale nie mogę:"Uwaga W programie nie wolno używać instrukcji if.".

:P

komentarz 2 grudnia 2019 przez niezalogowany
edycja 2 grudnia 2019
int sign(int value){ 
    swich((value>0)){
      
          case 1: return 1;
          default :
             swich(value){

              case 0: 
                   return 0;
              default :
                   return -1
         }
    }
}

to powinno być dobrze ale chyba to zadanie na bity

edit:: jeśli chodzi o samo słówko if to:

int sign(int value){ 
return (value<0)?-1 :(value>1); //się spieszyłem i nie przemyslałem
}

 

1 odpowiedź

0 głosów
odpowiedź 2 grudnia 2019 przez niezalogowany
   int value;
    printf("Podaj liczbe:");
    if (scanf("%d",&value))
    switch(sign(value))
    {
          case 0:
                    printf("zero");
               break;
          case 1:
                    printf("positive");
                 break;
          case -1:
                    printf("negative");
                 break;                             
    }
 else printf("Incorrect input");

i tak

komentarz 2 grudnia 2019 przez Hubertius Bywalec (2,970 p.)

Siema, dzięki za pomoc. Zmodyfikowałem main-a:

	int value;
	int kontrola;
	printf("Podaj liczbe:");
	kontrola=scanf("%d",&value);
	switch(kontrola)
	{
		case 0:
			printf("Incorrect input");
		    return 1;
		case 1:
			switch(sign(value))
			{
		      case -1:
			     printf("negative");
			  break;
			  case 0:
			  	 printf("zero");
			  break;
			  case 1:
			  	printf("positive");
			  break;
			  	
			}
	}
	return 0;		
}

I funkcję:

int sign(int value)
{ 

	switch(value<0)
	{
		case 1:
			return -1;
		default:
			switch(value)
			{
				case 0:
					return 0;
				default:
					return 1;
			}
	}
	
}

Zastanawiam się o co chodziło, że jednak wcześniej się czepiało z tym błędem. Notabene kod nie uległ wielkiej zmianie, wykonuje to samo co wykonywał wcześniej.  :/

komentarz 2 grudnia 2019 przez niezalogowany
edycja 2 grudnia 2019
to mi jakoś podejrzanie wygląda  A=value<0; nie wiem jak to jest z kolejnością operatorów

bool A=(value<0); to powinno zadziałać ale masz tylko 1 i -1 a zero nie uwzględnione dopiero w głównym kodzie.

Podobne pytania

0 głosów
0 odpowiedzi 1,101 wizyt
pytanie zadane 1 listopada 2019 w C i C++ przez Hubertius Bywalec (2,970 p.)
+1 głos
1 odpowiedź 699 wizyt
pytanie zadane 9 lutego 2022 w C i C++ przez Dynamic Bywalec (2,910 p.)
0 głosów
3 odpowiedzi 201 wizyt
pytanie zadane 13 grudnia 2019 w C i C++ przez amtrax Dyskutant (9,630 p.)

93,020 zapytań

141,985 odpowiedzi

321,287 komentarzy

62,366 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...