Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese di utilizzo intensivo e l'analisi di oltre 50 scatti, l'articolo offre una panoramica approfondita di Nintendo Switch 2. Vengono esaminate le caratteristiche che la definiscono, con un focus sulle nuove funzionalità e un riepilogo dettagliato delle specifiche tecniche che ne determinano le prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-12-2009, 20:31   #1
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
[C] Errore durante compilazione programma

Sto studiando il C da alcune ore,e man mano che vado avanti faccio degli esercizi per ricordarmi meglio il codice ,ma nel caso sotto elencato mi sono bloccato poichè il compilatore mi restituisce un errore;sapreste spiegarmi,per favore,come ultimare bene il codice sotto elencato e magari spiegarmi la motivazione.
La guida che stò studiando è questa :http://www.blacklight.gotdns.org/wik...i_un_programma , proprio nella pagina dove ho trovato questo codice:

Codice:
int i=0;
 
while (i<10)  {
  printf ("Valore di i: %d\n",i);
  i++;
}
Io ho provato a completarlo in diversi modi (naturalmente includendo le librerie etc...) ma senza riuscire a farlo funzionare.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 20:42   #2
BlackAuron
Member
 
Iscritto dal: May 2006
Messaggi: 86
Codice PHP:
#include<stdio.h>
#include<stdlib.h>

int main() {
    
int i 0;

    while (
10) {
        
printf("Valore di i: %d\n"i);
        
i++;
    }
    return 
0;

Il pezzo i sorgente che hai postato è corretto, probabilmente hai commesso qualche errore altrove. Ti ho incollato qua sopra un sorgente che compila senza problemi
BlackAuron è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 21:20   #3
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
grazie il mio errore era quello di omettere le parentesi graffe dopo il main

Ultima modifica di rikkaidd : 15-12-2009 alle 21:28.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 21:24   #4
BlackAuron
Member
 
Iscritto dal: May 2006
Messaggi: 86
... io lo potrei pure controllare, ma tu posta tutto, librerie e main compreso, e di che errore ti da ... se stai sul generico non ne esci fuori
BlackAuron è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 22:00   #5
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
Grazie ho risolto,scusa se approfitto della tua disponibilità ma se io vorrei fare un programmino dove una variabile non è rappresentata solo da un numero o lettera ma bensi dalla parola ciao come dovrei fare?(anche perchè char si limita a 8 bite):
es: il valore della variabile è ciao,
output a video:- salutami
imput :ciao //bene !termina il programma ma nel caso la risposta fosse diversa da ciao si ripete il prinft che scrive a schermo salutami

Penso che scrivere una cosa del genere non abbia significato:
Codice:
#include<stdio.h> 

 main() { 
 char n; 
 while (n!=ciao)  {
  printf ("salutami : ");
  scanf ("%s",&n);
 
  printf ("Numero inserito: %s\n",n);
 }
}

Ultima modifica di rikkaidd : 15-12-2009 alle 22:11.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 22:06   #6
BlackAuron
Member
 
Iscritto dal: May 2006
Messaggi: 86
vai al capitolo stringhe della guida
BlackAuron è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2009, 22:32   #7
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
Ok ho provato questo ma quando metto ciao non chiude il programma
Codice:
#include<stdio.h> 
#include <string.h>

 main() { 
 char d[4];
   while (d!="ciao")  { 
   printf ("salutami : ");
   scanf ("%s",&d);
   printf ("Salutami: %s\d",d);

  } 
    return 0; 
}
io vorrei fare una cosa simile a questo ma con la scritta ciao,ma non ci riesco(usando while)
Codice:
int n; 
 
while (n!=0)  {
  printf ("Inserisci un numero (0 per finire): ");
  scanf ("%d",&n);
 
  printf ("Numero inserito: %d\n",n);
}
ho provato anche così
Codice:
#include<stdio.h> 
#include <string.h>

 main() { 
 char d[4];
   while (d!="ciao")  { 
   printf ("salutami : ");
   scanf ("%s",&"ciao");
   printf ("Salutami: %s\d",d);

  } 
    return 0; 
}

Ultima modifica di rikkaidd : 15-12-2009 alle 23:13.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2009, 00:21   #8
masteryuri
Senior Member
 
L'Avatar di masteryuri
 
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
Come ti è già stato consigliato, devi lavorare sulle stringhe.
Il seguente codice fa ciò che desideri.

Codice:
#include <stdio.h>
#include <string.h>

int main()
{
	char str1[] = "ciao"; /* maniera veloce e comoda per dichiarare una stringa*/
	char str2[10];

	while (strcmp(str1,str2)) /* Compara le due stringhe */
	{
		system("clear"); /* clear per UNIX, cls per microsoft */
		printf("Salutami! ");
		scanf ("%s",str2);
	}

	return 0;
}
Ho utilizzato la funzione strcmp, che compara due stringhe e restituisce zero se sono uguali, un valore più grande di zero se sono disuguali.
La funzione è definita nella libreria string.h, che quindi va inclusa.

Di seguito qualche rimando teorico.
Stringhe
Funzione strcmp

In ogni caso, per qualsiasi dubbio chiedi pure.
masteryuri è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2009, 00:44   #9
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
Grazie, come ho detto prima stò studiando il C da poche ore e non conosco nessun altro linguaggio di programmazione
A pensare che dopo devo passare alla OOP
Pero questo funzionava;infatti una volta scritto ciao e fatto invio il programma si chiudeva...solo perchè andava in errore
Codice:
#include<stdio.h> 
#include <string.h>

 main() { 
 char d[4];
   while (d!="ciao")  { 
   printf ("salutami : ");
   scanf ("%s",&"ciao");
   printf ("Salutami: %s\d",d);

  } 
    return 0; 
}
Sicuramente un libro e mille volte meglio di un manuale in internet, ma sto studiando il c come punto di partenza per riuscire a capirci qualcosa del c++ e del visul basic.
Conosco l'html (questo si impara in due ore per fortuna!) vorrei imparare anche il javascript e il php

Ultima modifica di rikkaidd : 16-12-2009 alle 00:55.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 16-12-2009, 00:46   #10
masteryuri
Senior Member
 
L'Avatar di masteryuri
 
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
Se posso consigliarti un libro, usa IL LINGUAGGIO C di Kernighan - Ritchie
masteryuri è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2009, 21:48   #11
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
Anche se và off-topic,e sperando di non fare incavolare i moderatori,vi chiedo ancora aiuto.. (era meglio che mettevo come titolo :aiuto sono un n00b...)
è proprio vero studiare da una guida internet non è il massimo!
C'è più di una cosa che non sono riuscito a capire se si può fare o meno;
per spiegarmi meglio porterò come esempio un programma scritto su due piedi:
Codice:
#include <stdio.h>

int main () {
int a;
printf ("Scrivi un numero compreso tra 1 e 10: ");
scanf("%d",&a);

if ((a>0) && (a<10))
printf ("bravo");
else{
printf("Idiota scrivi un numero compreso tra 1 e 10: ");
scanf("%d",&a);
if ((a>0) && (a<10))
printf ("bravo");
else
printf("Suicidati ");
}
}
ok ,funziona! ma se al posto della terza possibilità "suicidati", vorrei che ogni volta che il numero messo a imput da tastiera non soddisfa la condizione:
Codice:
 if ((a>0) && (a<10))
si ripetesse sempre il ciclo :
Codice:
else{
printf("Idiota scrivi un numero compreso tra 1 e 10: ");
scanf("%d",&a);
anche per un numero infinito di volte, come dovrei fare?

L'altra cosa che non ho capito è la seguente:
Codice:
#include <stdio.h>

int main () {
int a[] = {2,4,6,7,8,9};
int b;
printf ("Scrivi un numero compreso tra 1 e 10: ");
scanf("%d",&b);
if (b==a){
printf ("a e b sono uguali");
}else
printf("a e b sono diversi");
}
perchè non funziona?

Conosceto qualche sito con esercizi in c che non implichino la conoscenza "ENIGMI E PARADOSSI MATEMATICI" per essere risolti?
No scherzo,cmq qualche esercizio un pò più facile ,basilare...

Ultima modifica di rikkaidd : 17-12-2009 alle 22:01.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2009, 23:35   #12
masteryuri
Senior Member
 
L'Avatar di masteryuri
 
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
Un consiglio... usa l'indentazione per migliorarne la leggibilità del codice.

Poi, per il primo codice non hai che da usare un ciclo iterativo a tua scelta. Io azzarderei un while con una variabile k di controllo.

Codice:
#include <stdio.h>

int main()
{
	int a;
	printf ("Scrivi un numero compreso tra 1 e 10: ");
	
	int k;
	while (k)
	{
		scanf("%d",&a);
		if (a<0 || a>10)
			printf("Idiota, inserisci un numero compreso tra 1 e 10: ");
		else
			printf("Bravo!");
                        break;
	}
	
	return 0;
}
Il secondo ora lo leggo

Ultima modifica di masteryuri : 18-12-2009 alle 00:03.
masteryuri è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2009, 23:42   #13
masteryuri
Senior Member
 
L'Avatar di masteryuri
 
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
Ecco, non è chiaro quello che vuoi fare con il secondo codice.

La variabile a è un puntatore che contiene l'indirizzo del vettore.
Infatti gcc risponde così quando si cerca di compilare:
Quote:
file.c:8: warning: comparison between pointer and integer
Se ti spieghi meglio ti dico come fare...
masteryuri è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2009, 23:44   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da masteryuri Guarda i messaggi
Codice:
#include <stdio.h>
#include <string.h>

int main()
{
	char str1[] = "ciao"; /* maniera veloce e comoda per dichiarare una stringa*/
	char str2[10];

	while (strcmp(str1,str2)) /* Compara le due stringhe */
	{
		system("clear"); /* clear per UNIX, cls per microsoft */
		printf("Salutami! ");
		scanf ("%s",str2);
	}

	return 0;
}
Sarebbe meglio un do - while perché fare una strcmp su un stringa non terminata potrebbe portare a risultati non prevedibili. In questo caso non ci sono problemi perché il buffer allocato è più grande di "ciao", ma se fosse più piccolo potresti ad esempio avere un successo quando in realtà non ci sarebbe.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2009, 23:54   #15
masteryuri
Senior Member
 
L'Avatar di masteryuri
 
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
Puoi mostrarmi?
masteryuri è offline   Rispondi citando il messaggio o parte di esso
Old 17-12-2009, 23:59   #16
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
Quote:
Originariamente inviato da masteryuri Guarda i messaggi
Un consiglio... usa l'indentazione per migliorarne la leggibilità del codice.

Poi, per il primo codice non hai che da usare un ciclo iterativo a tua scelta. Io azzarderei un while con una variabile k di controllo.

Codice:
#include <stdio.h>

int main()
{
	int a;
	printf ("Scrivi un numero compreso tra 1 e 10: ");
	
	int k;
	while (k)
	{
		scanf("%d",&a);
		if (a<0 || a>10)
			printf("Idiota, inserisci un numero compreso tra 1 e 10: ");
		else
			printf("Bravo!");
                        break;
	}
	
	return 0;
}
Il secondo ora lo leggo
per l'identazione che ti devo dire...
sono una appassionato di modding game e riesco a leggere meglio il codice quando è più compatto possibile,e a maggior ragione quando uno spazio in più è uguale ad un errore

Ok ,questo dice bravo però se metti un numero che non soddisfa if il programma va male.

Ultima modifica di rikkaidd : 18-12-2009 alle 01:06.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2009, 00:01   #17
masteryuri
Senior Member
 
L'Avatar di masteryuri
 
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
Beh qual è il problema, ora una struttura logica c'è. Puoi inserire anche queste finezze.
masteryuri è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2009, 00:13   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da masteryuri Guarda i messaggi
Puoi mostrarmi?
In realtà, pensandoci bene, potrebbe essere un problema anche in questo caso.
Mostrartelo è difficile perché dipende da quello che c'è prima nelle locazioni di memoria riservate per il secondo vettore.

Ad esempio:
Codice:
	char str1[] = "ciao"; /* maniera veloce e comoda per dichiarare una stringa*/
	char str2[10];

	while (strcmp(str1,str2)) /* Compara le due stringhe */
	{
           /*qui c'è qualcosa*/
	}
Mettiamo che in str2 ci sia casualmente "ciao" (ricordo che non tutti i compilatori, azzerano o settano ad un valore preciso la memoria allocata staticamente, quello che c'è dipende da quello che c'era stato scritto prima), in quel caso si esce subito dal while senza mai eseguire quello che c'è all'interno.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2009, 00:20   #19
rikkaidd
Member
 
L'Avatar di rikkaidd
 
Iscritto dal: Nov 2008
Messaggi: 230
Avevo chiesto aiuto anche in un altroforum dove Style { HdS619 } mi ha risposto cosi:

Rikkaidd ha scritto:

ok ,funziona! ma se al posto della terza possibilità "suicidati", vorrei che ogni volta che il numero messo a imput da tastiera non soddisfa la condizione:Codice:
Codice:
\* if ((a>0) && (a<10))*/
si ripetesse sempre il ciclo :
Codice:
Codice:
else{ 
printf("Idiota scrivi un numero compreso tra 1 e 10: "); 
scanf("%d",&a);
anche per un numero infinito di volte, come dovrei fare?

risposta:

Codice:
 

#include <stdio.h> 

int main (void) 
{ 
 int j; 
  
 do { 
   printf ("Inserisci un numero tra 1 e 10: "); 
   scanf ("%d", &j); 
 } while ( j < 1 || j > 10 ); 
  
 printf ("Bravo.\n"); 
  
 return 0; 
}

Rikkaidd ha scritto:

L'altra cosa che non ho capito è la seguente:
Codice:
Codice:
#include <stdio.h> 

int main () { 
int a[] = {2,4,6,7,8,9}; 
int b; 
printf ("Scrivi un numero compreso tra 1 e 10: "); 
scanf("%d",&b); 
if (b==a){ 
printf ("a e b sono uguali"); 
}else 
printf("a e b sono diversi"); 
}
perchè non funziona?

Conoscetre qualche sito con esercizi in c che non implichino la conoscenza di "ENIGMI E PARADOSSI MATEMATICI" per essere risolti?

risposta:

non puoi confrontare un int con un int * ( int array[] equivale a int * ) quindi dovresti fare un ciclo che confronta ogni elemento di a con b

LA COSA STRANA E' CHE HO CAPITO!!!!

Ultima modifica di rikkaidd : 18-12-2009 alle 05:03.
rikkaidd è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
vivo X200 FE: il top di gamma si è fatto tascabile? vivo X200 FE: il top di gamma si è fatto ...
Arriva iOS 26 ma Apple pensa già ...
Il mini drone DJI che vola da solo e reg...
Un programmatore polacco ha battuto l'IA...
Energica risorge: investitori di Singapo...
Galaxy Z Fold 8, ecco come Samsung risol...
Scendono i prezzi dei Vivobook (c'&egrav...
Cyberpunk 2077 su Mac Apple Silicon: un ...
Corning dice addio agli accordi esclusiv...
Pazzesco Asus TUF F16 a 720€: Core i7, R...
NVIDIA H20 torna in Cina: un errore stra...
CUDA e RISC-V fanno l'amore: NVIDIA abbr...
Delta Air Lines, fine delle tariffe fiss...
CPU Zen 6 e una super GPU: ecco il chip ...
Intel chiude Clear Linux: fine per la di...
2 minuti: il tempo per scorrere le 25 of...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:55.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v